OSM API 立交桥

问题描述

我正在尝试提取指定国家/地区 OSM 中输入的所有冰川,但我注意到我只提取了可用冰川的一小部分。例如,当我运行以下代码时:

import overpass from shapely.geometry 
import shape,polygon
api = overpass.API()
api = overpass.API(endpoint="https://overpass.myserver/interpreter")
api = overpass.API(timeout=600)
query = 'area["ISO3166-1"="IS][admin_level=2];(way["natural"="glacier"](area););'
result = api.get(query,verbosity='geom')
import geopandas
results = geopandas.GeoDataFrame.from_features(result['features'])

结果有 132 个特征,如下所示:

Iceland Glaciers

我知道这缺少一个大型冰川 (Vatnajökull),它确实出现在 OSM 中,osm id 为 406429。

有没有想过为什么我的查询结果没有出现这种情况?

解决方法

OSM Wiki 标记文档是编写 Overpass 查询的有用起点。这是 natural=glacier 的文档。标签/值根据文档应用于节点和关闭方式,并且似乎也适用于基于社区偏好的关系(即使文档中不鼓励这样做)。

要查询节点、路和关系,您可以使用缩写 nwr 而不是联合 (node[natural=glacier];way[natural=glacier];relation[natural=glacier];);。作为旁注,您可以删除 admin_level=2,因为 ISO3166-1 代码是唯一标识符。

这是 Python 请求:

query = 'area["ISO3166-1"="IS"];nwr[natural=glacier](area);out geom;'
response = api.get(query)