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 je omogućila dnevni OSM export podataka za područje RH (hvala Hrvoju B.). Korištenjem i drugih alata moguće u svojoj bazi imati dnevno ažurne OSM podatke, ali kako GDAL koristim svakodnevno (meni je jedan od korisnijih GIS alata) zbog mogućnosti skriptanja i python bindinga zgodno je imati ovu mogućnost unutar GDAL-a. U principu load u PostgreSQL bi bio puno jednostavniji, ali kako se u zadnje vrijeme sve više koristi SQLite kao jako dobra zamjena za ESRI shapefile (a i ja ga sve vise koristim), 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:
- Preuzimanje GDAL night snapshot-a
- Instalacija dependency-ja
- Kompajliranje GDAL library-ja
- Kreiranje SQLite baze
- 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
- spatialite je prostorna extenzija za SQLite bazu
- curl nam omogućava čitanje podataka preko mreže da 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 (-dev)
$sudo apt-get install libcurl4-gnutls-dev libexpat1-dev libspatialite-dev libsqlite3-dev
Kompajliranje GDAL library-ja
Kod kompajliranja GDAL-a treba explicitno uključiti podršku za curl i spatialite (--with-xxx), a instalacija je napravljena lokalno u $HOME/bin/gdal_1.10 direktorij (--prefix).
$./configure --prefix=$HOME/bin/gdal_1.10 --with-spatialite=yes --with-curl=yes $make $make install
Kreiranje SQLite baze
$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 \ -progress --config OSM_CONFIG_FILE $HOME/bin/gdal_1.10/share/gdal/osmconf.ini
- -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.
- /vsicurl_streaming/ - pbf datoteka se dohvaća 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
ogr2ogr je kreirao osm_daily_stream.sqlite u kojem su svi podaci po tipovima geometrije (slično kako to napravi osm2pgsql) koji je spreman za korištenje.
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.