Swiss Geo Skill
Zugriff auf Swisstopo-Geodaten fĂŒr die Schweiz.
Funktionen
1. Orts-/Adresssuche
curl -s "https://api3.geo.admin.ch/rest/services/api/SearchServer?searchText=SUCHTEXT&type=locations&sr=4326"
- Gibt lat/lon (WGS84), Label, Gemeinde zurĂŒck
type=locationsfĂŒr Adressen/Orte,type=layersfĂŒr Layer-Suche
2. Höhenabfrage
Zuerst Koordinaten via Suche holen, dann in LV95 umrechnen:
# Umrechnung WGS84 â LV95 (grobe NĂ€herung fĂŒr Schweiz):
# easting = 2600000 + (lon - 7.4) * 73000
# northing = 1200000 + (lat - 46.95) * 111000
curl -s "https://api3.geo.admin.ch/rest/services/height?easting=EASTING&northing=NORTHING&sr=2056"
Gibt Höhe in Metern ĂŒber Meer zurĂŒck.
3. Feature-Identifikation (Gemeinde, Kanton, etc.)
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=LON,LAT&tolerance=0&layers=all:LAYER_ID&sr=4326"
Wichtige Layer-IDs:
ch.swisstopo.swissboundaries3d-gemeinde-flaeche.fillâ Gemeindegrenzench.swisstopo.swissboundaries3d-kanton-flaeche.fillâ Kantonsgrenzench.bafu.bundesinventare-flachmooreâ Flachmoorech.bafu.schutzgebiete-paerke_nationaler_bedeutungâ NaturpĂ€rke
4. Kartenlink generieren
https://map.geo.admin.ch/?lang=de&topic=ech&bgLayer=ch.swisstopo.pixelkarte-farbe&E=LON&N=LAT&zoom=ZOOM
zoom: 0-13 (13 = max Detail)E/N: WGS84 Koordinatenlayers: Komma-getrennte Layer-IDs zum Einblenden
Beispiel-Workflow: "Wo liegt Matterhorn und wie hoch ist es?"
- Suchen:
curl -s "https://api3.geo.admin.ch/rest/services/api/SearchServer?searchText=Matterhorn&type=locations&sr=4326"
â lat=45.9766, lon=7.6586
- Höhe abfragen (LV95):
# easting â 2600000 + (7.6586-7.4)*73000 = 2618878
# northing â 1200000 + (45.9766-46.95)*111000 = 1091893
curl -s "https://api3.geo.admin.ch/rest/services/height?easting=2618878&northing=1091893&sr=2056"
â 4477.5m
- Kartenlink:
https://map.geo.admin.ch/?lang=de&E=7.6586&N=45.9766&zoom=10
5. Wanderwege abfragen
# Wanderwege in einem Gebiet finden (bbox = west,south,east,north)
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/find?layer=ch.swisstopo.swisstlm3d-wanderwege&searchText=ORTSNAME&searchField=name"
# Wanderwege an einem Punkt identifizieren
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=LON,LAT&tolerance=50&layers=all:ch.swisstopo.swisstlm3d-wanderwege&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"
Wanderweg-Kategorien:
wanderwegâ Gelb markiert (T1)bergwanderwegâ Weiss-rot-weiss (T2-T3)alpinwanderwegâ Weiss-blau-weiss (T4-T6)
Kartenlink mit Wanderwegen:
https://map.geo.admin.ch/?lang=de&E=LON&N=LAT&zoom=10&layers=ch.swisstopo.swisstlm3d-wanderwege&bgLayer=ch.swisstopo.pixelkarte-farbe
6. BerghĂŒtten & UnterkĂŒnfte
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=LON,LAT&tolerance=5000&layers=all:ch.swisstopo.unterkuenfte-winter&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"
Kartenlink mit HĂŒtten:
https://map.geo.admin.ch/?lang=de&E=LON&N=LAT&zoom=11&layers=ch.swisstopo.unterkuenfte-winter&bgLayer=ch.swisstopo.pixelkarte-farbe
7. Bergbahnen & Seilbahnen
# Seilbahnen mit Bundeskonzession
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=LON,LAT&tolerance=2000&layers=all:ch.bav.seilbahnen-bundeskonzession&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"
# Alle Seilbahnen (swissTLM3D)
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=LON,LAT&tolerance=2000&layers=all:ch.swisstopo.swisstlm3d-uebrigerverkehr&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"
Kartenlink mit Bergbahnen:
https://map.geo.admin.ch/?lang=de&E=LON&N=LAT&zoom=11&layers=ch.bav.seilbahnen-bundeskonzession&bgLayer=ch.swisstopo.pixelkarte-farbe
8. Naturgefahren
# Lawinengefahr
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=LON,LAT&tolerance=100&layers=all:ch.bafu.silvaprotect-lawinen&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"
# Sturzgefahr (Steinschlag, Felssturz)
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=LON,LAT&tolerance=100&layers=all:ch.bafu.silvaprotect-sturz&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"
# Hochwasser-Warnkarte (aktuell)
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=LON,LAT&tolerance=500&layers=all:ch.bafu.hydroweb-warnkarte_national&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"
Gefahren-Layer:
| Layer-ID | Beschreibung |
|---|---|
ch.bafu.silvaprotect-lawinen |
Lawinengebiete |
ch.bafu.silvaprotect-sturz |
Sturzgebiete |
ch.bafu.hydroweb-warnkarte_national |
Hochwasser aktuell |
ch.bafu.gefahren-waldbrand_warnung |
Waldbrandgefahr |
ch.vbs.sperr-gefahrenzonenkarte |
MilitÀrische Sperrzonen |
Kartenlink mit Naturgefahren:
https://map.geo.admin.ch/?lang=de&E=LON&N=LAT&zoom=12&layers=ch.bafu.silvaprotect-lawinen,ch.bafu.silvaprotect-sturz&bgLayer=ch.swisstopo.pixelkarte-farbe
9. Wetter (Schweiz)
Aktuelles Wetter (via wttr.in):
curl -s "wttr.in/ZĂŒrich?format=%l:+%c+%t+%h+%w&lang=de"
# ZĂŒrich: â
ïž +5°C 78% â12km/h
MeteoSwiss Warnungen (Karte):
https://map.geo.admin.ch/?lang=de&layers=ch.meteoschweiz.gefahren-warnungen
Lawinenbulletin SLF:
- Aktuell: https://www.slf.ch/de/lawinenbulletin-und-schneesituation.html
- API (experimentell): https://www.slf.ch/avalanche/mobile/bulletin_de.json
Hochwasser BAFU (aktuelle Pegel):
https://map.geo.admin.ch/?lang=de&layers=ch.bafu.hydroweb-messstationen_gefahren
10. ĂV-Fahrplan (transport.opendata.ch)
Verbindung suchen:
curl -s "https://transport.opendata.ch/v1/connections?from=ZĂŒrich&to=Bern&limit=3"
Abfahrtstafel:
curl -s "https://transport.opendata.ch/v1/stationboard?station=ZĂŒrich+HB&limit=5"
Haltestelle suchen:
curl -s "https://transport.opendata.ch/v1/locations?query=Paradeplatz"
Beispiel-Output parsen:
curl -s "https://transport.opendata.ch/v1/stationboard?station=Bern&limit=3" | python3 -c "
import sys,json
data = json.load(sys.stdin)
for s in data.get('stationboard', []):
time = s.get('stop', {}).get('departure', '')[11:16]
cat = s.get('category', '') + s.get('number', '')
print(f\"{time} {cat} â {s.get('to', '')}\")"
Parameter:
| Parameter | Beschreibung |
|---|---|
from / to |
Start/Ziel (Name oder ID) |
station |
Haltestelle fĂŒr Abfahrtstafel |
limit |
Max. Ergebnisse |
date |
Datum (YYYY-MM-DD) |
time |
Zeit (HH:MM) |
isArrivalTime |
1 = Ankunftszeit statt Abfahrt |
11. Weitere nĂŒtzliche Daten
ĂV-Haltestellen:
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=LON,LAT&tolerance=500&layers=all:ch.bav.haltestellen-oev&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"
Skitouren & Schneeschuhrouten:
https://map.geo.admin.ch/?lang=de&E=LON&N=LAT&zoom=11&layers=ch.swisstopo-karto.skitouren,ch.swisstopo-karto.schneeschuhrouten&bgLayer=ch.swisstopo.pixelkarte-farbe
Hangneigung (fĂŒr Touren):
https://map.geo.admin.ch/?lang=de&E=LON&N=LAT&zoom=13&layers=ch.swisstopo-karto.hangneigung&bgLayer=ch.swisstopo.pixelkarte-farbe
12. StÀdtische POIs via OpenStreetMap (Overpass API)
Kostenlos, kein API-Key nötig. Ideal fĂŒr Restaurants, CafĂ©s, Eisdielen, Museen, SehenswĂŒrdigkeiten in StĂ€dten.
Basis-Query (Bounding Box)
# POIs in einem Gebiet suchen (south,west,north,east)
# Beispiel: Eisdielen in ZĂŒrich-Zentrum
curl -s "https://overpass-api.de/api/interpreter?data=%5Bout%3Ajson%5D%5Btimeout%3A10%5D%3Bnode%5B%22amenity%22%3D%22ice_cream%22%5D%2847.36%2C8.52%2C47.39%2C8.56%29%3Bout%3B"
Query mit Stadt-Area (empfohlen)
# Alle Eisdielen in der Stadt ZĂŒrich
curl -s "https://overpass-api.de/api/interpreter" --data-urlencode 'data=[out:json][timeout:15];
area["name"="ZĂŒrich"]["admin_level"="8"]->.city;
(
node["amenity"="ice_cream"](area.city);
node["shop"="ice_cream"](area.city);
);
out body;'
Wichtige POI-Tags
| Kategorie | OSM-Tag | Beispiel |
|---|---|---|
| đŠ Eisdiele | amenity=ice_cream |
Gelateria |
| đ Restaurant | amenity=restaurant |
+ cuisine=* |
| â CafĂ© | amenity=cafe |
|
| đș Bar/Pub | amenity=bar / pub |
|
| đïž Museum | tourism=museum |
|
| đ Theater | amenity=theatre |
|
| âȘ Kirche | amenity=place_of_worship |
|
| đ° SehenswĂŒrdigkeit | tourism=attraction |
|
| đïž Aussichtspunkt | tourism=viewpoint |
|
| đĄ Freizeitpark | leisure=amusement_arcade |
|
| đ Schwimmbad | leisure=swimming_pool |
+ access=yes |
| đź Spielplatz | leisure=playground |
|
| đł Park | leisure=park |
Beispiel: Museen & SehenswĂŒrdigkeiten in ZĂŒrich Altstadt
curl -s "https://overpass-api.de/api/interpreter" --data-urlencode 'data=[out:json][timeout:15];
(
node["tourism"="museum"](47.366,8.538,47.378,8.548);
node["tourism"="attraction"](47.366,8.538,47.378,8.548);
node["historic"](47.366,8.538,47.378,8.548);
);
out body;'
Beispiel: Familienfreundliche Orte (SpielplÀtze, Parks)
curl -s "https://overpass-api.de/api/interpreter" --data-urlencode 'data=[out:json][timeout:15];
area["name"="ZĂŒrich"]["admin_level"="8"]->.city;
(
node["leisure"="playground"](area.city);
way["leisure"="playground"](area.city);
);
out center body;'
Response parsen (Python)
curl -s "https://overpass-api.de/api/interpreter?data=..." | python3 -c "
import sys, json
data = json.load(sys.stdin)
for el in data.get('elements', []):
tags = el.get('tags', {})
name = tags.get('name', 'Unbenannt')
lat, lon = el.get('lat', el.get('center', {}).get('lat', '')), el.get('lon', el.get('center', {}).get('lon', ''))
addr = tags.get('addr:street', '')
website = tags.get('website', '')
opening = tags.get('opening_hours', '')
print(f'{name}')
if addr: print(f' đ {addr} {tags.get(\"addr:housenumber\", \"\")}')
if opening: print(f' đ {opening}')
if website: print(f' đ {website}')
print()
"
Koordinaten fĂŒr Schweizer StĂ€dte (Bbox)
| Stadt | South | West | North | East |
|---|---|---|---|---|
| ZĂŒrich Zentrum | 47.36 | 8.52 | 47.39 | 8.56 |
| ZĂŒrich Altstadt | 47.366 | 8.538 | 47.378 | 8.548 |
| Bern Zentrum | 46.94 | 7.43 | 46.96 | 7.46 |
| Basel Zentrum | 47.55 | 7.58 | 47.57 | 7.61 |
| Luzern Zentrum | 47.04 | 8.29 | 47.06 | 8.32 |
| Genf Zentrum | 46.19 | 6.13 | 46.21 | 6.16 |
13. Schweiz Tourismus API (MySwitzerland)
â ïž Benötigt API-Key (Header: x-api-key)
Hinweis: Diese API ist primĂ€r fĂŒr Outdoor-Tourismus (Wandern, Bergtouren, Regionen) geeignet. FĂŒr stĂ€dtische POIs (Restaurants, CafĂ©s, Museen) ist die Overpass API (Abschnitt 12) besser.
SehenswĂŒrdigkeiten suchen:
curl -s "https://opendata.myswitzerland.io/v1/attractions/?lang=de&limit=5" \
-H "x-api-key: $MYSWITZERLAND_API_KEY"
Touren suchen:
curl -s "https://opendata.myswitzerland.io/v1/tours/?lang=de&limit=5" \
-H "x-api-key: $MYSWITZERLAND_API_KEY"
Geodaten einer Tour (GeoJSON):
curl -s "https://opendata.myswitzerland.io/v1/tours/TOUR_ID/geodata" \
-H "x-api-key: $MYSWITZERLAND_API_KEY"
Destinationen:
curl -s "https://opendata.myswitzerland.io/v1/destinations/?lang=de" \
-H "x-api-key: $MYSWITZERLAND_API_KEY"
Response-Felder:
nameâ Name der Attraktion/Tourabstractâ Kurzbeschreibunggeo.latitude,geo.longitudeâ Koordinatenclassificationâ Kategorien (Saison, Typ, etc.)
Beispiel-Workflows
"Wo kann ich mit Kindern in ZĂŒrich Eis essen und was gibt's in der NĂ€he?"
- Eisdielen via Overpass API suchen (Abschnitt 12)
- SehenswĂŒrdigkeiten/SpielplĂ€tze in der NĂ€he finden
- ĂV-Verbindung dorthin (Abschnitt 10)
- Kartenlink generieren (Abschnitt 4)
"Wanderung mit Bergbahn und HĂŒtte im Engadin?"
- Bergbahnen suchen (Abschnitt 7)
- Wanderwege finden (Abschnitt 5)
- BerghĂŒtten identifizieren (Abschnitt 6)
- MySwitzerland Touren abfragen (Abschnitt 13)
Tipps
- StĂ€dtische POIs â Overpass API (kostenlos, detailliert)
- Outdoor-Tourismus â MySwitzerland API (braucht Key)
- Karten & Geodaten â Swisstopo (kostenlos)
- ĂV-Fahrplan â transport.opendata.ch (kostenlos)
- Suchergebnisse enthalten
origin(address, sn25, gg25, etc.) zur Kategorisierung - FĂŒr genaue LV95-Koordinaten siehe references/api.md
- Kombiniere Swisstopo-Layer mit Komma:
layers=layer1,layer2,layer3