OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  swiss-geo:瑞士地理数据、兴趣点 (POI) 及旅游助手

swiss-geo:瑞士地理数据、兴趣点 (POI) 及旅游助手

 
  testing ·  2026-02-05 00:42:31 · 3 次点击  · 0 条评论  

名称: swiss-geo
描述: 瑞士地理数据、兴趣点与旅游信息。查找地点/地址、查询海拔、查找城市兴趣点(通过OpenStreetMap获取餐厅、咖啡馆、景点)、公共交通时刻表、地图链接。适用于瑞士地点、景点、短途旅行或坐标相关问题。


瑞士地理数据技能

访问瑞士 Swisstopo 地理数据。

功能

1. 地点/地址搜索

curl -s "https://api3.geo.admin.ch/rest/services/api/SearchServer?searchText=搜索文本&type=locations&sr=4326"
  • 返回经纬度(WGS84)、标签、市镇信息
  • type=locations 用于地址/地点搜索,type=layers 用于图层搜索

2. 海拔查询

首先通过搜索获取坐标,然后转换为 LV95 坐标系:

# WGS84 → LV95 转换(瑞士地区近似公式):
# easting = 2600000 + (经度 - 7.4) * 73000
# northing = 1200000 + (纬度 - 46.95) * 111000

curl -s "https://api3.geo.admin.ch/rest/services/height?easting=东坐标&northing=北坐标&sr=2056"

返回海拔高度(米)。

3. 要素识别(市镇、州等)

curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=经度,纬度&tolerance=0&layers=all:图层ID&sr=4326"

重要图层ID:
- ch.swisstopo.swissboundaries3d-gemeinde-flaeche.fill — 市镇边界
- ch.swisstopo.swissboundaries3d-kanton-flaeche.fill — 州边界
- ch.bafu.bundesinventare-flachmoore — 低地沼泽
- ch.bafu.schutzgebiete-paerke_nationaler_bedeutung — 国家公园

4. 生成地图链接

https://map.geo.admin.ch/?lang=de&topic=ech&bgLayer=ch.swisstopo.pixelkarte-farbe&E=经度&N=纬度&zoom=缩放级别
  • zoom: 0-13(13为最大细节)
  • E/N: WGS84 坐标
  • layers: 逗号分隔的图层ID,用于显示叠加图层

示例工作流:"马特洪峰在哪里?海拔多高?"

  1. 搜索:
curl -s "https://api3.geo.admin.ch/rest/services/api/SearchServer?searchText=Matterhorn&type=locations&sr=4326"

