如何解决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 个特征,如下所示:
我知道这缺少一个大型冰川 (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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。