Nutzen von OpenStreetMap-Daten in GIS
*** OUTDATED ***
Wichtige Weblinks:
- Vortrag Lars Ligner 2017
- Vortrag Stefan Kelller an FOSSGIS 2013.
- OpenStreetMap für Landschaftsarchitekten und OpenStreetMap für Raumplaner
- POI-Daten-Workshop
- Getting Data out of OpenStreetMap into Desktop GIS
Auf dieser Seite werden Anwendungsbeispiele mit Arbeitsabläufen (Workflow) mit Szenarien gezeigt, um Daten von OpenStreetMap (OSM) in GIS als Vektordaten-Layer oder als Geo-Webservice für Karten nutzen zu können. Die Nutzer sind u.a. technische Sachbearbeiter CAD-Operateure, Raumplaner, Landschaftsplaner, Naturschützer oder Förster.
Überblick
Folgendes ist wichtig für das Verständnis von OpenStreetMap-Daten:
- Das Datenschema ist nur lose vorgegeben; dafür gibt es die sog. Tags.
- Die Geometrie besteht aus einem topol. Netzwerk mit Nodes und Way (keine eigentlichen Areas/Polygone):
- Linien (Ways) verweisen auuf Nodes (haben selber also keine Koordinaten).
- Flächen in OSM sind entweder geschlossene Ways (mit entsprechendem Tag, z.B. natural=water oder building=yes) oder sog. "Multipolygone", d.h. Relationen zu Ways (Testcases for converting OpenStreetMap data into GIS world formats: [1])
Es gibt folgende Möglichkeiten aus Sicht GIS um OSM-Daten zu kommen:
- OSM-Rohdaten exportieren (vgl. unten) und ein weiteres Tool verwenden um die Daten in ein GIS-Format zu konvertieren.
- Direktes Exportieren mittels Webdienste
- Selber programmieren.
Vgl. dazu auch einzelne Beispiele unten.
OSM-Rohdaten herunterladen
Es gibt folgende Export-Möglichkeiten inkl. Webservices für das Rohdaten-Format von OSM (RAW OSM-XML), d.h. in OSM-Datenstruktur:
- XAPI-basierte Webservices: Siehe v.a. den XAPI URL Builder mit entsprechendem Osmosis-Befehl für das Overpass-API, das jxapi.openstreetmap.org und für rabler.ru (die MapQuest-Daten seien alt).
- Die Startseite von OpenStreetMap hat eine Export-Funktion im OSM/XML-Format (reiner Download).
- Mit derJOSM-Desktopapplikation gibt es einen Export nach OSM/XML.
- OpenStreetMapData.com - Speziell geeignet für die Extraktion für Länder-, Gewässer- und Küsten-Grenzen der Welt.
Zuerst eine .OSM-Datei in ein lokales Verzeichnis kopieren, d.h.
- Kleinere Bereiche können online über die OSM-Startseite (d.h. das API) heruntergeladen werden.
- Grössere Ausschnitte können über Webdienste oder die JOSM-Desktopapplikation als OSM/XML oder direkt in einem GIS-Format exportiert werden (vgl. unten).
- Ansonsten gibt es noch ganze vorbereitete Datensätze...
- solche die in Mirrors mit Snaphsots nach Kontinent und Land geordnet angeboten werden. Siehe Planet.osm Snapshots.
- Bereits aufbereitete Shapefiles herunterladen von Geofabrik: Siehe OSM#OSM_zu_Shapefiles_konvertieren
- Der gesamte OSM-Datensatz kann ebenfalls über Planet.osm Snapshots heruntergeladen werden.
Dann muss man die Daten in ein GIS-Format konvertieren (z.B. mit OGR oder GeoConverter), falls die Daten im OSM/XML-Format sind. Man beachte auch, dass man die Daten direkt analysieren kann, vgl. dazu unten HowTo_OpenStreetMap#OSM-Daten_analysieren oder das PostGIS-Terminal.
Tipps zu OSM-Daten exportieren:
Tipp 1: Das Overpass-API ist ein schnelles und aktuelles API für den Online-Zugriff/Export von OSM-Daten (ganzer Planet); siehe dazu Overpass Turbo und die Overpass API-Doku. mit Verweis auf Server.
Tipp 2: siehe dazu XAPI mit demden XAPI URL Builder.
Tipp 3: Es gibt eine OSM2WEB-Instanz [2] auf http://www.gis-hosting.lu/examples/de/ (ganzer Planet). Hier ein Beispiel mit folgenden 'Parametern' (z.T. als URL-Subdirectories):
- Geometrie = points (es gint noch lines und polygons)
- Exportformat = GeoJSON
- bbox = (Region Zürichsee min/max im selben SRID wie der SRID-Parameter,
- SRID = 4326 (d.h WGS84, Default SRID/CRS ist EPSG 3857/9009l3)
Beispielaufruf: http://www.gis-hosting.lu/osm2web/export/points/amenity/hospital.geojson?bbox=8.420,47.072,9.088,47.431&srid=4326 (*)
Soll auch für Webapplikationen geeignet sein, ist aber auf eine einzige key=value-Bedingung beschränkt, ie z.B. http://www.gis-hosting.lu/osm2web/export/points/cuisine/pizza.geojson?bbox=8.420,47.072,9.088,47.431&srid=4326
(vgl. [3] und die Tipps unten).
OSM-Daten (lokal) in ein GIS-Format konvertieren
Die meisten der folgenden Konverter werden im SVN-Repository des OSM-Projekts verwaltet:
- osm2pgsql - Ein OSM-Daten to PostgreSQL/PostGIS-DB Converter und Loader. Siehe OSM-Technisches.
- Osmosis - Importiert OSM planet files (OSM, MySQL, PostgreSQL). Siehe OSM-Technisches.
- Osm2Csv - Converts an OSM planet file to files nodes.csv, ways.csv and waytags.csv (und dann...?).
- Osmxapi (siehe unten).
Weitere:
- Ein OSM-zu-GML-Skript (XSLT), das dann weiter z.B. nach Shapefile verarbeitet werden kann, z.B. mit OGR und GeoConverter: Siehe [4]
- Osm2Csv - Converts an OSM planet file to files nodes.csv (id,lat,lon,timestamp,taglist) and ways.csv (id,timestamp,taglist) and waytags.csv (way-id,key,value). It does not use more memory if planet.osm is larger. It uses Java and the MinXML parser.
- SQLite/SpatiaLite mit Hilfe der SpatiaLite-Tools 'spatialite_osm_map' und QGIS
- FME
OSM-Daten direkt als GIS-Format herunterladen
Vektordaten von OSM können in GIS genutzt werden, gegeben man hält die ODbL-Lizenz ein und kennt die Besonderheiten von [[OSM], d.h. das spezielle Geometrie- und Tags-Schema. Für den Download der ganzen Welt in diesem Format siehe 'Downloading Data' im offiziellen OSM Wiki.
Es gibt inzwischen immer mehr Werkzeuge, mit denen man OSM-Daten selektieren (mind. räumlich) und als GIS-taugliches Format exportieren kann.
Direktes Exportieren mittels Webdienste in verschiedene GIS-Formate, wie z.B. Spatialite, Shapefile, GeoJSON, KML etc.:
- OSMaxx
- OSM2GIS - Webapplikation mit direktem Download und optionaler Transformation in die Formate Shapefile, MapInfo, KML, GML, SQLite (beschränkt auf einen Bereich von der Breite des Zürichsees und eine Konversion alle 30 min.)
- OSM2WEB (Repository) - Python-basierter RESTfull Webservice mit einer Datenbankstruktur analog EOSMDBOne (osm2pgsql, PostGIS), der GeoJSON und KML zurückliefern kann. Siehe oben.
Nachfolgend ein Beispiel "Rollstuhlparkplätze der Schweiz":
- Das Tagging-Schema dafür ist
"amenity=parking" - und (logisch) "capacity:disabled" ~* "[0-9]|yes|unknown" (das ist rechts ein sog. "regulärer Ausdruck"). (es gibt nicht nur "capacity:disabled=yes" sondern auch "capacity:disabled=2" etc.)
- Siehe dazu die OSM-Wiki-Seite.
Variante PostGIS-Terminal (nur WKT und Schweiz)
1. Aufrufen von http://labs.geometa.info/postgisterminal, dann Copy&Paste folgender SQL-Anfrage in das Query-Fenster:
SELECT ST_AsText(way) geom, COALESCE(name, )||' '||osm_id AS label FROM osm_poi WHERE tags @> hstore('amenity', 'parking') AND hstore("tags")->'capacity:disabled' ~* '[0-9]|yes|unknown' LIMIT 9999
2. Dann anschauen.
3. Falls Daten (im WKT-Format) gewünscht sind, den SELECT-Teil ersetzen mit "SELECT name, osm_id, gtype FROM ..." und Copy&Paste des Konsolen-Inhalts machen.
Daten der Schweiz (Stand Vorgestern). Kennt Punkte (POIs), Linien und Flächen; POI-Tabelle enthält sowohl Punkte wie auch Flächen. Kennt kein Export und kann höchstens GeoJSON. Mehr zum PostGIS_Terminal#Help.
Variante OSMaxx
- OSMaxx
- Download z.B. als GeoPackage.
Variante Overpass Turbo (nur im Browser und BBox)
- Query (Permalink): http://bit.ly/WCd6RK
- Interaktive Karte: http://bit.ly/X8pcmK
- OpenLayers-Karte: http://bit.ly/XRN6kD
- Download als GeoJSON und als Bild.
Schweiz ist nur als BBox abgegrenzt, gibt also mehr Daten zurück als gewünscht; JSON ist grössenmässig beschränkt (Browserkapazität) nur in Overpass Turbo verfügbar (per Copy&Paste). Etwas gewöhnungsbedürftige Query-Syntax. Hier mehr zu Overpass.
POI-Daten nutzen mit OpenPOIMap
Überblick:
- Benutzer erfassen POIs im öffentlichen OpenStreetMap (OSM, siehe unten).
- Am folgenden Tag sind die neuen Daten in OpenPOIMap verfügbar (in EOSMDBOne und zwar ab ca. 8 Uhr diejenigen Daten, die in OSM vor ca. 19:00 Uhr erfasst wurden).
- Benutzer können POIs in OpenPOIMap direkt anschauen und interaktiv abfragen
- Benutzer können die POIs direkt ins GIS integrieren mit Hilfe des OpenPOIMap Geo-Webservice (WFS)
- Benutzer können POIs von OpenPOIMap herunterladen und je nach Format nutzen z.B. in...
- Google Earth (KML)
- GIS (Shapefile)
- Navi/GPS (GPX)
Arbeitsschritte:
- POIs in OpenPOIMap visualisieren und interaktiv abfragen (=> Tab 'Home')
- Schritt 1: In OpenPOIMap Tab 'Home' einen Ausschnitt auf der Karte auswählen (Zoom, Pan & Geogr. Suche).
- Schritt 2: Query-Beispiel auswählen (z.B. Hospitals/Spitäler) oder mit Hilfe von Tab 'Query Builder' eine Query selber definieren.
- Schritt 3: Mit 'Show' das Resultat auf der Webkarte direkt ansehen.
- Hinweis: Die POIs auf der Webkarte lassen sich durch Klicken auf ein Punktsymbol interaktiv abfragen. Ev. muss man näher hineinzoomen.
- POIs herunterladen (=> Tab 'Download'):
- Schritt 1: In OpenPOIMap Tab 'Home' einen Ausschnitt auf der Karte auswählen (Zoom, Pan & Geogr. Suche).
- Schritt 2: Query definieren (z.B. in key 'Spital' eingeben und 'amenity=hospital' bestätigen).
- Schritt 3: Export-Format wählen.
- Schritt 4: Mit 'Download' Datei lokal speichern und damit selber weiterverarbeiten.
- Hinweis: Es wird hier gemäss Vorgabe nur der Ausschnitt heruntergeladen. Durch Klick auf eine Checkbox kann auch der Bereich der ganzen Datenbank, d.h. die Schweiz, verwendet werden.
- POIs als Webservice (WFS) nutzen (=> Tab 'Webservices'):
- Schritt 1: Zuerst in Tab 'Home' die Query definieren, (z.B. in key 'Spital' eingeben und 'amenity=hospital' bestätigen).
- Schritt 2: In Tab 'Webservices' die Basis-URL des WFS-Webservices kopieren und im eigenen System eingeben.
- Hinweis: Es wird hier immer die ganze Datenbank, d.h. die Schweiz, verwendet.
Routing-Daten nutzen mit ArcGIS oder QGIS
- QGIS: Import in SQLite/SpatiaLite mit Hilfe der SpatiaLite-Tools 'spatialite_osm_net'.
- ArcGIS: tbd.