GDAL

GDAL/OGR - OSM driver

Za GDAL bilioteku u verziji 1.10 je najavljen driver za OSM podatke (tj. podrška za .osm xml i .pbf datoteke) što će omogućiti brzu i jednostavnu konverziju OSM podataka u bilo koji drugi GIS format podržan od OGR-a (ogr2ogr). Za testiranje drivera napravljen je primjer preuzimanja dnevnog exporta OSM podataka i konverzija u prostornu SQLite bazu (spatialite) spremnu za korištenje s desktop GIS aplikacijama (npr. QGIS) ili eventualno za web aplikacije koje koriste ove podatke a važna im je ažurnost na dnevnoj bazi.

Lokalna OSM zajednica još od 2009 god. čuva arhivu dnevnih exporta OSM podataka za područje RH (hvala Hrvoju B.) te je i prije bilo moguće s drugim alatima u svojoj bazi imati dnevno ažurne OSM podatke (alati oko PostgreSQL-a: osm2pgsql, osmosis i imposm ili za Sqlite spatialite-tool). No nama koji GDAL/OGR često koristimo, zbog velike mogućnosti manipulacije podacima, skriptanja i python bindinga, zgodno je imati i ovu mogućnost unutar tog alata.

>>> Ovdje su upute kako pripremiti GDAL/OGR biblioteku za konverziju iz .osm ili .pbf formata u .sqlite, te na koji način dohvaćati dnevno svježe openstreetmap podatke koristeći filtere.

geoportal.dgu.hr - što sad?

Konačno možemo reći da Hrvatska ima funkcionalan geoportal, no nakon onog smeća kompanije koju nećemo imenovati, teško je bilo biti puno lošiji. Također, geoportal možda nije najbolji izraz za taj servis, jer ako ćemo razmišljati u duhu INSPIRE direktive, pravi nacionalni geoportal bi trebao biti agregator informacija ostalih, manjih, distribuiranih servisa koji pružaju pregled/pretraživanje/preuzimanje prostornih podataka.

Možda najveći kamen spoticanja i je 'pravo preuzimanja podataka', odnosno da je sve te, lako pretražive i na klik dostupne podatke, zbilja moguće koristiti za nešto više od "osobne upotrebe". Zahvaljujući sve jačim OpenData inicijativama, informacije javnog sektora (Public Sector Information) postaju sve dostupnije i to na način da se mogu slobodno koristiti u bilo koju svrhu uz navođenje izvora podataka. Dakle, postoji licenca koja definira pravo korištenja, ali oslobađajuća, a ne ograničavajuća. Kada bih nastupio populistički možda bih rekao nešto u stilu 'slobodno dostupne informacije javnog sektora stvaraju radna mjesta stoga trebamo usmjeriti investicije prema uspostavljanu efikasnih javnih servisa'. Primjera u Europi ima mnogo (Danska, Engleska, Austrija, Češka, Poljska, ...), no na Balkanu po starom, zahtjev za preuzimanje digitalnih informacija mora se napraviti osobno pisanim putem uz doplatu požurnice.

No da se vratimo na geoportal, prva zanimljivost je korištena tehnologija. Po prvi puta je šansa pružena slobodnom softveru. Zamislite, nešto tako bitno, kao infrastruktura prostornih podataka za cijelu državu, izvršava se na slobodnom softveru. Istom onom softveru kojeg pišu "hakeri/krekeri" koji su zločesti i prljavi. Iako nam nisu poznati svi detalji te se nadamo da će jednoga dana na nekoj konferenciji ili savjetovanju biti javno prezentirana cijela arhitektura, neke neslužbene informacije mogu se pronaći na http://geo-solutions.blogspot.com/2012/08/real-world-uses-cases-troubleshooting.html

Druga zanimljivost je što se na stranicama geoportala mogu naći upute za korištenje WMS servisa DGU-a u Quantum GIS aplikaciji (http://geoportal.dgu.hr/upute/qgis-wms-dgu/). QGIS je također slobodni softver, koji se na ovaj način sve više popularizira. Ne znamo koliko znate ali u pozadini QGIS koristi GDAL (http://www.gdal.org/) biblioteku koja je postala industrijski standard za pretvaranje različitih rasterskih i vektorskih formata podataka. GDAL se također koristi u ESRI softverskom paketu.

Geoportalu je također moguće pristupiti pomoću GDAL biblioteke (1.8+ s podrškom za curl), tako da definirate tzv. parametarsku XML datoteku:

<GDAL_WMS>
    <Service name="WMS">
    <Version>1.1.1</Version>
    <ServerUrl>http://geoportal.dgu.hr/ows?SERVICE=WMS</ServerUrl>
    <SRS>EPSG:3765</SRS>
    <ImageFormat>image/jpeg</ImageFormat>
    <Layers>ovdje_upisati_trazeni_sloj</Layers>
    </Service>
    <DataWindow>
        <UpperLeftX>264688</UpperLeftX>
        <UpperLeftY>5157273</UpperLeftY>
        <LowerRightX>731567</LowerRightX>
        <LowerRightY>4693018</LowerRightY>
        <SizeX>933758</SizeX>
        <SizeY>928510</SizeY>
    </DataWindow>
    <Projection>EPSG:3765</Projection>
    <BlockSizeX>1024</BlockSizeX>
    <BlockSizeY>1024</BlockSizeY>
</GDAL_WMS>

Nakon prilagođavanja i spremanja parametara, servisu ćemo pristupiti izvršavanjem sljedeće naredbe:

gdal_translate -co "WORLDFILE=YES" -of jpeg \
-projwin 520049 5117200 528988 5110032 -outsize 1247 1000 \
dgu_geoportal.xml slika.jpg

Rezultat izvršavanja bit će georeferencirana slika traženog područja. Zabavu s gdal_translate parametrima ostavljamo vama :)

