OSM API立交桥
OSM API Overpass
我正在尝试拉动某个国家/地区在 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 的文档。根据文档,tag/value 应用于 nodes 并关闭 ways 并且似乎也适用于 relations 基于社区偏好(尽管文档中不鼓励这样做)。
要查询节点、方式和关系,您可以使用缩写 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)
我正在尝试拉动某个国家/地区在 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 的文档。根据文档,tag/value 应用于 nodes 并关闭 ways 并且似乎也适用于 relations 基于社区偏好(尽管文档中不鼓励这样做)。
要查询节点、方式和关系,您可以使用缩写 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)