Download presentation
Presentation is loading. Please wait.
1
Interfacing Spatial Statistics sofware and GIS: a case study
2
TerraLib: Open source GIS library Data management All of data (spatial + attributes) is in database Functions Spatial statistics, Image Processing, Map Algebra Innovation Based on state-of-the-art techniques Same timing as similar commercial products Web-based co-operative development http://www.terralib.org
3
Operational Vision of TerraLib TerraLib API for Spatial Operations Oracle Spatial Access MySQL Postgre SQL DBMS Geographic Application Spatial Operations Spatial Operations TerraLib MapObjects + ArcSDE + cell spaces + spatio-temporal models
4
TerraLib applications Cadastral Mapping Improving urban management of large Brazilian cities Public Health Spatial statistical tools for epidemiology and health services Social Exclusion Indicators of social exclusion in inner- city areas Land-use change modelling Spatio-temporal models of deforestation in Amazonia Emergency action planning Oil refineries and pipelines (Petrobras)
5
TerraLib Structure Visualization Controls Functions Spatio-Temporal Data Structures DBMS File and DBMS Access External Files I/O Drivers Java Interface COM Interface OGIS Services kernel C++ Interface
6
TerraView TerraLib client Connects to DBMS Oracle, PostGIS, MySQL and SQLServer Visualization with ‘views’ and ‘themes’ Images, Grids, vectors and tables Brushing between graphics and maps Analysis Geocoding, ESDA, Clustering (more to come) I/O SHP, MIF, and SPRING vectors TIFF and GEOTIFF rasters
7
Creating a MySQL spatial database in TerraView File...Open Database menu
8
Importing GIS files File...Import data Select the rio_inf_mort.shp (Rio infant mortality data) Use OBJET_ID_1 as the column Use Projection... Lat/Long and Datum SAD69
9
Databases, layers, views and themes A database has many layers This is a storage concept Visualization is based on views and themes A view is a set of spatial objects from a layer A theme is a way to display these objects
10
Changing the legend of a theme Theme...Change legend Change the legend to display the NEO_RATE Quantiles Five slices
11
Resulting TerraView interface
12
Producing a scatterplot Theme...Graphic Parameters Selection a DISPERSION graphic X – TOTBIRTH Y – NEO_RATE
13
Brushing Operation...TileWindows Shows both graphics and map Brush between the two and the table
14
R – TerraLib integration Strong coupling mechanism
15
R – TerraLib integration Enables R to access a TerraLib database Results in R are incorporated in a GIS database directly Data is analysed in R using packages such as gstat or geoR Results are visualized in TerraView Integration is performed by the aRT API
16
aRT: API R-TerraLib aRT is an R package that provides the integration between the software R and the GIS classes TerraLib. Developed by UFPR, Brazil http://www.est.ufpr.br/aRT/
17
aRT: API R-TerraLib Classes to manipulate data and functions in TerraLib aRT Enables connection to the DBMS for database administration aRTdb Creation and access to a database aRTlayer Enables manipulation of layers in aRT aRTtheme Enables visualização of themes in TerraView
18
Integration R - TerraLib R graphics TerraView map (Neto et al., 2005)
19
R-TerraLib integration: example 1 Load the geoR and arT packages into R manually geoR is a library for advanced geostatistics (also developed by Paulo Ribeiro, UFPR) Get the geoR and arT packages from the course homepage Expand the zip files and copy them to the directory C:\Program Files\R\rw2011\library
20
R-TerraLib integration: example 1 ## ## loading packages ## require(geoR) require(aRT) ## ## Exemple 1: data for parana state ## data(parana) points(parana, bor=borders)
21
A new type: geodata > class (parana) [1] "geodata" > parana $coords east north [1,] 402.9529 164.52841 [2,] 501.7049 428.77100 [3,] 556.3262 445.27065 [4,] 573.4043 447.04177 [5,] 702.4228 272.29590 [6,] 668.5442 261.67070 [7,] 435.8477 286.54044 [8,] 434.0125 317.90506 [9,] 432.4622 288.37001
22
A new type: geodata $data [1] 306.09 200.88 167.07 162.77 163.57 178.61 301.54 [8] 282.07 319.12 244.67 233.31 224.46 206.12 248.99 [15] 237.87 222.87 263.10 236.91 247.01 240.58 304.28 [22] 351.73 277.92 323.08 253.32 315.33 379.94 197.09 [29] 199.91 167.00 182.88 197.10 257.50 205.16 224.07 [36] 212.50 242.08 247.79 187.27 222.54 313.60 269.92 [43] 321.69 208.89 238.62 248.76 193.48 240.48 265.56 [50] 302.13 335.41 330.87 329.49 262.81 365.88 359.08 [57] 344.59 366.10 201.84 218.27 200.38 229.40 235.07 [64] 236.25 228.82 258.12 232.17 248.17 240.66 184.59 [71] 165.46 320.31 232.80 266.27 301.10 244.78 248.57
23
A new type: geodata $borders east north [1,] 670.2049 111.7610 [2,] 663.7187 107.0510 [3,] 656.0667 105.2420 [4,] 649.9714 100.7915 [5,] 642.6346 97.9930 [6,] 635.2717 101.1545 [7,] 628.7421 105.5405 [8,] 622.7559 110.7495 [9,] 617.2708 116.3970 [10,] 610.4570 120.5795 [11,] 604.4217 119.6670 [12,] 600.2620 121.8980 [13,] 592.6210 119.9675
24
A new type: geodata $loci.paper [,1] [,2] [1,] 300.336 484.453 [2,] 647.755 317.463 [3,] 361.764 438.781 [4,] 410.100 260.373
25
R-TerraLib integration: example 1 ## ## connection to MySQL ## > con <- openConn(user=“gilberto") > con Object of class aRTconn DBMS: "MySQL" User: "gilberto" Password: "" Port: 3306 Host: "localhost"
26
Cleaning the database If the database exists, clean it > showDbs(con) [1] "ifgi" "intro" "mysql" "parana" "test" > if(any(showDbs(con)=="parana")) deleteDb(con, "parana", force=T) Deleting database 'parana'... yes
27
Creating a new database ## creating a new database > pr = createDb(con, "parana") Connecting with database 'parana'... no Creating database 'parana'... yes Creating conceptual model of database 'parana'... yes Loading layer set of database 'parana'... yes Loading view set of database 'parana'... yes
28
Creating a layer in the database ## ## Creating a layer to hold the data ## l_data <- createLayer(pr, "data") Building projection to layer 'data'... yes Creating layer 'data'... yes
29
Loading points into the database ## loading points > artcoords <-.gr2aRTpoints(parana) # adding points to a layer > addPoints(l_data, artcoords) Converting points to TerraLib format... yes Adding 143 points to layer 'data'... yes Reloading tables of layer 'data'... yes # adding a table to the layer > t_data = createTable(l_data, "t_data",gen=T) Creating static table 't_data' on layer 'data'... yes Creating link ids... yes
30
Plotting the data > plot(l_data)
31
Inserting attributes on the GIS table > artdata <- data.frame(.gr2aRTattributes(parana)) > > artdata[1:5,] id data 1 1 306.09 2 2 200.88 3 3 167.07 4 4 162.77 5 5 163.57 > > names(artdata) [1] "id" "data" > createColumn(t_data, "data") Checking for column 'data' in table 't_data'... no Creating column 'data' in table 't_data'... yes > updateColumns(t_data, artdata) Converting 2 attributes to TerraLib format... yes Converting 143 rows to TerraLib format... yes Updating columns of table 't_dados'... yes
32
Creating views and themes for TerraView ## criando vistas e temas automaticas para o TV (opcional) > th_data <- createTheme(l_data, “stations", view = "view") Checking for theme ‘stations' in layer 'parana'... no Creating theme ‘stations' on layer 'dados'... yes Checking for view 'view' in database 'parana'... no Creating view 'view'... yes Inserting view 'view' in database 'parana'... yes Checking tables of theme ‘stations'... yes Saving theme ‘stations'... yes Building collection of theme ‘stations'... yes > setVisual(tema_dados, visualPoints(pch=22, color="black", size=5))
33
Creating a layer to store borders > artpols <-.gr2aRTpolygons(parana) > > l_pol<-createLayer(pr, “borders") Building projection to layer ‘borders'... yes Creating layer ‘borders'... yes > addPolygons(l_pol, artpols) Converting polygons to TerraLib format... yes Adding 1 polygons to layer ‘borders'... yes Reloading tables of layer ‘borders'... yes > createTable(l_pol, "t_pol") Creating static table 't_pol' on layer ‘borders'... yes Creating link ids... yes Object of class aRTtable Table: "t_pol" Type: static Layer: “borders" Rows: 1 Attributes: id: string[16] (key) > plot(l_pol)
34
Creating a view and theme for the polygons > tema_pol<-createTheme(l_pol, “borders", view="view") Checking for theme ‘borders' in layer 'parana'... no Creating theme ‘borders' on layer ‘borders'... yes Checking for view 'view' in database 'parana'... yes Checking tables of theme ‘borders'... yes Saving theme ‘borders'... yes Building collection of theme ‘borders'... yes > setVisual(tema_pol, visualPolygons())
35
Creating a grid for the interpolated surface > gx <- seq(50,800, by=10) > gy <- seq(-100,650, by=10) > loc0 <- expand.grid(gx,gy) > points(parana, bor=borders) > points(loc0, pch=".", col=2) > loc1 <- polygrid(loc0, bor=parana$bor) > points(loc1, pch="+", col=4)
36
Kriging using geoS: model fitting > # Kriging using geoS > # Step 1 – fitting the variogram > ml <- likfit(parana, trend="1st", ini=c(1000, 100)) --------------------------------------------------- likfit: likelihood maximisation using the function optim. likfit: WARNING: This step can be time demanding! --------------------------------------------------- likfit: end of numerical maximisation.
37
Kriging using geoS: interpolation > kc <- krige.control(trend.d="1st", trend.l="1st", obj=ml) > kc <- krige.conv(parana, loc=loc0, krige= KC, bor=parana$borders) krige.conv: results will be returned only for prediction locations inside the borders krige.conv: model with mean given by a 1st order polynomial on the coordinates krige.conv: Kriging performed using global neighbourhood > save.image() > > image(kc, col=terrain.colors(15))
38
Exporting the grid to TerraLib > # preparing object for aRT > georpred <-.prepare.graph.kriging(locations=loc0, borders=parana$borders, values=kc$pred) > artpred <-.gr2aRTraster(georpred) > # creating a layer in TerraLib > l_pred <- new("aRTlayer", pr, layer="pred", create=T) Building projection to layer 'pred'... yes Creating layer 'pred'... yes > addRaster(l_pred, artpred) Adding raster data to layer 'pred'... yes Reloading tables of layer 'pred'... yes
39
Creating a theme and a view for the grid > th<-createTheme(l_pred, "raster", view="view") Checking for theme 'raster' in layer 'parana'... no Creating theme 'raster' on layer 'pred'... yes Checking for view 'view' in database 'parana'... yes Checking tables of theme 'raster'... yes Saving theme 'raster'... yes > > setVisual(th, visualRaster(), mode="r")
40
Plotting the data in R > # plotting the data in R > plot(l_pred, col=terrain.colors(15)) > plot(l_dados, add=T) > plot(l_pol, add=T)
41
Now, let’s see the data in TerraView File...OpenDatabase... Parana database is there!
42
Create Views and Themes (if needed) Create View parana Create themes Borders Data Pred Play with the data!
43
R data in TerraView
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.