Beispiel für eine Overpass-Abfrage

Neue und geschlossene Restaurants (diff)

Zwei Daten vergleichen und nur behalten, was hinzukam oder wegfiel, mit diff und compare. Beispiel: Restaurants im Niederdorf, Zürich, 2023 und 2024.

Verlaufsabfragen gehören zu den Tarifen Medium und Large. Das Ergebnis unten läuft für diese Seite auf unserem Server.

[diff:…] vergleicht die Antwort einer Abfrage an zwei Daten. compare(delta:id()) entfernt die Elemente, die in beiden Antworten vorkommen; übrig bleiben die Restaurants, die hinzukamen oder wegfielen.

Diese Abfrage vergleicht die Restaurants im Niederdorf, der Altstadt von Zürich östlich der Limmat, am 1. Januar 2023 und am 1. Januar 2025.

Die Abfrage

[out:xml][timeout:60][diff:"2023-01-01T00:00:00Z","2025-01-01T00:00:00Z"];
nw(47.369,8.541,47.376,8.547)(if:t["amenity"]=="restaurant");
compare(delta:id());
out meta center;

Ausführen

Die Abfrage läuft…

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

So funktioniert es

  1. [diff:"2023-01-01T00:00:00Z","2025-01-01T00:00:00Z"] führt die Abfrage an beiden Daten aus. Diffs brauchen [out:xml].
  2. (if:t["amenity"]=="restaurant") wählt die Restaurants. In Abfragen auf alte Daten ist das schneller als ein Tag-Filter in eckigen Klammern.
  3. compare(delta:id()) behält die Elemente, deren id() sich zwischen den beiden Daten unterscheidet. Eine ID ändert sich nie; übrig bleibt also, was nur in einer der beiden Antworten steht.
  4. <action type="create"> ist ein Restaurant, das hinzukam. <action type="delete"> ist eines, das wegfiel, mit seiner Version vom ersten Datum.
  5. Weggefallen heisst nicht immer geschlossen. Von den zehn hier wurden fünf gelöscht, zwei sind als stillgelegt markiert, und drei wurden zu einer Bar, einem Fast-Food-Lokal und einem Punkt ohne Tags.

Varianten

  • Auch hinzugekommen heisst nicht immer eröffnet: Ein Restaurant kann jahrelang bestanden haben, bevor es jemand erfasst hat.
  • [adiff:…] ergänzt die neue Version jedes weggefallenen Elements, so sehen Sie, was daraus wurde: siehe Änderungen in einem Gebiet.
  • Läden statt Restaurants: (if:t["shop"]!="").
  • Eine ganze Stadt: area["name"="Zürich"]["admin_level"="8"]->.a; und nw(area.a). Fünf Jahre Restaurants in Zürich dauerten etwa 15 Sekunden.

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 →