我如何获得所有OSM方式和节点标记的舒适性,以及使用Overpass API的节点方式?

时间:2013-05-15 18:54:33

标签: api openstreetmap overpass-api

我正在尝试使用'amenity'键获取所有方法和节点,这对于union来说没问题,但是我还需要构成一种方式的节点,并且recurse标签不能按预期工作:

<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是占位符。谢谢!

1 个答案:

答案 0 :(得分: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参数。)