2012-04-01 30 views
4

Input Graph and Output Graph after processing思想與處理OSM數據圖表用於輸出簡單城市/鄉村節點與

它們之間邊緣的上方示出了圖像3個元素:

  • 輸入圖形 - 從OSM數據創建了一個國家。
  • 步驟 - 將輸入圖轉換爲輸出圖
  • 輸出圖 - 在每條道路上沒有詳細節點的輸入圖的簡單版本。它僅包含根據輸入圖道路計算的城市/村莊節點和邊緣。

我想從輸入圖創建輸出圖。換句話說,我需要一張圖讓我快速計算出這個問題的答案:如果我從3號城開始,然後開車去7號城,我會經過哪個城市/村莊? 在這個例子中,答案是:

  • 你將被傳遞城市/村莊:5,6,7
  • 你將被傳遞城市/村莊:2,4,6,7
  • 您將通過城市/村莊:5,4,6,7

從OSM文件中檢索城市/鄉村節點。輸出圖邊應該根據輸入圖的邊緣計算權重。重量是從一個節點到下一個節點的距離(以米爲單位)。

在原始的OSM數據文件(和輸入圖)中,描述城市或村莊的節點不與道路邊緣連接。我看到我必須處理這個圖表,只抓取代表城市和村莊的節點,然後嘗試匹配(根據城市/鄉村節點到道路節點的距離),並製作一些捷徑,只連接城市/村莊節點。

我的問題是:

  • 一直這樣已經做了什麼?我不想重複某些身體的工作。
  • 您將如何創建輸出圖?

回答

1

你可以找到一個基於路由算法的路徑。這有幾個軟件實現,像osmand。 然後,在OSM數據中,不要查找代表城市的節點,而應查看城市的行政邊界(多邊形)。 此時,使用經典幾何算法,可以計算路線和管理邊界之間的交點列表。

該方法解決了您的問題,但不會將簡化圖形計算爲中間步驟。因此,它對每個請求的計算機密集程度更高。

恐怕用道路做成的圖形,在兩點之間有很多不同的路徑,以各種順序穿過數據中的所有城市。因此,您需要一些優化標準來選擇少量路徑(短距離,短行程時間,不收費,景區道路等)。這導致需要一些路由算法,這導致了上述解決方案...