2014-02-16 67 views
0

我正在使用Openstreetmap開發自定義路由應用程序。爲此,我必須使用Openstreetmap API(如Overpass)閱讀(至少)某個邊界框中的節點和邊。之後,我將處理節點和邊緣並應用我的路由算法。我的主要問題是確定這個邊界框的大小。確定Openstreetmap路由算法中的邊界框大小

一種方法是讀出一個包含原始節點和目標節點的大邊界框,並處理其中的所有節點和邊,但這看起來過多並且需要從API中加載很長時間。此外,這是無法保證我們擁有所有需要的道路。

另一種方式是讀出原始節點周圍的小型邊界框,從那裏開始路由算法(如Dijkstra),並在需要時讀取/處理地圖的新部分。這種方法必須對API服務器進行幾次調用,這也需要時間。

您是否知道這兩種方法中的一種在OSM路由應用程序中是否很常見,或者如果採用其他方法?

回答

1

您的方法非常不尋常,不推薦。通常你有OSM數據庫的本地副本。例如整個planetextract,例如一個國家。

即時獲取這些數據是一個非常糟糕的主意,你會遇到很多問題。這些API並不是真的準備好支持這種沉重的查詢。遠距離處理數百兆字節的數據。此外,如果您希望能夠快速計算路線,則需要預處理原始數據。

如果您決定安裝本地數據庫,那麼我建議您閱讀switch2osm。有一個guide about building a tile server你可以使用,只是跳過安裝Mapnik,mod_tile,渲染等

+1

+1,但我建議看看路由軟件(瓷磚服務器將無助於路由):https:// wiki .openstreetmap.org/wiki /路由 – Karussell

+0

正確,但本指南有助於創建和更新數據庫:) – scai

+0

這不是你想要的,如果你只想路由:) – Karussell