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

From OSGeo
< Croatia
Revision as of 16:26, 30 March 2013 by Wiki-Darko (talk | contribs)
Jump to navigation Jump to search


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 tipa geometrije (slično kako to napravi osm2pgsql).

Prikaz OSM podataka iz SQLite baze dobivene pomoću ogr2ogr alata

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.