
Roman Schaller
Softwareentwickler und -architekt, LLM-Experte, Unternehmer
OpenStreetMap ist ein Community-Projekt ähnlich wie Wikipedia. Es wurde 2006 (also 5 Jahre nach Wikipedia) gegründet. Mittlerweile ist es die grösste freie Geodatenbank der Welt. Wir schauen uns an, wie man programmatisch Daten von OpenStreetMap abfragen kann.
Publiziert am von Roman Schaller
OpenStreetMap ist ein Community-Projekt ähnlich wie Wikipedia. Es wurde 2006 (also 5 Jahre nach Wikipedia) gegründet. Mittlerweile ist es die grösste freie Geodatenbank der Welt.
Die Datenbank enthält Unmengen von Daten. Um den Detaillierungsgrad etwas zu veranschaulichen ist hier eine kleine Liste von ein paar Datentypen, die gepflegt werden:
Weil da so viel frei verfügbar ist, basieren auch ganz viele Kartendienste mittlerweile auf dieser Datenbank.
Die Datenbank besteht grundsätzlich aus Nodes (Punkten), Ways (Linien) und Beziehungen. Diese haben alle Unmengen von Eigenschaften. Eine Herausforderung ist es, erst einmal herauszufinden, an welchen Eigenschaften wir überhaupt interessiert sind. Das lässt sich gut über https://www.openstreetmap.org herausfinden.
Anschliessend gehts ans Eingemachte: die Queries. Grundsätzlich gibt es zwei APIs:
Mit Overpass kann man Live-Abfragen machen. Es ist aber auch möglich, damit relativ grosse Datasets herunterzuladen und dann offline zu verwenden.
Möglicherweise dürfen wir in einem künftigen Projekt Daten aus OpenStreetMap verwenden. Darum habe ich hier schon mal ein paar Beispiele zusammengestellt, um ein Gefühl dafür zu bekommen. Mit https://overpass-turbo.eu/ kann man Queries erstellen und ausführen. Natürlich gibt es auch APIs für JavaScript. Schlussendlich ist es ein einfaches Web-API, das auch ohne spezielle Client-Library gut zugänglich ist.
Folgendes Query markiert alle Kreisel in der Aktuellen Ansicht von Overpass:
Wir können in runden Klammern auch angeben, wo gesucht werden soll. In diesem Fall ist das ein Umkreis von 1000 Metern ausgehend von einem GPS-Punkt:
Das Ergebnis von vorhin können wir auch weiterverarbeiten. Wir nehmen hier alle Nodes (Punkte) des Weges. Diese verarbeiten wir wieder weiter und holen uns alle Wege, bei denen die Punkte irgendwie involviert sind.

Softwareentwickler und -architekt, LLM-Experte, Unternehmer