Play フレームワークに独自のルーティング Web サービスを実装したいと考えています (Java であり、ラピッド プロトタイピング フレームワークであるため)。また、ルーティング エンジンとして Graphhopper を使用したいと考えています。
私の基本的な要件は次のとおりです。
- ルーティングは、独自のマルチモーダルグラフ データベースに基づく必要があります (EDGES/LINKS と NODES、および重みを導出するためのさまざまなプロパティで構成されます)。
- 実行時にエッジの重み付けにさまざまなプロパティを選択できるようにしたい (つまり、緊急車両はルートを取ることができ、通常のドライバーは使用できる)
- グラフは、オーストリアの半分のサイズ (約 800.000 エッジ) に広がっています。
現時点では、多くの質問があり、どこから始めればよいかわかりません。
- 輸送車両タイプは EncodingManager のみで定義されていますか、それともルート中に変更することは可能ですか? (実行時にグラフを再構築せずに)
- RAMDataAccess と MMapDataAccess の違いは何ですか? 後者は、グラフが(部分的に)ディスクに保存されていることを意味しますか?最初は、グラフがメモリにのみ保存されることを意味しますか?
- EDGE オブジェクトの NextA および NextB プロパティがわかりません...3 つ以上の EDGE との交差はどうですか? 他のそれぞれからどれがNextBですか?
- 「... nodeA は常に nodeB よりも小さい...」というのは、ID を常に小さくする必要があるということですか? グラフの方向 (つまり、反対方向を指している EDGE) はどうですか?
- 出てくるより多くの質問....
私がこれまでにやったこと:
開発者のスニペットと低レベル APIから始めて Graphhopper のドキュメントを調べていましたが、ページにこれは時代遅れだと書かれています?!?! (どういう意味ですか?)
Graphhopper github リポジトリーの web サブフォルダーも確認しましたが、そこに組み込まれている OSM データに基づく、すぐに使用できる Graphhopper Web サービスしかありません。
残念ながら、MMapDataAccess を使用してグラフを作成するなど、より包括的な例を見つけることができませんでした(単体テストを調べるためのヒントを編集していただきありがとうございます。もっと見つかると思います)
重み付けパラメータが変更されたときに、独自のグラフを作成して使用する (または再構築する) 方法の例を教えてくれる人に、ここにいるすべての人に非常に感謝しています。
編集:私のポイントをより明確にしようとしました