Mit elevation=1 erhält jeder Bahnhof die Geländehöhe an seiner Position. Sortiert ergibt das die höchsten Bahnhöfe eines Landes.
Das Höhenmodell beschreibt die Oberfläche; ein Bahnhof in einem Tunnel erhält also die Höhe des Bergs darüber. Eigerwand, eine Station in der Nordwand des Eigers auf 2'866 m, ergibt etwa 3'170 m.
Die Abfrage
[out:json][timeout:90]; area["ISO3166-1"="CH"][admin_level=2]->.ch; nwr["railway"="station"](area.ch); 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
nwr["railway"="station"]findet Bahnhöfe jeder Bahn, auch Zahnradbahnen und Standseilbahnen, die als Bahnhof getaggt sind.out center;liefert einen Punkt pro Bahnhof undelevation=1für jeden eineelevation.- Bei den über 1'100 Bahnhöfen mit einem Tag
eleliegt der Unterschied im Median unter 1 m. - Unterirdische Bahnhöfe sind die Ausnahme. Das Jungfraujoch, mit 3'454 m der höchste Bahnhof Europas, liegt im Fels und ergibt etwa 30 m zu viel.
Varianten
- Um Bahnhöfe in Tunneln wegzulassen, überspringen Sie die mit
location=undergroundoder negativemlayer, oder nehmen Sieele, wo es vorhanden ist. - Auch Haltestellen:
nwr["railway"~"^(station|halt)$"]. Ohne Höhen: Bahnhöfe in einem Land.
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.