Croatia/Kratki vodici/GDAL OSM driver - kako do dnevno svjezih osm podataka

= GDAL OSM driver - kako do dnevno svježih OSM podataka =

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 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 (korištenjem drugih alata) u svojoj bazi imati dnevno ažurne OSM podatke, no nama kojima ovaj alat često koristimo, zbog mogućnosti skriptanja i python bindinga zgodno je imati i ovu mogućnost unutar GDAL-a. U principu load u PostgreSQL/PostGIS bi bio puno jednostavniji (u defaultnom buildu su svi driveri koji nam trebaju), ali kako se u zadnje vrijeme sve više koristi SQLite/Spatialite kao jako dobra zamjena za ESRI shapefile, test drivera je napravljen za ovaj format.

U sljedećem tekstu su upute kako pripremiti GDAL library te na koji način dohvaćati dnevno svježe openstreetmap podatke.

Koraci:


 * 1) Preuzimanje GDAL night snapshot-a
 * 2) Instalacija dependency-ja
 * 3) Kompajliranje GDAL-a
 * 4) Kreiranje SQLite baze
 * 5) Druge opcije

Preuzimanje GDAL night snapshot-a
Preuzimanje i raspakiravanje nightly snapshota GDAL library-ja

$curl http://www.gdal.org/daily/gdal-svn-trunk-2013.03.30.tar.gz | tar xvz

ili direktno iz svn trunk-a (driver za osm je trenutno u trunk-u)

$svn checkout https://svn.osgeo.org/gdal/trunk/gdal gdal

Instalacija dependency-ja
U primjeru OSM export konvertiramo u SQLite (tj. Spatialite) pa je prvo potrebno instalirati library-je koji su potrebni GDAL-u za konverziju:

$sudo apt-get install spatialite-bin expat curl sqlite3


 * 1) spatialite je prostorna extenzija za SQLite bazu
 * 2) curl nam omogućava čitanje podataka preko mreže kako ih nebi morali svaki put preuzimati na svoje računalo
 * 3) expat je c biblioteka za parsanje xml datoteka, a potrebna je za parsanje .osm datoteke (u ovom primjeru se ne koristi)

Na Ubuntu je zbog kompajliranja GDAL-a iz izvornog koda potrebno instalirati i headere za ova tri paketa (*-dev)

$sudo apt-get install libcurl4-gnutls-dev libexpat1-dev libspatialite-dev libsqlite3-dev

Kompajliranje GDAL-a
Kod kompajliranja GDAL-a treba explicitno uključiti podršku za curl i spatialite (--with), a instalacija je napravljena lokalno u $HOME/bin/gdal_1.10 direktorij (--prefix).

$./configure --with-spatialite=yes --with-curl=yes --prefix=$HOME/bin/gdal_1.10 $make $make install

Kreiranje SQLite baze
Pomoću ogr2ogr alata dohvaćaju se podaci i loadaju u SQLite bazu. $cd ~/bin/gdal_1.10/bin $./ogr2ogr -f SQLite -dsco spatialite=yes /tmp/osm_daily_stream.sqlite \ /vsicurl_streaming/http://data.osm-hr.org/croatia.osm.pbf \ --config OSM_CONFIG_FILE $HOME/bin/gdal_1.10/share/gdal/osmconf.ini -progress

gdje je:


 * 1) -f SQLite - output format će biti SQLite baza
 * 2) -dsco spatialite=yes - datoteka će imati podršku za prostorne podatke (bez ove opcije geometriju neće moći čitati GIS alati ali će se podaci loadati).
 * 3) /vsicurl_streaming/ - pbf datoteka se čita preko mreže pomoću curl-a
 * 4) OSM_CONFIG_FILE - GDAL nakon kompajliranja nije znao pronaći osmconf.ini datoteku te je na ovaj način direktno postavljen path do datoteke

ogr2ogr je kreirao osm_daily_stream.sqlite u kojem su podaci organizirani po tipu geometrije (slično kako to napravi osm2pgsql).



ogrinfo ispravno očitava osm_daily_stream.sqlite datoteku: /tmp/:$ogrinfo osm_stream.sqlite INFO: Open of `osm_stream.sqlite' using driver `SQLite' successful. 1: points (3D Point) 2: lines (3D Line String) 3: multilinestrings (3D Multi Line String) 4: multipolygons (3D Multi Polygon) 5: other_relations (3D Geometry Collection)

Druge opcije
Isto tako ovaj driver nam omogućuje da npr. OSM podake loadamo direktno u PostgreSQL, MySQL, MSSQL ili bilo koji OGR format, a također je jako korisna mogućnost preuzimanja samo dnevnih promijena, te uz pomoć --append --update opcije u bazu loadati samo preuzete promjene. Možete koristiti i ogr2ogr sql_statement (-sql) pa exportati samo dio podataka koji vam trebaju, ili exportati samo OSM POI-e ili samo POI-e unutar nekog BBOX-a i sl. Puno je mogućnosti, a za one koje interesira više obavezno pogledati što sve nudi ogr2ogr alat.

Za automatizaciju ovog procesa dohvaćanja i loada podataka dovoljno je gornju ogr2ogr naredbu staviti u cron.