12. gdalinfo $gdalinfo ASTGTM_N44E015_dem.tif Driver: GTiff/GeoTIFF Files: ASTGTM_N44E015_dem.tif Size is 3601, 3601 Coordinate System is: GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.2572235629972, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]] Origin = (14.999861111111111,45.000138888888891) Pixel Size = (0.000277777777778,-0.000277777777778) Metadata: AREA_OR_POINT=Area TIFFTAG_DOCUMENTNAME=created at TIFFTAG_IMAGEDESCRIPTION=SILC TIFF TIFFTAG_SOFTWARE=IDL 6.3, Research Systems, Inc. TIFFTAG_DATETIME=2008:10:27 20:50:05 TIFFTAG_XRESOLUTION=100 TIFFTAG_YRESOLUTION=100 TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch) Image Structure Metadata: INTERLEAVE=BAND Corner Coordinates: Upper Left ( 14.9998611, 45.0001389) ( 14d59'59.50"E, 45d 0'0.50"N) Lower Left ( 14.9998611, 43.9998611) ( 14d59'59.50"E, 43d59'59.50"N) Upper Right ( 16.0001389, 45.0001389) ( 16d 0'0.50"E, 45d 0'0.50"N) Lower Right ( 16.0001389, 43.9998611) ( 16d 0'0.50"E, 43d59'59.50"N) Center ( 15.5000000, 44.5000000) ( 15d30'0.00"E, 44d30'0.00"N) Band 1 Block=3601x1 Type=Int16, ColorInterp=Gray < format zapisa < veličina <projekcija <EPSG kod - $ less /usr/share/proj/epsg | grep 4326 < metapodaci < koordinate extenta < type Int16
13. gdal_translate $gdal_translate --formats - mogućnost konverzije između 88 rasterskih formata sa kontrolom izlaznog formata (GeoTiff - defaultni izlazni format). ***Ukoliko fromat ne podržava pohranu metapodataka u samom formatu, metapodatke pohranjuje u xml datoteku. Konverzija TIFF-a u DEM $gdal_translate -of USGSDEM ASTGTM_N44E015_dem.tif translate_output1.dem Konverzija sa kontrolom veličine outputa (resize) $gdal_translate -of USGSDEM -outsize 50% 50% ASTGTM_N44E015_dem.tif translate_output2.dem Konverzija u 16bit-ni raster $gdal_translate -of PNG ot UInt16 ASTGTM_N44E015_dem.tif translate_output3.png Konverzija u JPG + worldfile $gdal_translate -of JPEG -scale -co worldfile=yes ASTGTM_N44E015_dem.tif translate_output3.jpg Konverzija u tekstualnu xyz datoteku $gdal2xyz.py ASTGTM_N44E015_dem.tif translate_output4.xyz Jako velike mogućnosti pogledati: $man gdal_translate
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 = 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 Omogućava 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
17.
18.
19.
20.
21.
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
23. ogr2ogr $ogr2ogr --help (Mala pomoć za pregled mogućnosti alata) $ogr2ogr -f "KML" region_borders.kml region_borders.shp (Konverzija .shp datoteke u google .kml) $ogr2ogr -f "PostgreSQL" PG:"host=localhost user=user dbname=user password=user" region_borders.kml -nln region_borders (Punjenje .kml datoteke u PostGIS baz) $ogr2ogr -f "ESRI Shapefile" pg_export.shp PG:"host=localhost user=user dbname=user password=user" "region_borders" (Export prostorne tablice u .shp datoteku) $ogr2ogr -s_srs EPSG:4326 -t_srs EPSG:31275 rb_31275.shp region_borders.shp (Konverzija prostornog referentnog sustava) $ogr2ogr -update -append -f PostgreSQL PG:dbname=user region_borders.shp (Update i append iz .shp datoteke u PostGIS bazu)
27. Podešavanje baze Kreiranje baze i template-a (preporučujem) $ 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=#
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=# 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 veći 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 dijakritičke 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); Izračunavanje površine - ST_Area SELECT neigh_name, ST_Area(geom) FROM region_borders ORDER BY ST_Area(geom) limit 1; Pronađi sve objekte 100 meters od točke 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