Digitalni model terena iz CSV datoteke pomoću GDALa

Često postoji potreba da se iz obične strukturirane (CSV) tekstualne datoteke koja sadrži X, Y i Z vrijednosti izrade slojnice (izolinije) nekog područja. Recimo na terenu smo snimali uzdužne profile i želimo izraditi slojnice kako bi napravili vizualizaciju.

Prvi problem predstavlja raspršenost podataka, odnosno visinski podaci se nalaze bilo gdje u prostoru. Proces stvaranja uniformne strukture, tj. rastera s poznatom rezolucijom za svaki piksel naziva se gridding

GDAL softverski paket dolazi s alatom gdal_grid koji omogućava gridding upotrebom tri metode interpolacije: 

  • nearest
    • nearest neighbor - ne provodi nikakvu interpolaciju nego uzima vrijednost najbliže mjerene točke
  • average
    • moving average - interpolacija se izvodi izračunom srednje vrijednosti svih točaka unutar područja traženja (eng. search ellipse)
  • invdist
    • inverse distance - svakoj točki unutar područja traženja se dodjeljuje težina ovisno o udaljenosti od tražene točke grida, točke koje su bliže imaju veći utjecaj od udaljenijih 

Bitno je napomenuti kako postoje egzaktne i približne metode interpolacije. Primjer egzaktne metode interpolacije je poznata Krigging metoda. Egzaktna interpolacija čuva vrijednosti poznatih točaka, dakle uzima ih kao apsolutno točne. Približna metoda interpolacije pretpostavlja da mjerene vrijednosti nisu točne pa ih prilagođava globalnom trendu podataka.

Ukoliko imate potrebu koristiti egzaktne metode interpolacije predlažem softverski paket R odnosno njegove module za obradu prostornih podataka.

Izvor podataka za gdal_grid može biti bilo koji izvor podataka podržan od strane OGR programskog paketa, dok izlazni format podataka može bilo koji podržan od strane GDAL programskog paketa. U ovom slučaju nas zanima CSV kao izvor podataka i GeoTIFF kao rezultat. Nakon što ulazne podatke pretvorimo u uniformnu strukturu, potrebno je pomoću alata gdal_contour stvoriti željene slojnice.

Više o postupku pročitajte na wiki stranicama. (Kratki vodiči).

Tri funkcionalna zahtjeva GIS-a

Priprema radionice za DORS/CLUC 2010, ali i zadnji post, u kojem se pisalo o PROJ4 biblioteci, podsjetio me je da većina ljudi od GIS-a zastane pred pitanjem: "Što je pored standardne okoline potrebno da bi bi sustav bio geografski (GIS), tj. da bi nam omogućio podršku za prostorne analize?". Većina ljudi počnu nabrajati razne vlasničke software-e i alate. I stvarno, stiskanje next tipke i klikanje po gumbima na korisničkom sučelju može biti GIS, ali na taj način nećemo saznati što se zapravo događa u pozadini i što se sve treba odraditi da bi se na bilo koji način procesirali prostorni podaci.

Tri su zahtjeva. Prvi zahtjev je driver za rasterske/vektorske GIS formate podataka tj. mogućnost da se pristupi raznim rasterskim/vektorskim zapisima prostornih podataka (a ima ih jako puno). Vrlo često su ti formati vlasnički i specifikacije ako su napisane onda su napisane vrlo oskudno i loše. Ima i izuzetaka. Vlasnički SHP (shapefile) format je primjer da i ne mora biti tako. U FLOSS GIS svijetu taj zahtjevan posao odradio je Frank Warmerdam i još 1994 počeo raditi na GDAL/OGR biblioteci koja nam rješava sve probleme u svezi sa prvim zahtjevom (i mnogo više). Frank 1998 objavljuje GDAL pod slobodnom licencom i GDAL/OGR postaje jedna od najkorisnijih biblioteka FLOSS GIS svijeta sa krasnim SWIG bindinzima za C/C++. C# .NET, Javu, Python, Perl, Ruby i R. Frank je legenda i zaslužio je cijelu temu.

