0

私の学術プロジェクトの一環として、OSM か​​ら提供されたデータに基づいてルーティング エンジンを構築する必要があります。OSM のデータ モデルを確認しましたが、問題ありません。しかし、OSM XML ファイルを、検索アルゴリズム (ダイクストラ、A* など) を適用するために使用できるグラフ構造 (ノードとエッジ) に変換するのに問題があります。高速な読み取り/書き込みを可能にするために、グラフをメモリに保存したいと考えています。

誰でも光を当てたり、これを行う方法についてのテクニックを提案したり、さらなる研究への指針を提供したりすることができます.

プロジェクトの目的に反するため、既存のルーティング エンジンを再利用することは許可されていないことに注意してください。

4

1 に答える 1

4

あなたがする必要があるのは次のとおりです。

  1. すべての<node>アイテムのノードを作成する
  2. すべて<way>のエントリは<nd>項目の順序付けられたリストであり、それぞれがノードへの後方参照です。したがって、各 について<way>、その をペアワイズに反復し、<nd>参照される 2 つのノード間に弧を作成します。

XML データはウェイの前にすべてのノードを定義するため、ストリーミング XML パーサーを使用して 1 回のパスでこれを行うことができます。

データには本質的に距離が含まれていないため、各ノードのラトロンから距離を計算する必要があります。highway=*また、ルーティングでは道路の種類 ( ) とアクセス情報 ( )も考慮に入れる必要がaccess=*あります。おそらく、通過できないウェイ ( など) も無視する必要がありますwaterway=streamが、それはすべて特定の状況に依存します。

http://wiki.openstreetmap.org/wiki/Elements

于 2013-01-21T12:51:22.207 に答える