1. Geoscript allows the addition of spatial capabilities to scripting languages like Groovy and Python through the Geotools library, making GIS development simpler through batching and fast prototyping.
2. uDig is an open source desktop GIS application that supports geoscripting and spatial processing through tools like JGrasstools, and provides a scripting editor to write and run geoscripts.
3. Geoscripts in uDig can access vector and raster data, perform spatial operations, and use tools like JGrasstools for hydrological modeling tasks through a simple template-based process.
The document discusses spatial analysis and visualization using open source GIS and OGC standards. It provides examples of 1) a national land environment assessment map service, 2) an integrated epidemiological investigation analysis system, and 3) a Web Processing Service demo. It also discusses descriptive statistics, spatial pattern analysis, spatial interpolation, vector and raster geoprocessing tools, and setting up a GeoServer and PostGIS system to support WMS, WFS, and WPS services.
The document discusses spatial analysis and visualization using open source GIS and OGC standards. It provides examples of 1) a national land environment assessment map service, 2) an integrated epidemiological investigation analysis system, and 3) a Web Processing Service demo. It also discusses descriptive statistics, spatial pattern analysis, spatial interpolation, vector and raster geoprocessing tools, and setting up a GeoServer and PostGIS system to support WMS, WFS, and WPS services.
1. GIS na GNU/Linux-u Darko Boto APIS IT d.o.o . GIS analitiar CLI Geoproccesing GDAL/OGR
2. Sadr転aj : Uvod O radionici Povijest FLOSS GIS-a Anatomija FLOSS GIS-a to je GIS?油 Projekcije Prostorni podaci CLI geoprocesiranje - GDAL/OGR sa primjerima油 Pode邸avanje PostGIS baze PostGIS SQL upiti sa primjerima i skriptama Pregled alata WEB GIS
3. O radionici OSGeo VM - Linux distribucija bazirana na Ubuntu-u http://wiki.osgeo.org/wiki/Live_GIS_Disc Arramagong - http://www.arramagong.com/Arramagong Predinstaliran SW iskljuivo pod pokroviteljstvom OSGeo油fondacije (http://www.osgeo.org)
4. WEB arhitekture? Desktop alati? Osnove GIS-a? CLI Geoprocesiranje u duhu konferencije Biblioteke u pozadini UI Demistifikacija geoprocessing-a Anatomija FLOSS GIS stack-a
7. to je GIS? to je pored standardne radne okoline potrebno da bi bi sustav bio geografski tj. da bi nam omoguio podr邸ku za prostorne analize? Tri funkcionalna zahtjeva za prostorne analize (tj.GIS-a): Data driver (GDAL - Geospatial Data Abstraction Library) GDAL/OGR = u pravljaki program za rasterske/vektorske GIS formate podataka tj. omoguava da se pristupi raznim rasterskim/vektorskim zapisima prostornih podataka. PostGIS (PostgreSQL extenzija za "geometry" tip podataka u油 bazi - Simple Feature Specification for SQL) Geometry engine (GEOS - Geometry Engine - Open Source) GEOS = C++ port od JTS-a Omoguava operacije nad vektorima tj. logiku operacija nad skupovima te油 osnovne topolo邸ke analize. Ukljuuje prostorne operatore i Simple Features for SQL funkcije. Projection engine (PROJ4 - Cartographic Projections library) PROJ4 = Podr邸ka za geografske datume, projekcije i transformacije meu njima.
10. GDAL = GDAL+OGR GDAL Raster (Geospatial Data Abstraction Library) 油 Omoguava manipulaciju rasterskim podacima Frank Warmerdam 1998, Veliki broj podr転anih formata (http://www.gdal.org/formats_list.html) Koristi ga veliki broj i FLOSS i vlasnikog SW-a油 (3D DEM Viewer, ESRI ArcGIS 9.2+, Feature Data Objects (FDO), FME, GeoServer, Google Earth, GRASS GIS, gvSIG, IDRISI, ILWIS, MapGuide, Mapnik, MapServer, MapWindow, QGIS...) Vrlo dobar programski interface - API (SWIG):油Python, Perl, Java, C#, Ruby Dobro dokumentiran.
11. GDAL Utilities gdalinfo - Iscrpan pregled metapodaka gdal_translate -Transformacija izmeu razliitih rasterskih formata sa kontrolom output-a gdalwarp - Transformacija slike prema koordinatnom sistemu, gdaltindex -Izrada tile indexa za optimizaciju MapServer-a, gdal_contour - Generiranje izolinija iz visinskih modela, gdaldem - PerryGeo alati (1.7.0) osjenavanje, izraun nagiba i koloriziranje visinskih modela, gdal_merge.py - Izrada mozaika od kolekcije georeferenciranih rastera, gdal2tiles.py -Izrada TMS strukture i preglednika (OL), gdal_rasterize - Rasterizacija vektora, gdaltransform - Transformacija koordinata, gdal_retile.py -Izrada piramida i retile-anje, gdal_polygonize.py -Generiranje poligona iz rastera, gdal_fillnodata.py - Punjenje "nodata" regiona.
15. kolorizacija rastera #! /usr/bin/env python from osgeo import gdal import sys import numpy import os.path gdal.TermProgress = gdal.TermProgress_nocb src_file = sys.argv[1] dst_file = sys.argv[2] out_bands = 3 def MakeColor(z_value): 油 '''LUT for color ramp. Keys are pixel values, hash values are RGB triplets.''' 油 color_dict = { 油油油 0:[102,0,255], 油油 25:[20,82,255], 油油 50:[0,194,224], 油油 75:[0,255,122], 油 100:[41,255,0], 油 125:[204,255,0], 油 150:[245,194,0], 油 175:[224,118,0], 油 200:[168,46,0], 油 225:[105,0,0], 油 250:[64,0,0], 油 255:[0,0,0]} 油 key_list = color_dict.keys() 油 key_list.sort() 油 while len(key_list) > 0: 油油油 last_val = key_list[-1] 油油油 if z_value >= last_val: 油油油油油 return color_dict[last_val] 油油油 else: 油油油油油 key_list.remove(last_val) # Print some info print "Creating %s" % (dst_file) # Open source file src_ds = gdal.Open( src_file ) src_band = src_ds.GetRasterBand(1) # create destination file dst_driver = gdal.GetDriverByName('GTiff') dst_ds = dst_driver.Create(dst_file, src_ds.RasterXSize, src_ds.RasterYSize, out_bands, gdal.GDT_Byte) # create output bands band1 = numpy.zeros([src_ds.RasterYSize, src_ds.RasterXSize]) band2 = numpy.zeros([src_ds.RasterYSize, src_ds.RasterXSize]) band3 = numpy.zeros([src_ds.RasterYSize, src_ds.RasterXSize]) # set the projection and georeferencing info dst_ds.SetProjection( src_ds.GetProjection() ) dst_ds.SetGeoTransform( src_ds.GetGeoTransform() ) # read the source file gdal.TermProgress( 0.0 ) for iY in range(src_ds.RasterYSize): 油 src_data = /slideshow/gdalprocessing/6125950/src_band.ReadAsArray(0,iY,src_ds.RasterXSize,1) 油 col_values = src_data[0]油油油油油油油油油油油油油油油油油油油油油油油油 # array of z_values, one per row in source data 油 for iX in range(src_ds.RasterXSize): 油油油 z_value = col_values[iX] 油油油 # print z_value油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油油 # uncomment to see what value breaks color ramp 油油油 [R,G,B] = MakeColor(z_value) 油油油 band1[iY][iX] = R 油油油 band2[iY][iX] = G 油油油 band3[iY][iX] = B 油 gdal.TermProgress( (iY+1.0) / src_ds.RasterYSize ) # write each band out dst_ds.GetRasterBand(1).WriteArray(band1) dst_ds.GetRasterBand(2).WriteArray(band2) dst_ds.GetRasterBand(3).WriteArray(band3) dst_ds = None 油 #END script Ili jednostavnije: 油 $gdaldem color-relief ASTGTM_N44E015_dem.tif ramp.txt color.tif 油 gdje je ramp.txt 3500 white 2500 235:220:175 50% 190 185 135 700 240 250 150 0 50 180 50 nv 0 0 0 0 100%油 255 255 255 75%油油 235 220 175 50%油油 190 185 135 25%油油 240 250 150 0%油油油 50油 180油 50 nv油油油 0油油 0油油 0
16. gdal_contour Omoguava generiranje izo linija iz rastera sa visinskim podacima (SRTM, ASTER) 油 $gdal_contour -i 10 -snodata 32767 -a height ASTGTM_N44E015_dem.tif gdalwarp_output1.tif Primjer generiranja izo linija iz SRTM .hgt podataka shell skriptom: # povlacenje SRTM podataka (.hgt binary grid) sa NASA ftp servera. Lista za HR je u srtmhr_list.txt cat srtmhr_list.txt | sed 's!^!ftp://e0srp01u.ecs.nasa.gov/srtm/version2/SRTM3/Eurasia/!' | xargs -i wget -nc {} # apsolutna putanja do direktorija sa podacima DATA_PATH="" # ulazi u direktorij sa podacima cd $DATA_PATH # za油 svaki *hgt.zip izvrsava srtm_generate_hdr.sh http://mpa.itc.it/rs/srtm/srtm_generate_hdr.sh for X in *.hgt.zip do # skripta od .hgt fileova generira BIL headere i priprema podatke za GDAL 油油油油油油油 # GDAL nakon toga radi konverziju u GeoTIFF te napravi .prj za shp 油油油 yes | $DATA_PATH/srtm_generate_hdr.sh $X done # generiranje izohipsi iz pripremljenih tifova for X in $DATA_PATH/*.tif do 油油油 echo $X # izvlacenje izohipsi po visinskim podacima za 10, 50 i 100 m i spremanje u ESRI shape file (.shp) 油油油 gdal_contour -i 10 -snodata 32767 -a height $X ${X%%.tif}c10.shp 油油油 gdal_contour -i 50 -snodata 32767 -a height $X ${X%%.tif}c50.shp 油油油 gdal_contour -i 100 -snodata 32767 -a height $X ${X%%.tif}c100.shp done
18. Zadatak - primjer analize Koristei GDAL i digitalni model reljefa izraunajte podruje udara plimnog vala visine 30 m na podruju Starigrada. Kao rezultat proizvesti vektorski poligonski sloj ugro転enog podruja. podaci: ASTGTM_N44E015_dem.tif ?
19. Rje邸enje Prvo napraviti color schemu za bojanje visina izmeu 1m i 30 m i pohraniti kao colors.txt: 1 255,0,0 30 0,0,0 nakon toga sa gdaldem pobojati ciljano podruje : $gdaldem color-relief ASTGTM_N44E015_dem.tif colors.txt crveno_podrucje.tif sa gdal_polygonize napraviti vektorizaciju ugro転enog podruja: $gdal_polygonize.py crveno_podrucje.tif -b 1 -f "ESRI Shapefile" odsjecak.shp gdje je kao band argument postavljena vrijednost 1 (tj. red od r,g,b) ta daaaa... i dobili smo poligone u shapefileu ali nisu isfiltrirani poligoni ostalih podruja koja nisu ugro転ena. Zadaa: sa ogrinfo pogledajte atribute i njihove vrijednosti te sa OGR-om izdvojite samo ugro転eno podruje u novi shapefile. Primjetiti kako analiza nije u obzir uzela postojanje otoka i njihov utjecaj na ubla転avanje plimnog vala... Razmisliti o tome kako uzeti u obzir utjecaj otoka.
21. OGR to je GDAL za rastere to je OGR za vektore 油 Veliki broj podr転anih formata (http://www.gdal.org/ogr/ogr_formats.html) 油 Velike mogunosti manipulacije nad podacima (Load u Postgis, SQL query-ji, append, update i sl.) te mogunost geoprocessing-a nad vektorima. ogrinfo - Pregled informacija o podr転anim vektorskim podacima ogr2ogr - Konverzije izmeu formata sa kontrolom izlaza ogrtindex - Izrada indeksa 油 油
22. ogrinfo $ogrinfo -al region_borders.shp | less $ogrinfo -ro region_borders.shp -sql "SELECT * FROM \ region_borders WHERE CNTRYNAME='Croatia'" | less INFO: Open of `region_borders.shp' 油油油油油 using driver `ESRI Shapefile' successful. Layer name: region_borders Geometry: Polygon Feature Count: 7 Extent: (6.625400, 35.491300) - (23.006200, 49.020300) Layer SRS WKT: GEOGCS["GCS_WGS_1984", 油油油 DATUM["WGS_1984", 油油油油油油油 SPHEROID["WGS_1984",6378137.0,298.257223563]], 油油油 PRIMEM["Greenwich",0.0], 油油油 UNIT["Degree",0.0174532925199433]] ObjectID: Integer (9.0) NATION: String (3.0) CNTRYNAME: String (25.0) CNTRYABB: String (3.0) SQKM: Real (19.5) COLORMAP: Real (11.0) OGRFeature(region_borders):0 < ime datoteke <tip geometrije < broj featurea < prostroni kvadrat (extent) < projekcija < ime/tip atribunog polja
26. PostGIS Podr邸ka za prostorne podatke u relacijskoj PostgreSQL bazi, Pod GPL licencom od 2001. - Refractions Research, Implementacija OGC Simple Feature For SQL standarda, Mogunost R/W preko svih FOSS GIS desktop alata (QGIS, UDIG, JUMP), itanje podataka od strane svih renderera (MapServer, GeoServer, Mapnik) Testiran sa 600 000 000 featurea sa brzinom itanja 14 000 feature-a u sekundi Izvrstan vector geoprocessing alat sa vi邸e od 350 funkcija (koristi GEOS za topolo邸ke analize)油 0 (nula) KN Podr転ava: geometrijske tipove toaka, linija, poligona, multitoaka, multilinija, multipoligona i geometrijskih kolekcija prostorne operatore za odreivanje prostornih mjera kao 邸to su povr邸ina, du転ina i opseg prostorno indeksiranje podataka (R-stablo + GiST) koji ubrzavaju upite nad prostornim podacima油 油 Dodatni Alati: psql (CLI suelje prema PostgreSQLPostGIS bazi) shp2pgsql - loader pgsql2shp - exporter 油 Instalacija: $sudo apt-get install postgresql postgresql-client postgresql-contrib pgadmin3 $sudo apt-get install postgresql-8.4-postgis postgis Instalacija ostalih alata i biblioteka $ sudo apt-get install gdal-bin proj libgeos2c2a油 grass qgis qgis-plugin-grass mapserver-bin cgi-mapserver python-qt4 python-sip4 python-gdal python-mapscript gmt gmt-coastline-dat
27. Pode邸avanje baze Kreiranje baze i template-a (preporuujem) $ sudo su postgres $ createdb gistemplate Kreiranje PL/PSQL $ createlang plpgsql gistemplate Load funkcija i SRS tablice $ psql -d gistemplate -f /usr/share/postgresql-8.4-postgis/lwpostgis.sql $ psql -d gistemplate -f /usr/share/postgresql-8.4-postgis/spatial_ref_sys.sql Provjera $psql -d gistemplate -c "SELECT postgis_full_version();" Ulazimo u bazu油 $ psql postgres=# Kreiranje grupe, dodjela role i grant postgres=# CREATE ROLE gisgroup NOSUPERUSER NOINHERIT CREATEDB NOCREATEROLE; postgres=# CREATE ROLE gis LOGIN PASSWORD 'gisuser' NOINHERIT; postgres=# GRANT gisgroup TO gis; postgres=# \q
28. Dodjela ovlasti na prostorne tablice gis user-u i kreiranje sheme $ psql -d gistemplate gistemplate=# ALTER TABLE geometry_columns OWNER TO gis; gistemplate=# ALTER TABLE spatial_ref_sys OWNER TO gis; gistemplate=# CREATE SCHEMA gis_schema AUTHORIZATION gis; gistemplate=# \q Kreiranje baze rv_gis i priprema za load podataka $ createdb -T gistemplate -O gis rv_gis Dodavanje google projekcije u postgis INSERT into spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) values (900913 ,'EPSG',900913,'GEOGCS["WGS 84", DATUM["World Geodetic System 1984", SPHEROID["WGS 84", 6378137.0, 298.257223563,AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], NIT["degree",0.017453292519943295], AXIS["Longitude", EAST], AXIS["Latitude", NORTH],AUTHORITY["EPSG","4326"]], PROJECTION["Mercator_1SP"],PARAMETER["semi_minor", 6378137.0], PARAMETER["latitude_of_origin",0.0], PARAMETER["central_meridian", 0.0], PARAMETER["scale_factor",1.0], PARAMETER["false_easting", 0.0], PARAMETER["false_northing", 0.0],UNIT["m", 1.0], AXIS["x", EAST], AXIS["y", NORTH],AUTHORITY["EPSG","900913"]] |','+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs'); Primjer kreiranja view-a za MapServer CREATE VIEW gradovi AS SELECT * FROM mjesta WHERE type LIKE 'Small' ORDER BY gid;
29. Load shp2pgsql - data loader (mo転e se koristiti i OGR sa podr邸kom za vei broj formata) $shp2pgsql s <epsgcode> <ShapeFileName> <TableName> <dbName> > <filename> $psql -d <dbname> -f <filename> 油 $pgsql2shp -f croatia -h localhot -u user -P user gis "SELECT name, wkb_geometry FROM region_borders WHERE name = 'CROATIA'" Primjer $shp2pgsql -W "ISO-8859-1" -I -s 4326 region_borders gis_schema.region_borders | psql -d gis Napomena: Za na邸e dijakritike znakove -W "WINDOWS-1250" EPSG referenca: $ less /usr/share/proj/epsg | grep 31275 <31275> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999900 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs油 <> Export podataka iz baze pgsql2shp -f imefilea imebaze gis_schema.region_borders Prostorni upit za extent SELECT EXTENT(the_geom) FROM region_borders; Kreiranje prostorog indexa GIST (auto vacum i analyze) CREATE INDEX <indexname> ON <tablename> USING GIST ( <geometrycolumn> GIST_GEOMETRY_OPS ); Promjena tipa podatka na stupcu alter TABLE gis_schema.contours50 ALTER COLUMN height TYPE integer;
30. Primjeri: 油 Kreiranje prostorne kolone - AddGeometryColumn SELECT AddGeometryColumn('public', 'region_borders', 'geom', 4326, 'POINT', 2); Kreiranje prostornog indeksa - GIST CREATE INDEX idx_region_borders_geom ON region_borders USING gist(geom); Izraunavanje povr邸ine - ST_Area SELECT neigh_name, ST_Area(geom) FROM region_borders ORDER BY ST_Area(geom) limit 1; 油 Pronai sve objekte 100 meters od toke POINT(1000 1000) - ST_DWithin SELECT * FROM geotable WHERE ST_DWithin(geocolumn, POINT(1000 1000) , 100.0); select zup_naziv from gis_schema.zupanija where ST_DWithin(the_geom, 'POINT(5538942 5007927)',100.0); Ukupna du転ina ceste izra転ena u kilometrima - ST_Length SELECT sum(ST_Length(the_geom))/1000 AS km_roads FROM roads; Selecija poligona koje se nalaze unutar drugog poligona ST_Within CREATE TABLE gis_schema.corine_cro AS SELECT gis_schema.corine.* FROM gis_schema.corine, gis_schema.granice WHERE ST_WITHIN (gis_schema.corine.the_geom, gis_schema.granice.the_geom) AND gis_schema.granice.CNTRYNAME = 'Croatia'; Simplifikacija - ST_Simplify CREATE TABLE gis_schema.border_genSimplify AS SELECT ST_SIMPLIFY(gis_schema.border_gen.the_geom,2) FROM gis_schema.border_gen; ST funkcije
31. Pregled alata Desktop: QGIS (C++/Python) UDIG (Java) JUMP (Java) MapWindow (C#) TatukGIS,ILWIS, gvSIG Vrlo esto ali i uspje邸no se koriste kao framework za razvoj alata prema specifinim zahtjevima. Jump ima vi邸e FOSS forkova ovisno o podruju namjene. Pokriva 80% GIS korisnika. Upravljanje podacima: PostGIS MySQL Spatial SpatialLite GDAL/OGR FDO Vrlo solidno pokriven sloj. Spatial implementacije u skladu sa standardima na svim esto kori邸tenim slobodnim bazama i pokrivena veina formata zapisa GIS podataka.
32. WEB GIS Map rendereri: MapServer GeoServer Mapnik MapGuide OS etiri jako dobra renderera karata. Veinom podr転avaju osnovne OGC standarde. Definitivno najjai dio FOSS GIS stack-a. Web klijenti: OpenLayers pMapper GeoMayas MapFish Svi osim pMapper-a iz nove generacije web klijenata. Naje邸e se koriste kao framewok za razvoj web aplikacija.