timeline liefert einen Eintrag pro Version eines Elements, mit der Zeit, zu der sie entstand und ersetzt wurde. retro führt Anweisungen an einem anderen Datum aus. Zusammen ergeben sie jede Version mit ihren Tags.
Diese Abfrage listet die Versionen des Nodes auf dem Gipfel des Matterhorns.
Die Abfrage
[out:json][timeout:60];
timeline(node, 26863664);
for (t["created"]) {
retro (_.val) {
node(26863664);
out meta;
}
}
Ausführen
Live-Ergebnis von overpass.ch, bis zu 12 Stunden zwischengespeichert. Kartendaten © OpenStreetMap-Mitwirkende (ODbL).
So funktioniert es
timeline(node, 26863664)erzeugt pro Version eintimeline-Element mit den Tagsrefversion,createdundexpired.for (t["created"])geht die Versionen durch;_.valist die Zeit, zu der die Version entstand.retro (_.val) { … }führt den Block zu dieser Zeit aus;node(26863664)liefert also die Version dieses Zeitpunkts.out meta;gibt sie mit Versionsnummer, Zeit, Benutzer und Changeset aus.- Die Geschichte beginnt mit der Version, die am 12. September 2012 aktuell war, hier Version 16 von 2011. Seither wurde der Name 2015 zu Cervino geändert und zwei Wochen später zurück, und im Juli und August 2023 wurde der russische Name neunmal entfernt und wieder ergänzt.
Varianten
- Nur die Liste der Versionen:
timeline(node, 26863664); out;ist klein und schnell. - Wer es zuletzt bearbeitet hat:
node(26863664); out meta;. - Ways und Relationen funktionieren gleich:
timeline(way, …)undtimeline(relation, …). Die ID steht in der Adresse des Objekts auf openstreetmap.org.
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.