Ein Pass ist ein Node mit dem Tag mountain_pass=yes, auf einer Strasse oder einem Weg. Um nur Strassenpässe zu erhalten, sammeln Sie zuerst die Hauptstrassen und dann die Pass-Nodes darauf.
Die Höhen hier stimmen auf wenige Meter mit ele überein. Ein Pass ist ein Sattel, wo das Gelände glatt ist, und das passt gut zu einem Höhenmodell mit 90 m.
Die Abfrage
[out:json][timeout:90]; area["ISO3166-1"="CH"][admin_level=2]->.ch; way["highway"~"^(primary|secondary)$"](area.ch)->.roads; node(w.roads)["mountain_pass"="yes"]; 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
way["highway"~"^(primary|secondary)$"](area.ch)->.roads;sammelt die Hauptstrassen der Schweiz in der Mengeroads.node(w.roads)["mountain_pass"="yes"]nimmt die Nodes dieser Strassen und behält die, die als Pass getaggt sind. Wanderpässe liegen nicht an diesen Strassen und fallen weg.- Mit
elevation=1erhält jeder Pass seine Höhe. Die höchsten sind der Umbrail, der Nufenen und die Furka, alle über 2'400 m. - Alle Hauptstrassen eines Landes zu sammeln dauert eine Weile: Diese Abfrage läuft etwa 15 Sekunden.
Varianten
- Auch kleinere Strassen:
["highway"~"^(primary|secondary|tertiary|unclassified)$"](langsamer). - Jeder Pass und Übergang, auch Wanderpässe:
node["mountain_pass"="yes"](area.ch);, odernatural=saddlefür Sättel ohne Weg.
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.