Zum Inhalt springen

So baut man eine immer aktuelle Karte ausgewählter Daten vor Ort aus der Openstreetmap

Konrad Lischka
Konrad Lischka
3 minuten gelesen
So baut man eine immer aktuelle Karte ausgewählter Daten vor Ort aus der Openstreetmap
Scrennshot dieser interaktiven Karte

Openstreetmap ist weit mehr als eine digitale Landkarte. Openstreetmap ist auch eine Datenbank mit viel strukturiertem Wissen über Orte, das jeder leicht abrufen und verarbeiten kann. So kann man zum Beispiel aus der Openstreetmap leicht Informationen ziehen und auf vielfältige Weise nutzen. Als Tabelle, als Karte, als Datensatz für eine eigene Visualisierung. Wie man diesen Datenschatz hebt und nutzt zeige ich an einem speziellen Beispiel, das man so aus Google Maps nicht abfragen kann: Zeige mir alle Kirchen einer bestimmten Konfession in einer Stadt samt der Gottesdienstzeiten (hier das Ergebnis der im Folgenden beschriebenen Arbeit). Mit den Werkzeugen kann auch ganz ähnliche Weise andere spezielle Abfragen nutzen.

1. Verschlagwortung kennenlernen

Bevor man sich an Abfragen versucht, sollte man sich möglichst breit darüber informieren, wie Menschen jene Dinge in der Openstreetmap verschlagwortet und kartiert haben, die man sucht. Ein paar bekannte Beispiele untersuchen, die Werte und Schlüssel notieren. Das geht einfach mit einer Suche auf Openstreetmap.org – auf der Karte kann man Objekte suchen (das Symbol mit Mauscursor und ? daneben) und die Attribute einzelner Objekt ansehen. Die Keys (z.B. denomination= / amenity= / service_times=) und values (der Wert hinter dem Fragezeichen) sollte man mit dem Werkzeug Taginfo suchen und im OSM-Wiki nachschlagen, um etwas mehr über die Praxis des Verschlagwortens und Kartierens zu lernen. So engt man sich nicht zur früh zu sehr ein, wie man wonach suchen kann.

Ich habe dabei zum Beispiel erfahren, dass bei katholischen Kirchen der Key Denomination sehr unterschiedlich genutzt wird. Statt als denomination=roman_catholic wie empfohlen gibt es für römisch-katholische Kirchen oft noch den Wert denomination=catholic – so was muss man wissen, bevor man Abfragen baut (mehr im Wiki).

2. Ort und Daten auswählen

Der Onlinedienst Overpass-Turbo ist das Universalwerkzeug zum Abfragen und Aufbereiten von Daten aus der Openstreetmap. Einen guten Überblick der Abfragesprache mit vielen Beispiele gibt das OSM-Wiki.

Die Abfrage ist mit Overpass in der Regel ganz leicht auf das Gebiet einer bestimmten Stadt einzugrenzen. Zum Testen einfach den Namen eurer Stadt, eures Regierungsbezirks oder des Bundeslandes bei Nominatim abfragen. Wenn der erste Treffer das gesuchte Gebiet zeigt, ist alles in Ordnung. Falls nicht, sind oft falsch gesetzte Wikipedia-Tags die Ursache (hier mehr zu so einem Fall und der Lösung). Überhaupt: Das Q&A-Forum der OSM ist extrem hilfreich bei einem konkreten Problem.

Für einen Überblick der Daten auf einer Karten habe ich für mein Beispiel letzten Endes diese Abfrage genutzt:

[out:json][timeout:25]; // fetch area “essen” to search in {{geocodeArea:essen}}->.searchArea; // gather results ( // query part for: “"andachtsstätte"” way["amenity"="place_of_worship"]["denomination"="roman_catholic"]["building"~"church|cathedral"](area.searchArea); ); // print results out body; >; out skel qt;

Das funktioniert in dem Fall nur, weil ich zuvor die Werte für „denomination“ vereinheitlich habe. Sonst hätte man auch hier eine oder-Abfrage mit catholic und roman_catholic wie bei building (~ statt = und die Oder-Werte mit | getrennt) formulieren müssen.

Außerdem: In der Regel sind Points of Interest in der OSM entweder als Punkt oder als Linie hinterlegt. Daher muss man in der Regel eine Anfrage formulieren, die alle Formen abfragt. Also wie oben, aber auch:

node["amenity"="place_of_worship"]["denomination"="roman_catholic"]["building"~"church|cathedral"](area.searchArea); way["amenity"="place_of_worship"]["denomination"="roman_catholic"]["building"~"church|cathedral"](area.searchArea); relation["amenity"="place_of_worship"]["denomination"="roman_catholic"]["building"~"church|cathedral"](area.searchArea);

