2

我使用 Overpass-Turbo 和这个 XML 脚本来下载给定区域的建筑物:

<osm-script>
  <union>
    <query type="way">
      <has-kv k="building"/>      
      <bbox-query {{bbox}}/>
    </query>
    <query type="relation">
      <has-kv k="building"/>      
      <bbox-query {{bbox}}/>
    </query>    
  </union>
  <print mode="body"/>
  <recurse type="down"/>
  <print mode="skeleton" order="quadtile"/>
</osm-script>

除了里面有洞的建筑物外,建筑物都很好下载。像下面的例子一样,这些建筑物是多面体关系(但未标记的建筑物=yes),由外部标记的建筑物=yes 和内部未标记的建筑物组成。

在此处输入图像描述

当我使用我的 Overpass 脚本时,我只得到外部。

那么,这些建筑正确吗?关系不应该也被标记为建筑吗?

其他人知道如何从其外部建筑孩子中选择关系吗?

4

2 回答 2

2

查询是正确的,也返回了“孔”,即与角色inner的关系方式。

请参阅此示例。结果包含关系 7621、外部方式 23316006以及内部方式 2331600723316008

关系本身以及内部方式都没有(也不应该)有任何建筑标签也是正确的。有关更多信息,请参阅OSM wiki 中的多面关系。

您还没有告诉我们哪个应用程序的结果有问题。此应用程序可能不支持或不完全支持多面关系。

编辑:尝试以下查询:

<osm-script>
  <union>
    <query type="way">
      <has-kv k="building"/>      
      <bbox-query {{bbox}}/>
    </query>
    <query type="relation">
      <has-kv k="building"/>      
      <bbox-query {{bbox}}/>
    </query>    
  </union>
  <print mode="body"/>
  <recurse type="up"/>
  <recurse type="down"/>
  <print mode="skeleton" order="quadtile"/>
</osm-script>

您的查询的唯一区别是附加<recurse type="up"/>调用。

另一个编辑:如果我理解正确,第一个递归步骤是修改临时数据,从而“破坏”第二个递归步骤。请尝试以下查询:

<osm-script>
  <query type="way">
    <has-kv k="building"/>      
    <bbox-query {{bbox}}/>
  </query>  
  <union>
    <item/>
    <recurse type="up"/>
  </union>
  <union>
    <item/>
    <recurse type="down"/>
  </union>
  <print mode="body"/>
</osm-script>
于 2016-02-24T12:06:55.517 回答
1

如果您想获得构建方式,包含构建方式和其他内部方式的多面体,以及使用外部和内部方式标记为“构建”的多面体,这是最终解决方案:

<osm-script>
  <query type="way">
    <has-kv k="building"/>      
    <bbox-query {{bbox}}/>
  </query>  
  <union>
    <item/>
    <recurse type="up"/>
  </union>
  <union>
    <item/>
    <recurse type="down"/>
  </union>
  <print mode="body"/>

  <query type="relation">
    <has-kv k="building"/>      
    <bbox-query {{bbox}}/>
  </query>  
  <union>
    <item/>
    <recurse type="down"/>
  </union>
  <print mode="body"/>
</osm-script>
于 2016-04-01T07:50:35.150 回答