2016-02-24 58 views
1

我用立交橋渦輪增壓與該XML腳本下載建築物在某一地區:如何使用Overpass API獲取建築漏洞?

<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> 

建築很好下載,除了那些與內孔。 與以下示例一樣,這些建築物是由多層次多邊形關係(但未標記爲building = yes)組成的,其中包含外部標記的building = yes和內部未標記的內容。

enter image description here

當我用我的劇本立交橋,我只得到外。

那麼,這些建築是否正確?這個關係不應該被貼上標籤嗎?

其他人有沒有人知道如何從外部建築物的孩子中選擇關係?

回答

2

查詢是正確的,並且還返回「孔」,即與角色內部的關係的方式。

看到這個example。結果包含relation 7621,外部way 23316006以及內部ways 2331600723316008

關係本身以及內在方式都不(也不應該)有任何建築標籤也是正確的。有關更多信息,請參閱multipolygon relations in the 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> 
+0

感謝您的回答!實際上,該應用程序是我自己的用於ArcGIS的OSM數據加載器,採用Java開發。這個應用程序管理良好的multipolygon關係,但在這種情況下(http://overpass-turbo.eu/s/eWp),沒有選擇洞。 – superrache

+1

對。似乎需要額外的向上遞歸步驟。看看我更新的答案是否可以解決您的問題。 – scai

+0

好的,我沒有看到區別。所以我嘗試了遞增,現在只選擇了包含建築物外部和內部方式的多面關係。簡單的建築方式不是。示例:http://overpass-turbo.eu/s/flf我試過了,但我沒有看到任何解決方案來選擇multipolygon關係和簡單的構建方法。 – superrache

0

這裏是最終的解決方案,如果你想獲得建設方式,包含建設方式等內部方式multipolygons和multipolygons標記爲「建築」與他們的內部和外部的方式:

<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>