Nicht jede Hütte hat einen Tag ele. Mit elevation=1 erhält jedes Ergebnis die Geländehöhe an seiner Position; Sie können Hütten also lückenlos nach Höhe sortieren, filtern oder einfärben.
Diese Abfrage listet die bewarteten Berghütten im Kanton Wallis auf.
Die Abfrage
[out:json][timeout:60]; area["ISO3166-2"="CH-VS"]->.valais; nwr["tourism"="alpine_hut"](area.valais); out center;
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
area["ISO3166-2"="CH-VS"]ist der Kanton Wallis, über seinen Code nach ISO 3166-2. Anders als der Name ist der Code eindeutig.out center;liefert einen Punkt pro Hütte, auch für Hütten, die als Gebäude erfasst sind. Mitelevation=1erhält dascenterdas Feldelevation.- Hütten stehen eher an Hängen und auf Sätteln als auf spitzen Gipfeln; das Modell stimmt im Median auf etwa 10 m mit
eleüberein. - Die Ausnahme ist die höchste: Die Capanna Regina Margherita steht auf dem Gipfel der Signalkuppe auf 4'554 m, wo das Modell etwa 60 m zu tief liegt.
Varianten
- Nodes tragen die Höhe direkt, Ways und Relationen in ihrem Mittelpunkt:
h = el.get("elevation") or el["center"]["elevation"]. - Auch unbewartete Unterstände:
nwr["tourism"~"^(alpine_hut|wilderness_hut)$"], wie bei Berghütten.
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.