for gruppiert die aktuelle Menge nach einem Ausdruck, und make erzeugt für jede Gruppe ein neues Element. Zusammen funktionieren sie wie GROUP BY in SQL.
Die Abfrage
[out:csv(name, total; true; ",")][timeout:60];
area["name"="Zürich"]["admin_level"="8"]->.a;
nwr["amenity"="restaurant"](area.a);
for (t["cuisine"]) {
make stat name=_.val, total=count(nwr);
out;
}
Ausführen
Live-Ergebnis von overpass.ch, bis zu 12 Stunden zwischengespeichert. Kartendaten © OpenStreetMap-Mitwirkende (ODbL).
So funktioniert es
for (t["cuisine"])läuft über die verschiedenen Werte von cuisine;_.valist der aktuelle Wert.- In der Schleife enthält die Menge nur die Restaurants mit diesem Wert.
count(nwr)zählt sie. make stat …erzeugt eine Zeile; bei der Ausgabe als CSV ist jede Zeile eine Zeile der Datei. Der leere Name zählt die Restaurants ohne cuisine.
Varianten
- Sortieren Sie die CSV-Datei in Ihrer Tabellenkalkulation, oder nach Wert mit
sort -t, -k2 -n.
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.text)
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.text());
Speichern Sie die Abfrage als query.overpassql. Sie funktioniert genauso in Overpass Turbo, QGIS und JOSM.