2014-11-05 30 views
0

我想查詢Overpass Api找出特殊關係(鐵路)的距離。該請求是罰款,並返回我的所有relationwaynode對象我感興趣的實例漢堡:立交橋關係鐵路段

[out:json];(rel(53.55224324163863, 10.006766589408304, 53.55314275836137, 10.008081410591696)["route"="train"];>;);out body; 

立交橋,每個relation對象有定義這種關係的成員。對於way對象,您可以解析其node屬性的緯度/經度,並計算該方式的距離。如果你總結所有的距離,這似乎是合理的。

不過,也有從類型node的是relation成員(大多數時候,他們有「停止」一role),它似乎代表從relation站的正確順序。但是,在之間的成員,他們大致在最後。 如果我試圖在路上看到停車位,它們不會全部存在。我該如何計算兩個特定站點之間的距離?

回答

1

似乎有關於關係的誤解。關係成員不一定需要排序。因此,如有必要,您可能必須自己對會員進行排序。

你可以看看JOSM它有一個整潔的排序算法的各種類型的關係。但我認爲它不能將角色站點的成員放置在正確的位置。這並非總是可行,因爲一種方式不一定必須在每個具有停止角色的節點處分開。這也意味着單個方法可以包含多個具有停止角色的節點,這使得無法正確排序關係成員。除非你做一些預處理,以便相應地分開每一路。

對於計算每個停止點之間的距離,似乎沒有必要對元素進行排序。只需循環遍歷所有每個節點,並檢查每個節點是否在相應關係中具有停止角色。當到達路徑的盡頭時,繼續與在開始或結束時共享同一節點並且也是關係成員的節點。

+0

如果方法沒有排序,那麼迭代它們將非常困難。我該如何找到第一個成員開始迭代? – 2014-11-05 22:59:39

+0

第一個(或最後一個)方法是第一個(或最後一個)節點不以任何其他方式共享的方法。另外請注意,連續的方式可以有不同的方向,即方式的最後一個節點可以是後續方式的第一個或最後一個節點。如果您在理解數據模型時遇到問題,可以直接使用[editors]之一(https://wiki.openstreetmap.org/wiki/Editors#Top_three_editors)查看地圖數據。 – scai 2014-11-06 07:47:57

+0

我的最後一個trys節目,你找不到第一個成員。我花了3個小時來調試我的代碼,僅僅是爲了發現,有時候缺少鏈接,這意味着沒有多個匹配的開始或結束節點... – 2014-11-07 05:15:08