OK, sad kad čitamo podatke dolazimo do problema kako ih smjestiti u prostor. Kako koordinate staviti u odnose i to prostorne odnose koje su opisane vrlo kompleksnom matematikom teorije projekcija?

Proj4 svoje početke vuče još iz kasnih 70', a USGS ga objavljuje pod slobodnom licencom još 1983 i on je zaslužan što je FLOSS GIS svijet dobio još jednu punokrvnu biblioteku koja omogućava i drugu funkcionalnost u ovoj priči. Ovaj vrlo ozbiljan programerski posao odradio je nesebični USGS i tako je svijet transformacija, geografskih datuma, čudnih projekcijskih parametara i konstanti, geografskih koordinatnih sustava i nerazumljivih matematičkih funkcija napokon dobio svoj izraz u binarnom svijetu.

Sad kad možemo pročitati podatke i smjestit ih u prostor, vrlo jednostavno uz pomoć nekog od renderera možemo napraviti sliku (koju već možemo nazvati kartom), a koja će prikazati objekte u prostoru i realno prikazati prostorne odnose među njima. No nikako ne želimo samo to, a kako bi zadovoljili ono IS u GIS moramo uvesti bar malo analitičke geometrije. Drugim riječima podatke želimo analizirati, mjeriti udaljenosti između objekata, saznati koliko se nekih objekata nalazi unutar nekog područja, tj. netko ili nešto treba omogućiti logiku operacija nad skupovima i omogućiti osnovne topološke analize.

Taj zahtjev ispunjava GEOS, koji omogućuje objektni model za Euklidovu geometriju te implementira i geometrijski model i API-je definirane u OGC Simple Features Specification for SQL standardu. Objavljivanje JTS-a 2000 god. pod slobodnom licencom otvorio je put da FLOSS GIS stack dobije GEOS, svoj C port ove izuzetno važne biblioteke koja djelujući u pozadini zadovoljava i treći uvijet ove kratke priče. GEOS omogućava manipulaciju 2-dimenzionalnom linearnom geometrijom, krasan je resurs velikog broja geometrijskih funkcija i algoritama.  Bez njega je i PostGIS vrlo rudimentaran.

Dakle gledajući FLOSS GIS C/C++ stack, GEOS, Proj4 i GDAL su osnovni funkcionalni elementi jednog informacijskog sustava koji sada sebe ima puno pravo zvati geografskim. I to je stvarno najosnovnije.

PROJ4J i GeoMajas

Zadnjih mjesec dana ništa se senzacionalno nije dogodilo u FLOSS GIS svijetu, ali izdvojit ću par donekle zanimljivih događaja.

Prvi zanimljiv događaj je novi projekt Proj4J (Apache License, Version 2.0), Java port Proj4 biblioteke koja je nedostajala Java FLOSS GIS stack-u. Zapravo ništa novo i ne nužno potrebno FLOSS GIS svijetu a autor Martin Davis na pitanje zašto još jedan port Proj4 biblioteke odgovara kako mu se to ucinilo cool (iz moje prespektive potpuno legitimno). Naime Java stack je do sada koristio origanalnu Proj4 (C) biblioteku, doduše sa JNI bindinzima.

Inače za one koji ne znaju Proj4 (MIT Licence) je jedna od prvih GIS biblioteka objavljenih pod nekom od slobodnih licenci još 1983 godine i kako je onaj "matematički dio" teorije projekcija prebačen u sasvim solidan komad software-a koji omogućava reprojekcije i "razumijevanje realnog prostora" u digitalnom obliku tako je i otvoren put za daljnji razvoj FLOSS GIS svijeta. Dosadašnji portovi su: Proj4js - JavaScript port zgodan jer se vrti na klijentu i omogućava reprojekciju vektora i prikaz koordinata u raznim projekcijama u realnom vremenu i CS-Map - C# port za .NET stack. Svi su "prigrljeni" pod zajedničkim projektom MetaCRS pod pokroviteljstvom OSGEO fondacije.

GeoMajas je još jedan proizvod iz Java svijeta koji ušao u OSGEO Inkubator. Nisam ga isprobao pa neću pisati o funkcionalnostima, ali čini se kao jako moderan i zanimljiv framework za razvoj WEB GIS aplikacija.

Od ostalih zanimljivosti izdvojio bih novi 1.7.0 release GDAL/OGR biblioteke i proširenje OpenGeo Suite paketa FLOSS GIS alata, a za zabavu pogledajte predavanje o budućnosti interneta i slobodnih podataka koje je odrzao Tim Barners-Lee na zadnjoj TED konferenciji.

Udruženi sadržaj