→ 纬度=45.9766, 经度=7.6586

  1. 查询海拔(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.5米

  1. 地图链接:
https://map.geo.admin.ch/?lang=de&E=7.6586&N=45.9766&zoom=10

5. 查询徒步路线

# 在区域内查找徒步路线(bbox = 西,南,东,北)
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/find?layer=ch.swisstopo.swisstlm3d-wanderwege&searchText=地点名称&searchField=name"

# 在特定点识别徒步路线
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=经度,纬度&tolerance=50&layers=all:ch.swisstopo.swisstlm3d-wanderwege&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"

徒步路线类别:
- wanderweg — 黄色标记(T1级)
- bergwanderweg — 白-红-白标记(T2-T3级)
- alpinwanderweg — 白-蓝-白标记(T4-T6级)

包含徒步路线的地图链接:

https://map.geo.admin.ch/?lang=de&E=经度&N=纬度&zoom=10&layers=ch.swisstopo.swisstlm3d-wanderwege&bgLayer=ch.swisstopo.pixelkarte-farbe

6. 山间小屋与住宿

curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=经度,纬度&tolerance=5000&layers=all:ch.swisstopo.unterkuenfte-winter&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"

包含山间小屋的地图链接:

https://map.geo.admin.ch/?lang=de&E=经度&N=纬度&zoom=11&layers=ch.swisstopo.unterkuenfte-winter&bgLayer=ch.swisstopo.pixelkarte-farbe

7. 登山缆车与索道

# 持有联邦特许的索道
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=经度,纬度&tolerance=2000&layers=all:ch.bav.seilbahnen-bundeskonzession&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"

# 所有索道(swissTLM3D)
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=经度,纬度&tolerance=2000&layers=all:ch.swisstopo.swisstlm3d-uebrigerverkehr&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"

包含登山缆车的地图链接:

https://map.geo.admin.ch/?lang=de&E=经度&N=纬度&zoom=11&layers=ch.bav.seilbahnen-bundeskonzession&bgLayer=ch.swisstopo.pixelkarte-farbe

8. 自然灾害

# 雪崩危险
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=经度,纬度&tolerance=100&layers=all:ch.bafu.silvaprotect-lawinen&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"

# 落石危险(岩崩、山体滑坡)
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=经度,纬度&tolerance=100&layers=all:ch.bafu.silvaprotect-sturz&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"

# 洪水预警地图(当前)
curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=经度,纬度&tolerance=500&layers=all:ch.bafu.hydroweb-warnkarte_national&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"

危险图层:
| 图层ID | 描述 |
|----------|--------------|
| ch.bafu.silvaprotect-lawinen | 雪崩区域 |
| ch.bafu.silvaprotect-sturz | 落石区域 |
| ch.bafu.hydroweb-warnkarte_national | 当前洪水预警 |
| ch.bafu.gefahren-waldbrand_warnung | 森林火灾危险 |
| ch.vbs.sperr-gefahrenzonenkarte | 军事禁区 |

包含自然灾害的地图链接:

https://map.geo.admin.ch/?lang=de&E=经度&N=纬度&zoom=12&layers=ch.bafu.silvaprotect-lawinen,ch.bafu.silvaprotect-sturz&bgLayer=ch.swisstopo.pixelkarte-farbe

9. 天气(瑞士)

当前天气(通过 wttr.in):

curl -s "wttr.in/苏黎世?format=%l:+%c+%t+%h+%w&lang=de"
# 示例输出:苏黎世: ⛅️ +5°C 78% ↙12km/h

MeteoSwiss 预警(地图):

https://map.geo.admin.ch/?lang=de&layers=ch.meteoschweiz.gefahren-warnungen

SLF 雪崩公报:
- 当前:https://www.slf.ch/de/lawinenbulletin-und-schneesituation.html
- API(实验性):https://www.slf.ch/avalanche/mobile/bulletin_de.json

BAFU 洪水(当前水位):

https://map.geo.admin.ch/?lang=de&layers=ch.bafu.hydroweb-messstationen_gefahren

10. 公共交通时刻表 (transport.opendata.ch)

搜索行程:

curl -s "https://transport.opendata.ch/v1/connections?from=苏黎世&to=伯尔尼&limit=3"

出发时刻表:

curl -s "https://transport.opendata.ch/v1/stationboard?station=苏黎世+HB&limit=5"

搜索车站:

curl -s "https://transport.opendata.ch/v1/locations?query=Paradeplatz"

解析示例输出:

curl -s "https://transport.opendata.ch/v1/stationboard?station=伯尔尼&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', '')}\")"

参数:
| 参数 | 描述 |
|-----------|--------------|
| from / to | 起点/终点(名称或ID) |
| station | 车站(用于出发时刻表) |
| limit | 最大结果数 |
| date | 日期(YYYY-MM-DD) |
| time | 时间(HH:MM) |
| isArrivalTime | 1 = 使用到达时间而非出发时间 |

11. 其他有用数据

公共交通站点:

curl -s "https://api3.geo.admin.ch/rest/services/api/MapServer/identify?geometryType=esriGeometryPoint&geometry=经度,纬度&tolerance=500&layers=all:ch.bav.haltestellen-oev&sr=4326&imageDisplay=500,500,96&mapExtent=5.9,45.8,10.5,47.8"

滑雪旅行与雪鞋路线:

https://map.geo.admin.ch/?lang=de&E=经度&N=纬度&zoom=11&layers=ch.swisstopo-karto.skitouren,ch.swisstopo-karto.schneeschuhrouten&bgLayer=ch.swisstopo.pixelkarte-farbe

坡度(用于旅行规划):

https://map.geo.admin.ch/?lang=de&E=经度&N=纬度&zoom=13&layers=ch.swisstopo-karto.hangneigung&bgLayer=ch.swisstopo.pixelkarte-farbe

12. 通过 OpenStreetMap 获取城市兴趣点 (Overpass API)

免费,无需 API 密钥。 适用于在城市中查找餐厅、咖啡馆、冰淇淋店、博物馆、景点等。

基础查询(边界框)

# 在区域内搜索兴趣点(南,西,北,东)
# 示例:苏黎世市中心的冰淇淋店
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"

使用城市区域的查询(推荐)

# 苏黎世市的所有冰淇淋店
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;'

重要兴趣点标签

类别 OSM 标签 示例
🍦 冰淇淋店 amenity=ice_cream Gelateria
🍕 餐厅 amenity=restaurant + cuisine=*
☕ 咖啡馆 amenity=cafe
🍺 酒吧/酒馆 amenity=bar / pub
🏛️ 博物馆 tourism=museum
🎭 剧院 amenity=theatre
⛪ 教堂 amenity=place_of_worship
🏰 景点 tourism=attraction
👁️ 观景点 tourism=viewpoint
🎡 游乐园 leisure=amusement_arcade
🏊 游泳池 leisure=swimming_pool + access=yes
🎮 游乐场 leisure=playground
🌳 公园 leisure=park

示例:苏黎世老城的博物馆与景点

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;'

示例:家庭友好场所(游乐场、公园)

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;'

解析响应(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', '未命名')
    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()
"

瑞士城市坐标(边界框)

城市 西
苏黎世市中心 47.36 8.52 47.39 8.56
苏黎世老城 47.366 8.538 47.378 8.548
伯尔尼市中心 46.94 7.43 46.96 7.46
巴塞尔市中心
3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor