2014-10-12 33 views
2

我想找到一定半徑內的所有公路方式的成員節點。我看不到如何在不使用交集的情況下做到這一點,但是,這不在API中。例如,我有這樣的:我如何才能找到某個標記點附近的所有節點?

[out:json]; 
way(around:25, 50.61193,-4.68711)["highway"];>->.a; 
(node(around:25, 50.61193,-4.68711) - .a); 
out; 

結果集.a包含我想要的節點,但也半徑之外的節點 - 可能有許多,如果方法是長。我可以找到我不需要的半徑內的所有節點,正如上面的完整查詢所返回的那樣。現在,我總是可以執行第二個around查詢,並在立交橋外進行兩個結果集的交集。或者我可以做另一個區別:

[out:json]; 
way(around:25, 50.61193,-4.68711)["highway"];>->.a; 
(node(around:25, 50.61193,-4.68711) - .a)->.b; 
(node(around:25, 50.61193,-4.68711) - .b); 
out; 

這給出了我想要的結果,但可以簡化嗎?我確定我在這裏錯過了一些東西。

回答

4

事實上,您的查詢可以簡化到我們根本不需要任何差異運算符的程度。我會推薦以下方法:

  • 我們首先查詢某個緯度/經度位置和給定半徑周圍的所有節點。
  • 基於這組節點,我們確定所有的方式,其中包含一些以前找到的節點( - >提示:這就是爲什麼我們不需要任何交集或差異!)。
  • 使用我們的高速公路方式,我們現在再次查看在經緯度位置某個半徑範圍內的所有節點。

立交橋QL這倒像是:

[out:json]; 
node(around:25, 50.61193,-4.68711); 
way(bn)[highway]; 
node(w)(around:25, 50.61193,-4.68711); 
out; 

嘗試在

+0

感謝那些有趣的是,我不知道能過濾器以這種方式進行組合。 – 2014-10-13 23:34:24

相關問題