2012-12-30 14 views
7

最近ルーティングライブラリOSRMを使用して遊んでいます。これは、最短経路問題を解決することに非常に効率的であると思われる。しかし、私はそれを使って単一のソース最短経路を計算する方法を見ていませんでした。より正確には、一定の出発点が与えられた場合、所与の距離の限界内に達することができるすべての位置(例えば、30分以内に到達可能)までの最短距離を計算する。OSRMで単一ソース最短パスを計算する方法は?

OSRMは内部的に縮小階層を使用します。私の理解では、このテクニックは実世界のデータの2つの場所の間の距離を計算する場合、Dijkstraのアルゴリズムより優れています。しかし、私の問題では、Dijkstraのアルゴリズムがうまく適合しているようですね。

OSRMは、単一ソースの最短経路問題(距離に制限があります)を計算するAPIを提供していますか?このタイプの問題により適した他の無料ルーティングライブラリはありますか? OpenStreetMapデータを良好にサポートするものが望ましい。

答えて

6

OSRMでは、「1対1ルーティング」で高速化するために、縮小階層(CH)を使用しています。 CHを動作させるには、適応された双方向アルゴリズム(A *、Dijkstra、...)が必要です。そのため、単一のソースケースはより困難です。しかし、1対多のアルゴリズムは、あなたが望む目的地が分かっていれば比較的簡単です。

ルックアップテーブルを使用する「目標ではない双方向の検索」のソリューションが必要な場合は、論文「Fast Detour Computation for Ride Sharing」またはhereもご覧ください。

その他の無料ルーティングライブラリ?

私はJavaのGraphHopperプロジェクトを示唆している;)

が、よりもちろんありますhttp://wiki.openstreetmap.org/wiki/Routing

関連する問題