【问题标题】:How can I get all OSM ways and nodes tagged amenity, plus way nodes using the Overpass API?如何使用 Overpass API 获取所有 OSM 方式和节点标记的便利设施,以及方式节点?
【发布时间】:2013-05-10 11:42:06
【问题描述】:
我正在尝试使用“amenity”键获取所有路径和节点,这与联合可以正常工作,但我还需要组成路径的节点,并且递归标记没有按预期工作:
<osm-script>
<union>
<query type="way">
<has-kv k="amenity" regv="."/>
<bbox-query s="%s" w="%s" n="%s" e="%s"/>
</query>
<query type="node">
<has-kv k="amenity" regv="."/>
<bbox-query s="%s" w="%s" n="%s" e="%s"/>
</query>
</union>
<recurse type="way-node" />
<print/></osm-script>
%s 是占位符。谢谢!
【问题讨论】:
标签:
api
openstreetmap
overpass-api
【解决方案1】:
使用您的代码,方式查询的结果被递归的结果替换。因此,您应该在输出中包含舒适通道的(通常未标记的)节点,而不是通道本身。
然而,将这些放在一个联合中意味着这些方式和它们的节点最终都会出现在您的输出中:
<osm-script>
<union>
<query type="node">
<has-kv k="amenity"/>
<bbox-query {{bbox}}/>
</query>
<query type="way">
<has-kv k="amenity"/>
<bbox-query {{bbox}}/>
</query>
<recurse type="way-node" />
</union>
<print/>
</osm-script>
在您的示例中,{{bbox}} 是多个参数的占位符。如果您想自己测试修改后的查询,请尝试this Overpass Turbo link。
(另请注意,您可以省略 catch-all regv 参数。)