Zusammen mit Riccardo Klinger (vormals bei Esri Deutschland, nun bei Allego) habe ich das Tool OSMQuery entwickelt, das es Nutzerinnen und Nutzern auf einfache Art erlaubt, freie Daten aus OpenStreetMap im ArcGIS-Umfeld abzufragen und weiterzuverwenden.
Dieser Text ist eine etwas ausführlichere, mit mehr Bildern und Links versehene und von mir noch etwas redigierte Version eines Artikels, den Riccardo Klinger und ich für die Zeitschrift arcAKTUELL verfasst haben. Der arcAKTUELL-Artikel ist hier in bester Qualität abrufbar und kann hier als PDF heruntergeladen werden.
Headerbild: Copyright OpenStreetMap-Beitragende, Kartografie CC BY-SA OpenStreetMap.org
OSM: eine reichhaltige Datenquelle
OpenStreetMap, oder kurz: OSM, ist weit mehr als nur eine Basiskarte und damit eine Alternative zu Anbietern und Frameworks wie Google Maps. OSM ist in erster Linie “ein freies Projekt, das frei nutzbare Geodaten sammelt, strukturiert und für die Nutzung durch jedermann in einer Datenbank [als Open Data] vorhält.”
OSM stellt also einen vielfältigen “Datenschatz” mit offener Lizenz und zwar unterschiedlich guter, aber prinzipiell globaler Abdeckung dar. Seit der Lancierung von OSM im Jahr 2004 haben mehrere Millionen Mitglieder weltweit Daten gesammelt: Strassen, Wege, Flussläufe, administrative Grenzen und mehr.
Bisher war der einfachste Weg, aus ArcGIS auf OSM-Daten zuzugreifen, die Toolbox “ArcGIS Editor for OSM”. Diese unterstützt sowohl den Import als auch die Konversion und Bearbeitung von Daten aus OSM. Eine gezielte Abfrage von OSM – zum Beispiel zu Points of Interest wie Bäckereien, zu Gebäuden oder Wanderwegen – ist auf diesem Weg aber erst nach Import eines ungefilterten und somit in der Regel (sehr) umfangreichen globalen oder regionalen OSM-Datensatzes möglich.
Ausserhalb von Desktop-GIS bietet die Overpass API eine Möglichkeit, im Browser mit einer speziellen Syntax OSM-Daten abzufragen und die Ergebnisse zum Beispiel in GeoJSON-Form herunterzuladen. Dieser Weg setzt aber Kenntnisse in der Abfragesprache Overpass QL, den in OSM enthaltenen Kategorien und nicht zuletzt in für Desktop-GIS nicht unbedingt alltäglichen Datenformaten wie GeoJSON, GPX oder KML voraus.
OSMQuery selbst nutzen
Sie können OSMQuery in ArcGIS for Desktop (getestet unter 10.4, 10.5 und 10.6) und in ArcGIS Pro nutzen. Dazu laden Sie OSMQuery kostenlos von GitHub herunter: github.com/riccardoklinger/OSMquery.
Wenn Sie mit git und GitHub nicht so vertraut sind, betätigen Sie dazu am einfachsten die grüne Schaltfläche “Clone or download” und anschliessend “Download ZIP”. Sobald Sie das ZIP-File extrahiert haben, können Sie mit ArcCatalog bzw. dem ArcCatalog-Fenster zur Toolbox navigieren und diese verwenden.
OSMQuery ist unter der freien Lizenz GNU General Public License v2.0 (GPL-2.0) veröffentlicht und damit kostenlos nutzbar. Die Toolbox umfasst zwei Tools, um OSM-Daten herunterzuladen: “Get OSM Data” und “Get OSM Data (Expert Tool)”. Mit letzterem können Abfragen direkt in der Overpass QL geschrieben werden.
Zusammenarbeit dank sozialen Netzwerken
Diese Ausgangslage hat Riccardo Klinger auf die Idee gebracht, mit OSMQuery eine einfach zu nutzende Python-Toolbox für Abfrage und Bezug von OSM-Daten in ArcGIS zu entwickeln. Eine erste Implementation hatte er schnell programmiert. Danach veröffentlichte er seinen Code auf GitHub und hat darüber auf Twitter berichtet.
Dadurch wurde ich auf OSMQuery aufmerksam und es hat sich, ohne dass Riccardo und ich uns davor näher als “vom Sehen” auf Twitter her kannten, eine Zusammenarbeit ergeben. Zusammen konnten wir länderübergreifend auf agile Weise OSMQuery weiterentwickeln. Ermöglicht wurde dies massgeblich durch git bzw. GitHub, mittels Erfassen von Issues, Ideen und Feature Requests und dem gemeinsamen (Weiter)Entwickeln der Funktionalität in Python. So haben wir über den Zeitraum von nur acht Tagen privat neben dem Tagesgeschäft eine gebrauchsfertige Python-Toolbox für die Abfrage von OSM-Daten erstellt.
Umsetzung
Abfrage
Zur Erstellung des Backends für OSMQuery wurden Web-Calls von Abfragen im Overpass-Portal overpass-turbo.eu analysiert. Dies zeigte, dass POST-Requests abgesetzt werden, welche jeweils ein JSON-Objekt enthalten mit der von der Nutzerin oder dem Nutzer formulierten Abfrage in Form eines Overpass QL-Strings – beispielsweise:
( node ["shop"="bakery"](49.378,8.638,49.435,8.746); );
für eine Anfrage nach Bäckereien im Umkreis Heidelbergs.
Key-Value Tags in OSM
Die OSM-Datenbank ist nicht eine klassisch strukturierte Datenbank mit vordefinierten Datenmodellen für verschiedene Objekt-Kategorien. Stattdessen setzt OSM auf eine bottom-up definierte und veränderliche Datenstruktur (mitunter ”folksonomy” genannt von ”folk taxonomy”). Diese beschreibt Objekte mit sogenannten Tags, etwa “shop”=”bakery” im Beispiel oben. Tags bestehen aus Schlüsseln (keys; im Beispiel “shop”) und Werten (values; im Beispiel “bakery”). Es handelt sich daher um sogenannte key-value tags.
Diese Struktur macht die OSM-Datenbank sehr flexibel, setzt für Abfragen aber auch einiges Vorwissen über gültige bzw. üblicherweise verwendete Keys und Values voraus. Für OSMQuery wurde deshalb eine Liste mit häufig auftretenden Tags (Key-Value-Kombinationen) erstellt und diese als Konfigurationsdatei abgelegt. Diese Konfigurationsdatei wird von OSMQuery ausgelesen und den Nutzerinnen und Nutzern in Dropdown-Menüs für “OSM tag key” (Schlüssel) und “OSM tag value” (Wert) angeboten.
Nutzerinnen und Nutzer von OSMQuery können pro Abfrage jeweils einen Schlüssel und einen, mehrere oder mittels Wildcard beliebige Werte abfragen.
Räumliche Filterung
Zusätzlich zur thematischen Eingrenzung mit OSM-Tags erlaubt OSMQuery die Spezifikation von räumlichen und zeitlichen Analysefenstern: Die räumliche Ausdehnung der Abfrage kann wie in anderen ArcGIS-Tools zum Beispiel als der aktuell sichtbare Ausschnitt oder die Ausdehnung einer Feature Class spezifiziert werden. Via Einbindung des OSM-basierten Geocodierungsdiensts Nominatim können aber auch Toponyme wie “Zurich, Switzerland” im Hintergrund geocodiert und dann direkt als Area-of-Interest für OSMQuery genutzt werden.
Die Overpass API verfügt über ein Timeout und eine Speicherlimitierung. Es ist also nicht ratsam, für häufige auftretende Objekte Abfragen über ganze Länder oder (etwa in Deutschland) ganze Bundesländer zu formulieren. Für diesen Zweck eignen sich OSM-Extrakte, wie sie von diversen Organisationen bereitgestellt werden, besser.
Zeitliche Filterung
Dadurch, dass die Daten in OSM historisiert abgelegt sind, kann OSMQuery Datenabfragen auch für bestimmte von der Anwenderin oder dem Anwender definierte Zeitpunkte vornehmen.
Resultate
Die aus OSM extrahierten Geodaten werden als temporäre Feature Layer (einer pro gefundenem Geometrietyp) in das Table of Content von ArcMap oder ArcGIS Pro eingefügt. Von dort können sie bei Bedarf in gängigen Datenformaten abgespeichert und weiterverarbeitet werden.
Überführung von OSM-Daten in ein GIS-Datenmodell
Für das Aufbereiten der Resultate in Form von Feature Layers muss OSMQuery die flexible Key-Value-Struktur von OSM in eine starre GIS-Datenstruktur umsetzen. Dabei transformiert OSMQuery sämtliche gefundenen Keys in Attribute, zu denen dann die jeweiligen Values als Attributwerte gemappt werden. An einem Beispiel wird dies klarer: Fragt eine Nutzerin Banken (“amenity”=”bank”) und Bankomaten (ATMs; “amenity”=”atm”) aus OSM ab, enthält der resultierende Datensatz die Vereinigungsmenge aller gefundener OSM-Keys als Attribute. Er enthält somit im Allgemeinen sowohl das Attribut “opening_times” (von den Banken herrührend und nur für diese befüllt) als auch das Attribut “currencies” (nur für Bankomaten befüllt).
Anwendungsbeispiele
Freizeitnutzungen und Fahrradverkehr in Zürich
Mit OSMQuery kann man sich schnell einen Überblick verschaffen über die Lage von Points- (bzw. auch Lines- oder Areas-)-of-Interest. Im Beispiel wurde OSMQuery genutzt, um Daten zu vier “amenity”-Kategorien von OSM – nämlich Cafés, Restaurants und Mietstationen bzw. Abstellplätze für Velos/Fahrräder) herunterzuladen und einer Karte zu visualisieren.
Die verschwundene Insel von Schmöckwitz
Am 16. August 2018 berichtete die Berliner Zeitung unter dem Titel “Insel weggebaggert” darüber, dass ein Investor im Hafenbecken von Schmöckwitz in Berlin widerrechtlich eine Insel abgetragen habe. Leider gab es zu jenem Zeitpunkt keine aktualisierten Satellitenbilder von der Situation. Die Community hatte aber OSM bereits nachgeführt. Mit OSMQuery konnten die entsprechenden Daten vor und nach dem Vorfall einfach heruntergeladen und aufbereitet werden. So wurden ein grafischer Vergleich und eine Visualisierung der Änderung möglich. Die Analyse aufgrund dieser Daten zeigte, dass im fraglichen Zeitraum circa 800m² Land abgetragen wurden.
Haben Sie Fragen zu OSMQuery, zu OSM, generell zu Daten oder Analysewerkzeugen? Kontaktieren Sie mich unverbindlich.