Beispiel für eine Overpass-Abfrage

Werte eines Tags zählen

Mit einer for-Schleife und make gruppieren und zählen: wie viele Restaurants welcher Küche. Beispiel: Zürich.

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

Die Abfrage läuft…

Live-Ergebnis von overpass.ch, bis zu 12 Stunden zwischengespeichert. Kartendaten © OpenStreetMap-Mitwirkende (ODbL).

So funktioniert es

  1. for (t["cuisine"]) läuft über die verschiedenen Werte von cuisine; _.val ist der aktuelle Wert.
  2. In der Schleife enthält die Menge nur die Restaurants mit diesem Wert. count(nwr) zählt sie.
  3. 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'

Speichern Sie die Abfrage als query.overpassql. Sie funktioniert genauso in Overpass Turbo, QGIS und JOSM.

Weitere Beispiele

Alle Beispiele →