swiss-geo
Schweizer Geodaten, POIs und Tourismus.
Installation
npx clawhub@latest install swiss-geo-and-tourism-assistantView the full skill documentation and source below.
Documentation
Swiss Geo Skill
Zugriff auf Swisstopo-Geodaten für die Schweiz.
Funktionen
1. Orts-/Adresssuche
curl -s ""
- 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 ""
Gibt Höhe in Metern über Meer zurück.
3. Feature-Identifikation (Gemeinde, Kanton, etc.)
curl -s ""
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
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?"
curl -s ""→ lat=45.9766, lon=7.6586
# easting ≈ 2600000 + (7.6586-7.4)*73000 = 2618878
# northing ≈ 1200000 + (45.9766-46.95)*111000 = 1091893
curl -s ""→ 4477.5m
5. Wanderwege abfragen
# Wanderwege in einem Gebiet finden (bbox = west,south,east,north)
curl -s ""
# Wanderwege an einem Punkt identifizieren
curl -s ""
Wanderweg-Kategorien:
wanderweg— Gelb markiert (T1)bergwanderweg— Weiss-rot-weiss (T2-T3)alpinwanderweg— Weiss-blau-weiss (T4-T6)
Kartenlink mit Wanderwegen:
6. Berghütten & Unterkünfte
curl -s ""
Kartenlink mit Hütten:
7. Bergbahnen & Seilbahnen
# Seilbahnen mit Bundeskonzession
curl -s ""
# Alle Seilbahnen (swissTLM3D)
curl -s ""
Kartenlink mit Bergbahnen:
8. Naturgefahren
# Lawinengefahr
curl -s ""
# Sturzgefahr (Steinschlag, Felssturz)
curl -s ""
# Hochwasser-Warnkarte (aktuell)
curl -s ""
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:
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):
Lawinenbulletin SLF:
- Aktuell:
- API (experimentell):
Hochwasser BAFU (aktuelle Pegel):
10. ÖV-Fahrplan (transport.opendata.ch)
Verbindung suchen:
curl -s ""
Abfahrtstafel:
curl -s ""
Haltestelle suchen:
curl -s ""
Beispiel-Output parsen:
curl -s "" | 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 ""
Skitouren & Schneeschuhrouten:
Hangneigung (für Touren):
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 ""
Query mit Stadt-Area (empfohlen)
# Alle Eisdielen in der Stadt Zürich
curl -s "" --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 "" --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 "" --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 "" | 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 "" \
-H "x-api-key: $MYSWITZERLAND_API_KEY"
Touren suchen:
curl -s "" \
-H "x-api-key: $MYSWITZERLAND_API_KEY"
Geodaten einer Tour (GeoJSON):
curl -s "" \
-H "x-api-key: $MYSWITZERLAND_API_KEY"
Destinationen:
curl -s "" \
-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?"
"Wanderung mit Bergbahn und Hütte im Engadin?"
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