1

Play フレームワークに独自のルーティング Web サービスを実装したいと考えています (Java であり、ラピッド プロトタイピング フレームワークであるため)。また、ルーティング エンジンとして Graphhopper を使用したいと考えています。

私の基本的な要件は次のとおりです。

  • ルーティングは、独自のマルチモーダルグラフ データベースに基づく必要があります (EDGES/LINKS と NODES、および重みを導出するためのさまざまなプロパティで構成されます)。
  • 実行時にエッジの重み付けにさまざまなプロパティを選択できるようにしたい (つまり、緊急車両はルートを取ることができ、通常のドライバーは使用できる)
  • グラフは、オーストリアの半分のサイズ (約 800.000 エッジ) に広がっています。

現時点では、多くの質問があり、どこから始めればよいかわかりません。

  1. 輸送車両タイプは EncodingManager のみで定義されていますか、それともルート中に変更することは可能ですか? (実行時にグラフを再構築せずに)
  2. RAMDataAccess と MMapDataAccess の違いは何ですか? 後者は、グラフが(部分的に)ディスクに保存されていることを意味しますか?最初は、グラフがメモリにのみ保存されることを意味しますか?
  3. EDGE オブジェクトの NextA および NextB プロパティがわかりません...3 つ以上の EDGE との交差はどうですか? 他のそれぞれからどれがNextBですか?
  4. 「... nodeA は常に nodeB よりも小さい...」というのは、ID を常に小さくする必要があるということですか? グラフの方向 (つまり、反対方向を指している EDGE) はどうですか?
  5. 出てくるより多くの質問....

私がこれまでにやったこと:

  • 開発者のスニペットと低レベル APIから始めて Graphhopper のドキュメントを調べていましたが、ページにこれは時代遅れだと書かれています?!?! (どういう意味ですか?)

  • Graphhopper github リポジトリーの web サブフォルダーも確認しましたが、そこに組み込まれている OSM データに基づく、すぐに使用できる Graphhopper Web サービスしかありません。

  • 残念ながら、MMapDataAccess を使用してグラフを作成するなど、より包括的な例を見つけることができませんでした(単体テストを調べるためのヒントを編集していただきありがとうございます。もっと見つかると思います)

重み付けパラメータが変更されたときに、独自のグラフを作成して使用する (または再構築する) 方法の例を教えてくれる人に、ここにいるすべての人に非常に感謝しています。

編集:私のポイントをより明確にしようとしました

4

1 に答える 1

2

実行時にデータベースからエッジ重み付けのさまざまなプロパティを選択します

実行時に重み付けを選択する場合は、外部データベースのトリガーを避ける必要があります。それはすべてを遅くします。代わりに、重みを GraphHopperStorage 自体にフィードします。すべてのエッジは、大きなテーブルの行です。必要な重みごとにもう 1 つの列を追加するだけです。

E_CUSTOM_WEIGHT = nextEdgeEntryIndex();

グラフはオーストリアの半分のサイズに広がっています (約 800.000 エッジ)

マルチモーダルグラフで何を意味するのかわかりません(時間依存ですか?)。普通の道路網なら800kはあまりない。ドイツ全体は 10 倍の大きさで、1 GB 未満に収まります

クイックスタートについて。低レベル API の wiki だけが古くなっています。現在の使用法については、LocationIndexTree の単体テストを調べてください。(たぶん、後で wiki を更新できます :))

残念ながら、MMapDataAccess を使用してグラフを作成するなど、より包括的な例を見つけることができませんでした。

構成を変更するだけ、または低レベルの API を好む場合:

graph = new GraphHopperStorage(new MMapDirectory(), encodingManager)

加重パラメータが変更されたときに、自分のグラフを作成して再構築する方法の例を、ここにいる人なら誰でも教えてくれます。

単体テストを調べてください。グラフを作成する方法の例がたくさんあります。「再構築」とは、どういう意味ですか? CH準備のことですか?実行時に重みを計算する場合、CH の準備はできません。

于 2013-11-29T19:44:02.943 に答える