Difference between revisions of "Croatia/Kratki vodici/GDAL OSM driver - kako do dnevno svjezih osm podataka"
Wiki-Darko (talk | contribs) m |
Wiki-Darko (talk | contribs) m |
||
Line 12: | Line 12: | ||
Koraci: | Koraci: | ||
− | |||
# Instalacija dependency-ja | # Instalacija dependency-ja | ||
+ | # Preuzimanje GDAL izvornog koda | ||
# Kompajliranje GDAL-a | # Kompajliranje GDAL-a | ||
− | # | + | # Čitanje pbf datoteke i konverzija u SQLite |
# Druge opcije | # Druge opcije | ||
+ | |||
== Instalacija dependency-ja == | == 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: | + | U primjeru OSM export konvertiramo u SQLite (tj. Spatialite) pa je prvo potrebno instalirati sve što je potrebno za kompajliranje a onda i biblioteke koje su potrebne GDAL-u za konverziju: |
<pre> | <pre> | ||
+ | $sudo apt-get install build-essential | ||
$sudo apt-get install spatialite-bin expat curl sqlite3 | $sudo apt-get install spatialite-bin expat curl sqlite3 | ||
</pre> | </pre> | ||
Line 37: | Line 39: | ||
− | == Preuzimanje GDAL | + | == Preuzimanje GDAL izvornog koda == |
Preuzimanje i raspakiravanje [http://www.gdal.org/daily/ nightly snapshot-a] GDAL biblioteke | Preuzimanje i raspakiravanje [http://www.gdal.org/daily/ nightly snapshot-a] GDAL biblioteke | ||
Line 63: | Line 65: | ||
− | == | + | == Čitanje pbf datoteke i konverzija u SQLite == |
Pomoću ogr2ogr alata dohvaćaju se podaci i loadaju u SQLite bazu. | Pomoću ogr2ogr alata dohvaćaju se podaci i loadaju u SQLite bazu. |
Revision as of 03:48, 31 March 2013
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:
- Instalacija dependency-ja
- Preuzimanje GDAL izvornog koda
- Kompajliranje GDAL-a
- Čitanje pbf datoteke i konverzija u SQLite
- Druge opcije
Instalacija dependency-ja
U primjeru OSM export konvertiramo u SQLite (tj. Spatialite) pa je prvo potrebno instalirati sve što je potrebno za kompajliranje a onda i biblioteke koje su potrebne GDAL-u za konverziju:
$sudo apt-get install build-essential $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 izvornog koda
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
Čitanje pbf datoteke i konverzija u SQLite
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.