← Back to Skills
General

swiss-geo

mbjoern By mbjoern 👁 3 views ▲ 0 votes

Schweizer Geodaten, POIs und Tourismus.

GitHub
---
name: swiss-geo
description: Schweizer Geodaten, POIs und Tourismus. Orte/Adressen suchen, Höhen abfragen, städtische POIs finden (Restaurants, Cafés, Sehenswürdigkeiten via OpenStreetMap), ÖV-Fahrplan, Kartenlinks. Nutze bei Fragen zu Schweizer Orten, Attraktionen, Ausflügen oder Koordinaten.
---

# Swiss Geo Skill

Zugriff auf Swisstopo-Geodaten für die Schweiz.

## Funktionen

### 1. Orts-/Adresssuche
```bash
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=locations` für Adressen/Orte, `type=layers` für Layer-Suche

### 2. Höhenabfrage
Zuerst Koordinaten via Suche holen, dann in LV95 umrechnen:
```bash
# 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.)
```bash
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` — Gemeindegrenzen
- `ch.swisstopo.swissboundaries3d-kanton-flaeche.fill` — Kantonsgrenzen
- `ch.bafu.bundesinventare-flachmoore` — Flachmoore
- `ch.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 Koordinaten
- `layers`: Komma-getrennte Layer-IDs zum Einblenden

## Beispiel-Workflow: "Wo liegt Matterhorn und wie hoch ist es?"

1. **Suchen:**
```bash
curl -s "https://api3.geo.admin.ch/rest/services/api/SearchServer?searchText=Matterhorn&type=locations&sr=4326"
```
→ lat=45.9766, lon=7.6586

2. **Höhe abfragen (LV95):**
```bash
# 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

3. **Kartenlink:**
```
https://map.geo.admin.ch/?lang=de&E=7.6586&N=45.9766&zoom=10
```

### 5. Wanderwege abfragen
```bash
# 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
```bash
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
```bash
# 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
```bash
# 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):**
```bash
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:**
```bash
curl -s "https://transport.opendata.ch/v1/connections?from=Zürich&to=Bern&limit=3"
```

**Abfahrtstafel:**
```bash
curl -s "https://transport.opendata.ch/v1/stationboard?station=Zürich+HB&limit=5"
```

**Haltestelle suchen:**
```bash
curl -s "https://transport.opendata.ch/v1/locations?query=Paradeplatz"
```

**Beispiel-Output parsen:**
```bash
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:**
```bash
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)
```bash
# 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)
```bash
# 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
```bash
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

... (truncated)
general

Comments

Sign in to leave a comment

Loading comments...