DE:Overpass API
Servers status · Versions · Development · Technical design · Installation · XAPI compatibility layer · Public transport sketch lines · Anwendungen · Source code and issuesOverpass turbo · Wizard · Overpass turbo shortcuts · MapCSS stylesheets · Export to GeoJSON · mehr (Deutsch) · Development · Source code and issues · Web siteOverpass Ultra · Examples · Overpass Ultra extensions · MapLibre stylesheets · URL Params · mehr (Deutsch) · Source code and issues · Web site
| Overpass API | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Autor: | drolbr/Overpass-API/graphs/contributors GitHub | |||||||||||||||||||
| Lizenz: | GNU AGPL v3 (kostenlos) | |||||||||||||||||||
| Status: | Aktiv | |||||||||||||||||||
| Version: | 0.7.62.4 (2024-11-21) | |||||||||||||||||||
| Webseite: | overpass-api.de | |||||||||||||||||||
| Quellcode: | drolbr/Overpass-API GitHub | |||||||||||||||||||
| Programmiersprache: | C++ | |||||||||||||||||||
|
Datenbank-Engine zur selektiven Abfrage von Daten aus der OSM-Hauptdatenbank |
||||||||||||||||||||
| ||||||||||||||||||||

Einführung
Die Overpass API (formals bekannt als OSM Server Side Scripting, oder OSM3S vor 2011) ist eine read-only API die individuell ausgewählte Bestandteile aus den OSM Karten-Daten wiedergibt. Sie fungiert als eine Datenbank über das Web: Der Anwender sendet eine Abfrage an die API und erhält einen Datensatz, der der Abfrage entspricht, zurück.
Im Gegensatz zur Haupt- (Main-) API (Seite auf Englisch verlinkt, da die Deutsche noch nicht komplett übersetzt ist), welche für das Editieren optimiert ist, ist die Overpass API für Datennutzer optimiert, die ein paar Elemente auf einen Blick, oder bis zu ungefähr 10 Millionen Elemente innerhalb von ein paar Minuten benötigen, welche in beiden Fällen durch Suchkriterien wie z. B. Ort, Objekt-Typ, Eigenschaften, Umgebung, oder eine Kombination dieser ausgewählt werden. Es fungiert als eine Hintergrunddatenbank für verschiedene Dienste (Seite bisher nur auf Englisch).
Für eine detaillierte Einführung kann man sich das komplette Benutzerhandbuch ansehen.
Zusätzlich existiert ein Overpass QL Sprach-Leitfaden. Es ist sehr zu empfehlen, sich mit verschiedenen Funktionen mittels overpass turbo vertraut zu machen, einer interaktiven, webbasierte Oberfläche. Für Altanwendungen existiert auch ein "Compatibility Layer", um einen reibungslosen Übergang von XAPI zu bieten.
Schnell-Start (60 Sekunden): Interaktive Oberfläche
(Wenn Rohdaten von Interesse sind, siehe Schnell-Start (60 Sekunden): für Entwickler/Programmierer weiter unten)
- Öffne overpass turbo in einem neuen Tab/Browserfenster
- Klicke auf das "Wizard" (Zauberstab) Symbol
- Schreibe etwas wie "Hotel in Berlin" in die Textbox
- Klick "Abfrage erstellen und ausführen"
- Auf der linken Seite befindet sich die formelle Abfrage (siehe viele weitere Beispiele, und das komplette Handbuch zur verwendeten Sprache)
- Auf der rechten Seite befindet sich eine Karte mit den Ergebnissen!
Schnell-Start (60 Sekunden): für Entwickler/Programmierer
Beachte: Diese Methode gibt Rohdaten wieder und auch wenn diese Beispiel Javascript mit einer JSON Ausgabe verwendet, funktioniert die API mit jeglicher Sprache und hat viele verschiedene Ausgabe-Formate.
- (Den Fehlercode "Error: encoding error: Your input contains only whitespace." brauchst du nicht zu beachten. Er bedeutet nur "es wurde keine Abfrage gestellt")
- Öffne https://overpass-api.de/api/interpreter in einem neuen Tab/Browserfenster
- Öffne die Konsole deines Browsers, während du auf der Seite bist
- Kopiere den Code von unten (und drücke ↵ Eingabe)
var query = `
[bbox:30.618338,-96.323712,30.591028,-96.330826]
[out:json]
[timeout:90]
;
way(30.626917110746, -96.348809105664, 30.634468750236, -96.339893442898);
out geom;
`;
var result = await fetch(
"https://overpass-api.de/api/interpreter",
{
method: "POST",
body: "data=" + encodeURIComponent(query),
}
).then((data) => data.json());
console.log(JSON.stringify(result, null, 2));
- Anschließend sollte etwas wie folgt zu sehen sein:
{
version: 0.6,
generator: "Overpass API 0.7.61.5 4133829e",
osm3s: {
timestamp_osm_base: "2023-10-17T15:22:15Z",
copyright: "The data included in this document is from www.openstreetmap.org. The data "...
},
elements: [
{
type: "way",
id: 20714383,
bounds: {
minlat: 30.6277358,
minlon: -96.341929,
maxlat: 30.628834,
maxlon: -96.340566
},
nodes: [ 222454378, 4204990218, 222454386 ],
geometry: [
{ lat: 30.6277358, lon: -96.340566 },
{ lat: 30.6278459, lon: -96.3407026 },
{ lat: 30.628834, lon: -96.341929 }
],
tags: {
highway: "service",
name: "W-X Street",
postal_code: "77840",
"tiger:county": "Brazos, TX"
}
},
...
- Die Ausgabe wird normalerweise gekürzt angezeigt. Um die komplette Ausgabe zu sehen:
- Gehe auf den "Network" Reiter.
- Wähle die letzte Zeile aus.
- Gehe zum inneren Reiter "Response".
Öffentliche Overpass API Anwendungen
Um kleine und gut skalierbare OSM-Hauptdienste zu unterstützen, wird die Overpass API als Drittanbieterdienst betrieben. Folgende öffentlich zugängliche Anwendungen können genutzt werden:
| Name | Deckungsgebiet | Endpunkt | Version | Altdaten | Hardware | Munin | Nutzungsbedingungen |
|---|---|---|---|---|---|---|---|
| Haupt Overpass API Anwendung | Global | https://overpass-api.de/api/interpreter | 0.7.61.5 4133829e | Ja | 2 Server, mit jeweils 16 Prozessor-Kernen, 128 GB RAM, NVME-SSD | 12 | Du kannst mit Sicherheit davon ausgehen, dass du niemand anderen beeinträchtigst, wenn du weniger als 10.000 Abfragen pro Tag und weniger als 1 GB Daten pro Tag herunterlädst [1]. |
| VK Maps Overpass API Anwendung (Russland) | Global | https://maps.mail.ru/osm/tools/overpass/api/interpreter | 0.7.57.1 | Ja | 2 Server mit jeweils 56 Prozessor-Kernen, 384 GB RAM, SSD | - | Nutze unsere Anwendungen gerne für jedes Projekt. Zurzeit gibt es keine Beschränkungen für Abfragen, und wir werden versuchen, diesen Ansatz auch in Zukunft beizubehalten. Overpass turbo wird auch bereitgestellt unter https://maps.mail.ru/osm/tools/overpass/ |
| Schweizer Overpass API Anwendung | Nur Schweiz | https://overpass.osm.ch/api/interpreter | 0.7.59.1 2a9d9642 | Nein | 12 Kerne, 64 GB RAM, Festplatten | ? | Frag User:Datendelphin |
| Private.coffee Overpass Anwendung | Global | https://overpass.private.coffee/api/interpreter | 0.7.61.8 b1080abd | Ja | 4 Server mit jeweils 20 Kernen, 256 GB RAM, SSD | - | Bisher bekannt als overpass.kumi.systems. Nutze unsere Anwendungen gerne für jedes Projekt. Es gibt keine Beschränkungen. Bitte benachrichtige uns vorab, wenn du vorhast, unsere Anwendung in groß angelegten Projekten zu verwenden. Funktionsprobleme/Fragen/Anmerkungen? Bitte schreibe uns eine E-Mail. |
| Japan Overpass API Anwendung | Global | https://overpass.osm.jp/api/interpreter | 0.7.62.2 | Nein | 24 Kerne, 64 GB RAM, Festplatten | - | Wir führen derzeit einen öffentlichen Test durch. Die Anwendung kann ohne vorherige Ankündigung gewartet oder ausgesetzt werden. Frag User:nyampire |
Ein Overpass API Endpunkt ist auch für OpenHistoricalMap (Seite bisher nur auf Englisch) verfügbar. Siehe OpenHistoricalMap/Overpass (Seite bisher nur auf Englisch) für eine Anleitung zum Zugriff auf diesen Endpunkt und Beispiele für OpenHistoricalMap Abfragen.
Abfragen an die Overpass API sind im XML oder Overpass QL Format. Siehe unten für eine Erklärung der Begriffe. Du kannst die Overpass turbo Anwendung benutzen, um für die oben genannten Overpass API Anwendungen Abfragen zu erstellen und anzuzeigen.
Overpass API bietet auch permanente Links (Seite bisher nur auf Englisch).
Community: wo bekomme ich Hilfe?
Als erstes - Beachte, dass Overpass Turbo separat, zu der Overpass API selbst dokumentiert ist. Die Overpass API Dokumentation ist nicht durchsuchbar und wird dir nicht viel helfen, es sei denn, du bist bereits sehr gut mit der Overpass API selbst vertraut. Wenn du zu Overpass über z. B. Taginfo gekommen bist, dann ist es die Overpass Turbo Dokumentation (welche einen Abfrage "Wizard" (Zauberstab) besitzt) die du eigentlich benötigst.
Es gibt einige Community-Webseiten, wo man Hilfe bekommt, wenn man Fragen zur Overpass API oder zu Overpass Turbo hat. Dies ist der empfohlene Kanal für Anfänger- bis zu Expertenfragen. Oder allgemeiner formuliert: wenn die Antwort auf die Frage nützlich für die Allgemeinheit sein könnte.
Bitte beachte, dass alte Fragen und alte Antworten auf diesen Seiten veraltet sein können. Fehlende Funktionen wurden eventuell in der Zwischenzeit implementiert, und Behelfslösungen können ggf. nicht mehr funktionieren. Wenn du eine Frage auf einer "in Echtzeit"-Hilfeseite wie IRC oder Slack stellst, dann erhältst du natürlich eine aktuelle Antwort.
Darüber hinaus werden nur die IRC und OSM Help Links von der OSM Community verwaltet. Die anderen Seiten werden von Drittanbietern kontrolliert.
| Typ | Seite | Sprache | Häufig genutzte 'Tags' für Fragen |
|---|---|---|---|
| Forum | |||
| OSM Community (Kategorien: General talk, Help & Support) | Englisch (Hauptsprache) und andere (auch Deutsch) | overpass | |
| Q&A Seiten | |||
| GIS StackExchange | Englisch | overpass-api | |
| Stack Overflow | Englisch | overpass-api | |
| Chat | |||
| OSM US Slack (Kanal #overpass) | Englisch | ||
| OSM Dev Telegram group | Englisch | ||
| OSM World Discord (Kanal #developer) | Englisch | ||
| IRC #osm channel | Englisch | n/a - Frag einfach deine Frage | |
| Alte Seiten | |||
| OSM Help (veraltet, benutze stattdessen OSM Community) | Englisch | overpass, overpass-turbo | |
Entwickler / Systemadministratoren
Sie können Ihre eigene Instanz aus dem neuesten stabilen Release (Seite bisher nur auf Englisch) oder aus den Quellen (aktuelle Version) bei Github installieren (Seite bisher nur auf Englisch). Die Overpass API ist unter der Affero GPL v3 lizenziert.
Das Projekt wird von Roland Olbricht (E-Mail: Roland.olbricht@gmx.de) verwaltet. Beiträge, Fehlermeldungen oder Pull-Requests zum Quellcode sind willkommen.
Hier geht es zur Mailingliste für Entwickler.
Einschränkungen
Wie jeder andere Service hat auch die Overpass API Einschränkungen:
- Download großer Datenmengen
- Da die Größe des Ergebnises einer Overpass-API-Abfrage erst nach Abschluss des Downloads bekannt ist, ist es unmöglich, während des Downloads eine voraussichtliche Dauer anzugeben. Außerdem dauert die dynamische Generierung und das Herunterladen von Dateien aus der Overpass-API in der Regel länger als das Herunterladen vorhandener statischer Auszüge derselben Region. Wenn Sie also Regionen in der Größe eines Landes mit allen (oder fast allen) Daten extrahieren möchten, ist es besser, dafür planet.osm-Mirrors zu verwenden. Die Overpass-API ist am nützlichsten, wenn die benötigte Datenmenge nur eine Auswahl der in der Region verfügbaren Daten ist.
- Abfrage einer OSM Daten-Historie
- Die Overpass API bietet keine auf Änderungssätzen basierende Such-Kriterien. Es ist möglich dies zu umgehen, indem man Abfragen für Zeitpunkte erstellt, die die Unterschiede der Versionen zeigen, was jedoch umständlich sein kann.
Auch kann die Overpass API nicht die komplette "Geschichte" eines Objekts abfragen. Die Overpass API kann lediglich den Zustand eines Objekts zu einem gegebenen Zeitpunkt abfragen.(Dies wird seit der Version 0.7.55 viaretroundtimelineunterstützt, siehe Sliced Time and Space für mehr Details).
- Datenbank verzögerung
- Es kann ein paar Minuten dauern bis Änderungen an der Datenbank in den Overpass API Abfrage-Ergebnissen angezeigt werden. Jede Abfrage gibt ein
osm_baseZeitstempel aus, welcher dir sagt, wann die Daten das letzte mal aktuallisiert wurden. Für overpass-api.de kann auch die aktuelle und historische Datenbankverzögerung über Munin (lz4 & z) nachvollzogen werden.
Die Karten-Daten-Abfrage
Bevor die Syntax detailliert erklärt wird, wird hier der möglicherweise häufigste Anwendungsfall, die Karten-Daten-Abfrage, gezeigt. Eine Karten-Daten-Abfrage dient dazu, alle Daten (einschließlich der Meta-Daten) innerhalb einer Fläche (Bounding Box) zu erhalten. Die folgenden Beispiele sind auf ein Minimum reduziert. Die Links (die Icons), die diese Beispiele in ausführbarer Form enthalten, verwenden zusätzliche Parameter, u. a. um die Karte zu zentrieren, das Zoom-Level zu setzen und die Abfrage sofort auszuführen.
Um die Abfrage auszuführen, kann man sie in dieses Abfragefeld kopieren, oder man kann Overpass Turbo benutzen, um die Ergebnisse auf einer Karte zu sehen.
Die Reihenfolge der Werte in der "bounding box" (51.249,7.148,51.251,7.152) sind kleinste geografische Breite (minimum latitude), kleinste geografische Länge (minimum longitude), größte geografische Breite (maximum latitude), größte geografische Länge (maximum longitude) (oder Süden-Westen-Norden-Osten). Sieh unten für mehr Details zur "bbox".
Einfache Anwendungs-Beispiele
Um mehr über die Overpass API Sprache zu erfahren, siehe Overpass API Sprach-Leitfaden, sowie die Overpass API Sprach-Erläuterung.
Optionen zur Ressourcenverwaltung (osm-script)
Das osm-script wird bei Verwendung der XML syntax automatisch hinzugefügt, sofern man nicht explizit etwas angibt. Ein Grund für eine Spezifizierung wäre die Optimierung der Optionen zur Ressourcenverwaltung, indem man optionale XML Attribute festlegt (entsprechende in Klammern gesetzte Optionen können auch in einer leeren Anweisung am Anfang einer Abfrage angegeben werden, wenn die QL-Syntax verwendet wird).
Diese Abfrage erweitert den Time-out von 3 Minuten auf 15 Minuten (900 Sekunden). Zusätzlich wird das Limit für den Speicherverbrauch auf 1 GiB (entspricht 1073741824 Byte) gesetzt.
Warnung: Wenn Du dieses Beispiel ausführst, werden mehr als 100 MiB an Daten abgerufen (auch wenn es nicht wie im ersten Beispiel alle Details ausgibt, hier wird nur eine einfache Liste von Knoten mit ihren Tags abgerufen). Overpass warnt Dich, wenn Du die Abfrage direkt im Browser ausführst, um die Daten auf der Karte darzustellen. Es kann sein, dass dabei der Browser abstürzt. Für Abfragen, die solche großen Datenmengen liefern, sollten andere Tools benutzt werden.
Diese Ressourcenbegrenzungen können nicht auf beliebig hohe Werte gesetzt werden: Jede Overpass API Anwendung kann sich weigern, sie über einen bestimmten Schwellenwert hinaus auszudehnen (abhängig von den Serverfunktionen oder der aktuellen Serverlast). Auch kann die Abfrage mit einer Fehlermeldung (und einem Nicht-OK-HTTP-Server-Fehlerstatus) fehlschlagen.
Fortgeschrittene Anwendungs-Beispiele
Die folgenden Beispiele stellen die zusätzlichen Befehle recurse und around vor. Sie sind nur in Kombination mit anderen Befehlen sinnvoll.
Auch hier können alle folgenden Beispiele getestet werden, indem die Snippets in dieses Abfragefeld kopiert werden.
Hinweis: Abfragen können einige Minuten in Anspruch nehmen, bis sie beendet sind. Wenn Timeouts verursacht werden, kann der Timeout-Zeitraum verlängert werden.
Recurse
Mit recurse werden alle Elemente abgefragt, die Mitglieder eines gemeinsamen, übergreifenden Elements sind. Es ist für Wege verfügbar, um alle verbundenen Knoten zu erhalten, für Relationen, um alle Mitgliedsknoten oder Mitgliedswege zu erhalten. Oder umgekehrt, um für einen Knoten, Weg oder eine Relation die Wege oder Relationen zu erhalten, denen das Element angehört. Der Elementtyp wird durch das Attribut type ausgewählt.
Beispiel: Erhalte die Knoten aller Relationen die den Schlüssel ref mit dem Wert E61 haben. Es werden alle Bushaltestellen ausgegeben, die von der Linie E61 bedient werden.
Erhalte die Wege aller Relationen die den Schlüssel ref mit dem Wert E61 haben. Es wird die Strecke die von der Linie E61 bedinet wird ausgegeben.
Erhalte die Knoten der oben genannten Wege. Die Bushaltestellen werden nicht ausgegeben, aber das ist so gewollt - siehe union Beispiele weiter unten.
Erhalte alle Relationen die Knoten mit dem Namen Lichtscheid als Mitglied haben. Das sind die Buslinien die dort halten.
<query type="node">
<has-kv k="name" v="Lichtscheid"/>
</query>
<recurse type="node-relation"/>
<print/>
Erhalte alle Wege die Knoten als Mitglieder haben innerhalb einer bestimmten bounding box.
<bbox-query s="51.249" n="51.251" w="7.149" e="7.151"/>
<recurse type="node-way"/>
<print/>
Und wir können auch Relations-Mitglieder einer Relation erhalten:
<query type="relation">
<has-kv k="name" v="VRR Buslinien"/>
</query>
<recurse type="relation-relation"/>
<print/>
Oder das gleiche nur Umgekehrt:
<query type="relation">
<has-kv k="ref" v="E61"/>
</query>
<recurse type="relation-backwards"/>
<print/>
Around
around ermöglicht es alle Knoten in der Nähe eines oder mehrerer vorgegebenen Knoten zu erhalten.
Beispiel: Erhalte alle Knoten die maximal 10 Meter von anderen Knoten mit dem Namen Bristol entfernt sind:

<query type="node">
<has-kv k="name" v="Bristol"/>
</query>
<around radius="10"/>
<print/>
Man kann auch Abfragen verbinden, um nur Knoten zu erhalten, die auch ein zweites Kriterium erfüllen und sich in der Nähe von Knoten befinden, die das erste Kriterium erfüllen. In dem Beispiel suchen wir alle Bushaltestellen in einem Umkreis von 100 Metern um einen Pub namens "Bristol":

<query type="node">
<has-kv k="amenity" v="pub"/>
<has-kv k="name" v="Bristol"/>
</query>
<query type="node">
<around radius="100"/>
<has-kv k="highway" v="bus_stop"/>
</query>
<print/>
Bausteine
Es müssen immer noch ein paar helfende Befehle erklärt werden, im speziellen union, item, der Variablen Mechanismus, und foreach.
Auch hier können alle folgenden Beispiele getestet werden, indem die Snippets in dieses Abfragefeld kopiert werden.
Union
Union ermöglicht es die Ergebnisse von mehreren Abfragen zu gruppieren.
Beispiel: Erhalte alle Knoten mit dem Namen Lichtscheid oder Müngstener Straße.
<union>
<query type="node">
<has-kv k="name" v="Lichtscheid"/>
</query>
<query type="node">
<has-kv k="name" v="Müngstener Straße"/>
</query>
</union>
<print/>
Ein anderer Anwendungsfall wäre, wenn man eine Relation mit all ihren Mitgliedern, inklusive der Knoten von Weg-Mitgliedern, erhalten möchte.
<union>
<query type="relation">
<has-kv k="ref" v="CE 61"/>
</query>
<recurse type="relation-node" into="nodes"/>
<recurse type="relation-way"/>
<recurse type="way-node"/>
</union>
<print/>
Dies bedarf noch weiterer Erklärung:
- query fragt alle Relationen mit dem Schlüssel ref und dem Wert CE 61 ab. Es schreibt das Ergebnis in die Standard-Variable _ und die umschließende union speichert die Daten.
- recurse relation-node gibt alle Knoten, die Mitglied der oben gespeicherten Relationen sind, wieder. Das Ergebnis wird in die Variable nodes geschrieben (wir benötigen die Variable hier nicht weiter. Wir deklarieren sie nur, um die Relationen in der Standad-Variable zu behalten.) und die umschließende union speichert die Daten.
- recurse relation-way gibt alle Wege, die Mitglied der oben gespeicherten Relationen sind, wieder (also aus der Standard-Variable _ und nicht aus der Variable nodes, da immer auf die Stadard-Variable zurückgegriffen wird, wenn keine andere angegeben ist). Das Ergebnis wird in die Standard-Variable _ geschrieben und die umschließende union speichert die Daten.
- recurse way-node gibt endlich die Knoten, die Mitglied der gerade gespeicherten Wege sind, wieder. Das sind die letzten Daten, die in das Ergebnis der union gespeichert werden.
Wenn du denkst, dass das kompliziert ist, hast du recht. Ich bin für Vorschläge offen, wie man die Erklärung verbessern kann, aber ich habe bisher noch nichts Zufriedenstellendes gefunden.
Jetzt sind wir bereit, den Kartenaufruf zusammenzusetzen, indem wir eine bbox-Abfrage mit mehreren recurse Aussagen kombinieren und alles mit einer union umschließen.
Item
Ein Teil der Idee hinter item und Variablen, die du bereits im vorangegangenen Beispiel gesehen hast, ist: Jede Anweisung holt ihre Eingabe aus einer Variable und speichert ihre Ausgabe in einer Variable. Wenn man den Variablennamen weglässt, wird standardmäßig _ verwendet. Dadurch ist es möglich, fast alle expliziten Spezifikationen von Variablen zu entfernen. Die Eingabe wird immer aus der Variablen mit dem Namen des Attributs from abgerufen, die Ausgabe wird immer in die mit into angegebene Variable geschrieben.
<query type="way" into="foo">
<has-kv k="name" v="Am Hofe"/>
</query>
<print from="foo"/>
Dies hat beispielsweise dieselbe Wirkung wie das folgende Beispiel bei print, verwendet jedoch die explizit angegebene Variable foo.
Um dieses Konzept vollständig vielseitig zu gestalten, kann man mit item eine Gruppe als Eingabe in union und query spezifizieren:
<query type="relation">
<has-kv k="network" v="VRR"/>
<has-kv k="ref" v="645"/>
</query>
<recurse type="relation-node" into="stops"/>
<query type="node">
<around from="stops" radius="100"/>
<has-kv k="highway" v="bus_stop"/>
</query>
<union>
<item/>
<recurse type="node-relation"/>
<query type="node">
<around from="stops" radius="100"/>
<has-kv k="park_ride"/>
</query>
</union>
<print/>
Hier tut item in der Mitte sicherstellen, dass die zuvor gesammelten Daten für bus_stop in das Ergebnis der union mit einbezogen werden. Das zeigt auch, dass die Variable stops nötig ist, um die Abfrage möglich zu machen.
<bbox-query s="51.15" n="51.35" w="7.0" e="7.3"/>
<recurse type="node-way"/>
<query type="way">
<item/>
<has-kv k="highway" v="motorway"/>
</query>
<print/>
item begrenzt in der Abfrage die mögliche Anzahl zu findender Elemente auf diejenigen, die bereits im vorherigen Schritt mit recurse gefunden wurden. Dadurch erhalten wir eine vollständige Abfrage, um Wege mit beliebigen Tags innerhalb einer bbox zu finden.
Foreach
<query type="relation">
<has-kv k="type" v="multipolygon"/>
<has-kv k="name"/>
</query>
<foreach into="pivot">
<union>
<recurse type="relation-way" from="pivot"/>
<recurse type="way-node"/>
</union>
<make-area pivot="pivot"/>
</foreach>
Das ist der essenzielle Teil der Regel die die Flächen (Seite bisher nur auf Englisch) erstellt. Das make-area wird hier nicht erklärt. Sieh dir für Details hierzu die Flächen (Seite bisher nur auf Englisch) Wiki-Seite an. Der erste Teil mit query sammelt alle Relationen mit bestimmten Eigenschaften. Im zweiten Teil wollen wir etwas mit jedem Element im Ergebnis von query tun. Das tut foreach. Der Inhalt der Schleife wird einmal für jedes Element im Eingabesatz ausgeführt, das genau dieses einzelne Element im Ausgabesatz enthält, hier als pivot bezeichnet.
Metadaten
Neben dem speziellen print Modus gibt es zwei Anweisungen, die für die Abfrage spezifischer Metadaten bestimmt sind, nämlich user und newer.
User
Man kann alle Daten auswählen, die von einem bestimmten Benutzer zuletzt bearbeitet wurden. Wähle den Benutzernamen (z. B. meinen "Roland Olbricht"):
<user name="Roland Olbricht"/>
<print mode="meta"/>
Oder man wählt eine Benutzer-ID aus:
<user uid="65282"/>
<print mode="meta"/>
Diese Anweisung kann auch innerhalb einer Abfrageanweisung verwendet werden. Sie schränkt dann das Ergebnis auf die Daten ein, die von dem angegebenen Benutzer zuletzt bearbeitet wurden:
<query type="node">
<user name="Roland Olbricht"/>
<has-kv k="highway" v="bus_stop"/>
<bbox-query s="51.2" n="51.35" w="7.05" e="7.3"/>
</query>
<print mode="meta"/>
Newer
Newer kann innerhalb einer Abfrageanweisung verwendet werden, aber nicht als eigenständige Anweisung. Newer schränkt die Ausgabe auf Elemente ein, die nach dem angegebenen Datum bearbeitet wurden. Das Datum muss im Format JJJJ-MM-TTTHH:MM:SSZ vorliegen. Sie bezieht sich, wie auch die Ergebnisse, immer auf die Zeitzone UTC.
<query type="node">
<newer than="2011-08-01T00:00:00Z"/>
<has-kv k="highway" v="bus_stop"/>
<bbox-query s="51.2" n="51.35" w="7.05" e="7.3"/>
</query>
<print mode="meta"/>
Wenn man alle Knoten, die neuer als ein bestimmtes Datum sind, aus einer bbox abrufen möchte, kann man query mit einer Item Unteraussage verwenden.
<bbox-query s="51.2" n="51.35" w="7.05" e="7.3"/>
<query type="node">
<item/>
<newer than="2011-08-01T00:00:00Z"/>
</query>
<print mode="meta"/>
Siehe Overpass API/Overpass API by Example#Users and old data (Seite auf Englisch) für Beispiele mit modernerer Syntax.
Beispiel: Öffentlicher Verkehr

Ein interessantes Beispiel, wie die Overpass API in ein Programm integriert werden kann – ein Service, um Diagramme von öffentlichen Verkehrslinien zu erstellen.
Siehe das Beispielvorschau-Bild auf der rechten Seite. Weitere Beispiele gibt es auf dieser Seite (Seite bisher nur auf Englisch).
In diesem Wiki kann man Links zu dem Tool mit der dokumentierten Vorlage {{Sketch Line}} erstellen.
(Sei bitte geduldig – je nach Serverauslastung kann die Bearbeitung jeder Anfrage bis zu 10 Sekunden dauern.)
Hinweis: Ab Overpass API v0.7.52 gibt es einige bekannte Probleme mit der PTv2-Unterstützung, die zu doppelten Haltestellennamen oder einigen Lücken führen können, siehe Github issue #190. Auch bei neueren PTvX-Versionen oder Varianten davon können möglicherweise Darstellungsprobleme auftreten.
XAPI Compatibility Layer
Für Details und Beispiele siehe:
- Overpass API/XAPI Compatibility Layer (Seite bisher nur auf Englisch)
- Overpass XAPI Abfragen-Ersteller unter harrywood.co.uk
Programme/Skripte rund um Overpass
Python API
- overpassify — Ein Python-Transpiler, der eine Python-Funktion in eine Overpass-Abfrage umwandelt
- overpass — Eine einfache, aber flexible und leistungsstarke Python-Schnittstelle, geschrieben von Martijn van Exel
- overpy — Ein fortgeschrittener Python-Wrapper
- OSMPythonTools bietet einfachen Zugriff auf OSM-bezogene Dienste, einschließlich Overpass (siehe die Wiki-Seite hierzu)
Node.js API
- query-overpass ist ein einfacher API-Wrapper und eine CLI für Overpass
- overpass-ts — Promise-basierter API-Client in Typescript; funktioniert im Browser und Node.js; unterstützt JSON und XML/Text sowie stream response
JavaScript
- GLAM Counter bietet ein Beispiel dafür, wie man mit einer einfachen POST-Anfrage auf die Overpass-API zugreifen kann
Android
- osmapi-overpass – Java
- overpass-kotlin-client – Kotlin Multiplatform
- overpasser – Java
Konverter
- Zur GPX-Ausgabe osm2node source code und Online service
- API 0.6 wrapper source code und Online service
- osmtogeojson konvertiert OSM Daten zu GeoJSON und bietet vollständige Kompatibilität mit dem Modi für erweiterte Geometrieausgabe der Overpass API
- gimmeOSM ermöglicht die Eingabe einer Feature-ID und gibt diese als GeoJSON zurück
- OSM Extractor Importiert Overpass-API-Antworten in w:OpenRefine zum Zusammenführen von Datensätzen
Frontends
- Overpass Turbo – Einfache Benutzeroberfläche mit Assistent (Zauberstab)
- Overpass Ultra – liefert umfangreiche Ergebnisse über die maplibre-gl Vektorbibliothek
- OsmAPP – Geb die Suche mit dem Präfix „op:“ ein, zum Beispiel:
op:node[„amenity“]– gerendert über maplibre-gl
Befehlszeilenschnittstellen
- overpass-cli - Befehlszeilentool zum Ausführen von Overpass-Abfragen
Vorträge, Präsentationen, Workshops
Dieser Abschnitt listet vergangene Vorträge, Präsentationen und Workshops zur Overpass API und verwandten Themen auf. Viele der Präsentationen sind selbst für Anfänger ein guter Einstieg, da sie viele Beispiele enthalten.
| Datum | Event | Ort | Titel | Typ | Sprecher | Sprache | Links |
|---|---|---|---|---|---|---|---|
| Juni 2023 | SOTM FR 2023 | Marseille (FR) | Overpass Turbo: le couteau suisse des données OSM | Präsentation | Antoine Riche | Französisch | Video, Folien |
| Februar 2020 | OSMit 2020 | Torino (IT) | Overpass Turbo: oltre il wizard | Präsentation | Andrea Albani | Italienisch | Folien Beispiele |
| September 2019 | SotMUS 2019 | Minneapolis (US) | A turbo introduction to Overpass | Präsentation | Minh Nguyễn | Englisch | Video, Folien, Folien mit Notizen |
| August 2019 | COSCUP 2019 OpenStreetMap x Wikidata track | Taipei (TW) | Geographic Data for Beginners - An introduction to Overpass API Turbo (Abgesagt) | Präsentation | Assanges | Mandarin | |
| Herbst 2017 | Université Rennes (FR) | Introduction aux données OpenStreetMap et à l'API Overpass Turbo | Präsentation | Boris Mericskay | Französisch | Folien | |
| August 2017 | COSCUP 2017 Open GIS track | Taipei (TW) | OpenStreetMap and Overpass Turbo | Präsentation | Thomas Tsai | Mandarin | Folien, Video |
| September 2016 | SotM 2016 | Brussels (BE) | Gardening OSM data with Overpass API | Präsentation | Roland Olbricht | Englisch | Video |
| Juli 2016 | FOSSGIS 2016 - OSM-Sonntag | Salzburg (AT) | Overpass-Abfragen jenseits key=value selber schreiben | Workshop | Nakaner | Deutsch | Folien |
| Mai 2016 | SOTM FR 2016 | Clermont-Ferrand (FR) | Démystifier l'API Overpass / Demystify the Overpass API | Workshop | Antoine Riche | Französisch | Video |
| Oktober 2015 | FOSS@HFT Stuttgart | Stuttgart (DE) | Parametrisierter Download aus einer weltweiten Geodatenbank (OpenStreetmap) sowie daran anschliessend mit dem Workshop Algorithmik und Technik, Hypothesenprüfung | Präsentation/Workshop | Roland Olbricht | Deutsch | Video |
| Juli 2015 | AGIT 2015 | Salzburg (AT) | Overpass API: OpenStreetMap-Daten vorgefiltert beziehen | Präsentation | Roland Olbricht | Deutsch | ? |
| Juni 2015 | SotM US 2015 | NYC (US) | Working with OSM diffs / The Overpass API | Workshop | Roland Olbricht | Englisch | ?, Zusammenfassung |
| April 2015 | geo-spatial.org | Cluj (RO) | Overpass API: utilizarea datelor OpenStreetMap pentru a realiza hărți tematice | Workshop | Alex Morega | Rumänisch | Workshop Materialien |
| März 2015 | FOSSGIS 2015 | Münster (DE) | Schatzsuche in OpenStreetMap | Präsentation | Roland Olbricht | Deutsch | Zusammenfassung, Video |
| März 2015 | FOSSGIS 2015 | Münster (DE) | OpenStreetMap-Daten pflegen und finden mit der Overpass API | Workshop (bezahlt) | Roland Olbricht | Deutsch | Kein Material verfügbar |
| Februar 2015 | FOSDEM 2015 | Bruxelles (BE) | Overpass-API - A service to query OpenStreetMap data | Präsentation | Roland Olbricht | Englisch | Folien, Video |
| September 2014 | Bonn (DE) | Overpass-API Seminar bei ZERA | Workshop | Roland Olbricht | Deutsch | Manuskript, Folien | |
| Juni 2014 | SotM-EU 2014 | Karlsruhe (DE) | Overpass API v0.7.50 - The temporal dimension | Präsentation | Roland Olbricht | Englisch | Folien/Video |
| Juni 2014 | SotM-EU 2014 | Karlsruhe (DE) | Sparse Editing - Editing Large-Scale Objects | Präsentation | Roland Olbricht | Englisch | Folien/Video |
| April 2014 | Grazer Linuxtage 2014 | Graz (AT) | OpenStreetMap Daten nutzen | Präsentation | Martin Raifer | Deutsch | Folien |
| März 2014 | FOSSGIS 2014 | Berlin (DE) | Daten aus OpenStreetMap extrahieren, analysieren und filtern mit der Overpass API | Workshop (bezahlt) | Roland Olbricht | Deutsch | Kein Material verfügbar |
| Oktober 2013 | Intergeo 2013 | Essen (DE) | OSM-Daten direkt nutzen mit der Overpass API | Präsentation | Roland Olbricht | Deutsch | Folien |
| Oktober 2013 | OSMit 2013 | Rovereto (IT) | Overpass Turbo | Präsentation | Martin Raifer | Italienisch | Folien |
| März 2013 | FOSSGIS 2013 | Rapperswil (CH) | Daten aus OpenStreetMap extrahieren, analysieren und filtern mit der Overpass API | Workshop | Roland Olbricht | Deutsch | Folien |
| März 2013 | FOSSGIS 2013 | Rapperswil (CH) | overpass turbo - Einfache Analyse von OpenStreetMap Daten | Präsentation | Martin Raifer | Deutsch | Folien, Video, Tagungsband FOSSGIS 2013 |
| März 2013 | FOSSGIS 2013 | Rapperswil (CH) | Mobile Karten erstellen mit OSM, OpenLayers und Overpass API | Präsentation | Roland Olbricht | Deutsch | Folien, Video |
| Dezember 2012 | OSMDE009 OSM Talk: Die Overpass API | Podcast | Roland Olbricht, Stephan/RadioOSM | Deutsch | Audio | ||
| März 2012 | FOSSGIS 2012 | Berlin (DE) | Overpass API | Präsentation | Roland Olbricht | Deutsch | Folien, Tagungsband FOSSGIS 2012 |
| Juli 2011 | SotM-EU 2011 | Vienna (AT) | Overpass API - an open and slim XAPI alternative | Präsentation | Roland Olbricht | Englisch | Folien, Video |
Bücher
Olbricht, Roland (2015). “OpenStreetMap in GIScience”. in Jokar Arsanjani, J.; Zipf, A.; Mooney, P. et al.. Springer International Publishing Switzerland. pp. 101-122. ISBN 978-3-319-14280-7.
Bitte vermeiden Sie tiefgreifende Änderungen an dieser Übersetzung, wenn Sie nicht auch die Übersetzungsquelle anpassen und die weiteren Übersetzenden informieren. Orthografische, grammatikalische und stilistische Änderungen sind selbstverständlich möglich.
