2017-09-11 63 views
0

此代碼立交橋turbo:關係_inside_地區?

rel[name="Rheinisch-Bergischer Kreis"][admin_level=6][boundary=administrative]; 
out geom; 

輸出在德國我的目標區「萊茵 - 貝吉施縣」。使用此代碼

area[name="Rheinisch-Bergischer Kreis"][admin_level=6][boundary=administrative]; 
rel(area)[boundary="postal_code"]; 
out geom; 

我想獲得那些目標區域內的郵政編碼關係。如果比較兩個輸出,則可以看到第二個查詢中的選定區域大於第一個查詢中的選定區域。 但它應該是相同的大小

西端有一小部分關係到達我的目標區域,因此它們包含在輸出中。我怎樣才能得到其中心位於我的目標區域內的關係?或者只有完全屬於我的目標區域的關係?

編輯

謝謝MMD。我接受了死衚衕,現在我提出我的「解決方案」(和我的實際問題!),也許這將幫助別人的未來:

我使用這個代碼

[timeout:900]; 

area[name="Nordrhein-Westfalen"][admin_level=4][boundary=administrative]; 

rel(area)[admin_level=5][boundary=administrative]; // regierungsbezirke 

foreach(
    out geom; 
    map_to_area; 
    rel(area)[admin_level=6][boundary=administrative]; // kreise 
    foreach(
    out geom; 
    map_to_area; 
    rel(area)[boundary="postal_code"]; 
    out geom; 
); 
); 

得到一個OSM文件,首先輸出admin_level 5,然後輸出admin_level 6,然後輸出屬於該admin_level的每個郵政編碼6.我的目標是獲取將郵政編碼映射到admin_level 6到admin_level的字典5.從OSM內部的順序我可以弄清楚這個文件。 不幸的是,上面的代碼在OSM文件中不止一次報告了37個郵政編碼(grep爲標籤 - >打印postal_code(例如awk) - > sort - > uniq -c - > sort -k 1,1)。這就是我對我在最小范例問題中描述的行爲的發現。因此,我現在要做的是過濾手工在OSM文件中出現多次的37個郵政編碼。然後,我可以從OSM文件構建我的字典以獲取該映射。

+0

https://forum.openstreetmap.org/viewtopic.php?id=59661 – mmd

+0

線程是99%,在一個死衚衕了,所以我希望有人堆棧可能知道的重複 – user3182532

回答

1

關於你最初的問題,我會建議一種利用各自區域現有節點的方法。它假設每個郵政邊界至少有一個地點節點。如果不是出於任何原因,你可以用[舒適性]代替。這是非常接近的。

rel[name="Rheinisch-Bergischer Kreis"][admin_level=6][boundary=administrative]; 
map_to_area; 
node(area)[place]; 
is_in; 
rel(pivot)[boundary="postal_code"]; 
out geom;