OpenStreetMap speichert die Höhe eines Gipfels im Tag ele, wenn jemand sie eingetragen hat. Hängen Sie elevation=1 an die URL, und overpass.ch liefert zu jedem Ergebnis zusätzlich die Geländehöhe aus dem Copernicus-Höhenmodell mit 90 m Auflösung. So erhalten Sie eine Höhe auch dort, wo ele fehlt.
Diese Abfrage findet die Gipfel mit Namen rund um Zermatt. Die Tabelle listet sie vom höchsten an, mit der Höhe aus dem Modell neben dem Tag ele.
Die Abfrage
[out:json][timeout:25]; node["natural"="peak"]["name"](45.90,7.60,46.10,7.95); out;
Ausführen
Live-Ergebnis von overpass.ch, bis zu 12 Stunden zwischengespeichert. Kartendaten © OpenStreetMap-Mitwirkende (ODbL). Heights produced using Copernicus WorldDEM™-90 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved. Meerestiefen: GEBCO Compilation Group (2026) GEBCO 2026 Grid.
So funktioniert es
- Die Abfrage selbst ist eine gewöhnliche Overpass-Abfrage. Die Höhen kommen über die URL:
/interpreter?elevation=1ergänzt jeden Node einer JSON-Antwort direkt nachlonum ein Feldelevationin Metern. ["name"]behält nur Gipfel mit Namen. Die ohne Namen sind meist kleinere Erhebungen auf einem Grat.- Vergleichen Sie die beiden Werte. Bei den Gipfeln hier liegt das Modell im Median etwa 60 m unter
ele: Ein 90-m-Raster mittelt einen Gipfel mit seinen Hängen, spitze Gipfel kommen also zu tief heraus. Die Dufourspitze ergibt 4'501 m statt 4'634 m. - Jede Höhe braucht eine Höhenabfrage aus Ihrem Monatskontingent, hier etwa 170. Overpass-Anfragen werden getrennt gezählt.
Varianten
- Zuerst den Tag nehmen und auf das Modell ausweichen: in Python
height = el["tags"].get("ele") or el["elevation"]. - Nur die höchsten Gipfel: Filtern Sie
elein der Abfrage, wie bei Gipfel über 4000 m. - Auf Pässen, Hütten und Dörfern liegt das Modell viel näher an der Wirklichkeit: siehe Strassenpässe und ihre Höhe.
Aus Ihrem Code ausführen
Die Abfrage bleibt gleich; elevation=1 in der URL ergänzt die Höhen. Jede Höhe braucht eine Höhenabfrage aus Ihrem Kontingent.
curl 'https://api.overpass.ch/v1/IHR_API_SCHLÜSSEL/interpreter?elevation=1' \
--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",
params={"elevation": 1}, data={"data": query}, timeout=120)
r.raise_for_status()
for el in r.json()["elements"]:
height = el.get("elevation") or el.get("center", {}).get("elevation")
print(el.get("tags", {}).get("name"), height)
const res = await fetch("https://api.overpass.ch/v1/IHR_API_SCHLÜSSEL/interpreter?elevation=1", {
method: "POST",
body: new URLSearchParams({ data: query }),
});
if (!res.ok) throw new Error(await res.text());
const { elements } = await res.json();
for (const el of elements) console.log(el.tags?.name, el.elevation ?? el.center?.elevation);
Speichern Sie die Abfrage als query.overpassql. Sie funktioniert genauso in Overpass Turbo, QGIS und JOSM.