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 koji 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/OGR biblioteku za konverziju iz .osm ili .pbf formata u .sqlite, te na koji način dohvaćati dnevno svježe openstreetmap podatke.
Koraci:
- Preuzimanje GDAL night snapshot-a
- Instalacija dependency-ja
- Kompajliranje GDAL-a
- Kreiranje SQLite baze
- Druge opcije
Instalacija dependency-ja
U primjeru OSM export konvertiramo u SQLite (tj. Spatialite) pa je prvo potrebno instalirati biblioteke koje su potrebne GDAL-u za konverziju:
$sudo apt-get install spatialite-bin expat curl sqlite3
- spatialite je prostorna extenzija za SQLite bazu
- curl nam omogućava čitanje podataka preko mreže kako ih nebi morali svaki put preuzimati na svoje računalo
- 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
Preuzimanje GDAL night snapshot-a
Preuzimanje i raspakiravanje nightly snapshot-a GDAL biblioteke
$curl http://www.gdal.org/daily/gdal-svn-trunk-2013.03.30.tar.gz | tar xvz
ili još bolje direktno iz svn trunk-a (driver za osm je trenutno u trunk-u)
$svn checkout https://svn.osgeo.org/gdal/trunk/gdal gdal
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:
- -f SQLite - output format će biti SQLite baza
- -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).
- /vsicurl_streaming/ - pbf datoteka se čita preko mreže pomoću curl-a
- OSM_CONFIG_FILE - GDAL nakon kompajliranja nije znao pronaći osmconf.ini datoteku te je na ovaj način direktno postavljen path do datoteke
Nakon toga ogr2ogr kreira osm_daily_stream.sqlite datoteku u kojem su podaci organizirani po tipu geometrije (slično kako to napravi osm2pgsql).
Provjerom 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 podatke loadamo direktno u PostgreSQL, MySQL, MSSQL, Oracle Spatial, ArcSDE ili bilo koji od OGR-a podržan format, a također je jako korisna mogućnost (iz osm.hr arhive) preuzimanja samo dnevnih promijena, te koristeći --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. drugim riječima sav svemir manipulacije prostornim podacima koji nam otvara GDAL/OGR.
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.