Ein Begrenzungsrahmen ist ein grobes Rechteck. Um innerhalb einer echten Grenze wie einer Stadt, einer Region oder eines Landes zu suchen, machen Sie aus der Grenze ein Gebiet und suchen darin.
Diese Abfrage findet jede Bäckerei in Wien.
Die Abfrage
[out:json][timeout:60]; area["name"="Wien"]["admin_level"="4"]->.city; nwr["shop"="bakery"](area.city); out center;
Ausführen
Live-Ergebnis von overpass.ch, bis zu 12 Stunden zwischengespeichert. Kartendaten © OpenStreetMap-Mitwirkende (ODbL).
So funktioniert es
area["name"="Wien"]findet das Gebiet, das aus der Grenze von Wien entsteht. Namen müssen genau und in der Landessprache passen.["admin_level"="4"]wählt die richtige Grenze. Viele Orte haben denselben Namen, und Wien ist zugleich Stadt und Bundesland (Stufe 4).->.cityspeichert das Gebiet in einer Menge namenscity.nwr["shop"="bakery"](area.city)findet darin Nodes, Ways und Relationen mit dem Tag shop=bakery.out center;liefert eine Koordinate pro Ergebnis, auch für Gebäude.
Varianten
- Unsicher beim admin_level? Mit welche Gebiete einen Punkt enthalten listen Sie die Grenzen an einem Ort auf.
- Eindeutig wird es mit der Wikidata-ID statt des Namens:
area["wikidata"="Q1741"]->.city;. - Für ein ganzes Land verwenden Sie seinen ISO-Code:
area["ISO3166-1"="AT"][admin_level=2].
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.