3. Datenqualität mit einer Tabelle der Merkmale prüfen

Wenn bestimmte Informationen (zum Beispiel Öffnungszeiten) visualisieren will, braucht man zuvor den Überblick, was noch alles in der OSM fehlt. Da ist eine Tabelle hilfreich. Auch die lässt sich leicht mit Overpass erstellen. Statt einer Karte gibt man einfach CSV-Daten aus, die sich dann auch leicht mit einer Tabellenkalkulation veranschaulichen lassen.

Für mein Beispiel sieht die entsprechende Abfrage so aus.

[out:csv("name", "addr:street", "addr:housenumber", "addr:postcode", "addr:city", ::id, ::type, "service_times", "contact:website"; true; "|")][timeout:25]; // fetch area “essen” to search in {{geocodeArea:essen}}->.searchArea; // gather results ( // query part for: “"andachtsstätte"” way["amenity"="place_of_worship"]["denomination"="roman_catholic"]["building"~"church|cathedral"](area.searchArea); ); // print results out body; >; out skel qt;

Unter out ist beschrieben, welche Keys aus der OSM-Datenbank aufbereitet werden. Als Tabelle gedacht: Jeder Key ist eine Spalte, jede Zeile ist ein Datensatz auf dem ausgewählten Gebiet, für den alle Ausprägungen bei den Keys in der Spalte eingetragen werden. Also zum Beispiel der Name, die Straße, die OSM-ID (wichtig, wenn man einzelne Datensätze schnell in der OSM bearbeiten will).

4. Datenfeed aus Overpass-Abfrage erstellen

Wenn die Daten vollständig (und ggf. in der OSM ergänzt!) sind, kann man einen immer aktuellen Datenfeed einrichten. Dazu einfach die erste Overpass-Abfrage (Karte, nicht CSV) aufrufen. Export auswählen und als Format „Rohdaten direkt von Overpass-API“. Dann erhält man eine URL, die sich anderswo zum Import das Datenstroms nutzen lässt.

5. Datenfeed mit uMap visualisieren

Ein sehr hilfreiches und vielseitiger Werkzeug zur Darstellung von OSM-Daten ist uMap. Man richtet eine neue Karte ein, fügt eine Ebene hinzu und wählt hier den Datenfeed als Quelle aus. Das geht so: Ebeneneigenschaften > Ausgelagerte Daten und hier bei URL die in Schritt 4. erzeigte URL einfügen. Die grafische Aufbereitung lässt sich stark individualisieren. Man kann Datenpunkte einblenden, Zoom-Effekte nutzen, durch dickere Umrandungen die einzelnen Punkte auf der Karte stärker hervorheben (und für die Nutzung im Smartphone-Browser leichter tippbarer).

Blog

Konrad Lischka

Projektmanagement, Kommunikations- und Politikberatung für gemeinnützige Organisationen und öffentliche Verwaltung. Privat: Bloggen über Software und Gesellschaft. Studien, Vorträge + Ehrenamt.
Immer gut: Newsletter abonnieren


auch interessant

gelesen & gelernt: CO2-Preis, China, Schaltjahr im 56. Jahrhundert

Reality Check: Das EU-Emissionshandelssystem im Schweinezyklus Reality Check des Mantras, CO2-Preis über Emissionszertifikate sei per se das smarte Instrument: Binnen eines Jahres hat sich der Preis in der EU auf 52 € / Tonne halbiert. Weil die Industrieproduktion fällt. Und weil der CO2-Preis 2022 so hoch war und Fertigung gestrichen wurde. Was

gelesen & gelernt: CO2-Preis, China, Schaltjahr im 56. Jahrhundert

Bürokratiekostenindex abbauen!

Bürokratie... abbauen! Das ist die Autovervollständigung in allen Debatten. Wie viel haben wir davon eigentlich in Deutschland? Mehr als 2012? Wie viel? Wie misst man Bürokratie? Das Statistische Bundesamt pflegt den Bürokratiekostenindex. Der beginnt bei 100 im Jahr 2012 - und liegt im September 2024 bei 95,82. Weniger Bürokratie

Bürokratiekostenindex abbauen!

Kinderarbeit, Armut, Lieferketten - das muss man wissen

Der Streit in Deutschland um die EU-Lieferkettenrichtlinie macht mich wütend. Und zwar, weil ich in vielen Überschriften und Statements Kinderarbeit lese. Aber immer nur als bloßes Schlagwort, als Argument zum Punkten in der Auseinandersetzung. Aber nirgends die Details, was Kinderarbeit heute ist, wie viele betoffen sind, wie wir die Lage

Kinderarbeit, Armut,  Lieferketten -  das muss man wissen