Jede Overpass-Abfrage beantwortet eine Frage: Welche Kartenelemente erfüllen diese Bedingungen? Die einfachste Bedingung ist ein Begrenzungsrahmen, ein Rechteck, das durch seine südwestliche und nordöstliche Ecke gegeben ist.
Diese Abfrage findet alle Cafés, die im Zentrum von Zürich als Punkte erfasst sind.
Die Abfrage
[out:json][timeout:25]; node["amenity"="cafe"](47.365,8.535,47.380,8.555); out;
Ausführen
Live-Ergebnis von overpass.ch, bis zu 12 Stunden zwischengespeichert. Kartendaten © OpenStreetMap-Mitwirkende (ODbL).
So funktioniert es
[out:json][timeout:25];ist die Einstellungszeile: Antwort in JSON, und nach 25 Sekunden aufgeben.nodesucht Punkte. Ways (Linien und Umrisse) und Relationen sind eigene Elementtypen.["amenity"="cafe"]behält nur Elemente mit dem Tag amenity=cafe.(47.365,8.535,47.380,8.555)ist der Begrenzungsrahmen in der Reihenfolge Süd, West, Nord, Ost.out;gibt aus, was gefunden wurde, mit Koordinaten und Tags.
Varianten
- Viele Cafés sind als Gebäudeumriss erfasst, nicht als Punkt. Verwenden Sie
nwrstattnodeundout center;, um auch diese zu erhalten: siehe Nodes, Ways und Relationen auf einmal. - Das Kürzel
{{bbox}}funktioniert nur in Overpass Turbo. In Ihrem eigenen Code schreiben Sie die vier Zahlen.
Aus Ihrem Code ausführen
curl https://api.overpass.ch/v1/IHR_API_SCHLÜSSEL/interpreter \
--data-urlencode 'data@query.overpassql'
import requests
query = open("query.overpassql").read()
r = requests.post("https://api.overpass.ch/v1/IHR_API_SCHLÜSSEL/interpreter",
data={"data": query}, timeout=120)
r.raise_for_status()
print(r.json()["elements"][:3])
const res = await fetch("https://api.overpass.ch/v1/IHR_API_SCHLÜSSEL/interpreter", {
method: "POST",
body: new URLSearchParams({ data: query }),
});
if (!res.ok) throw new Error(await res.text());
console.log(await res.json());
Speichern Sie die Abfrage als query.overpassql. Sie funktioniert genauso in Overpass Turbo, QGIS und JOSM.