3

ルートプランナーを行う必要があるプロジェクトで使用することを考えています。最初の問題は、重みの値を表す非常に動的な変数があることです。これは、これらの変数のいずれかが変更されるたびに「縮小された」グラフを再作成する必要があるため、縮小階層アルゴリズムを使用できないことを意味します。そのため、CH アルゴリズムを使用しないようにグラフホッパーを構成することを考えていました。

このシナリオでは、Graphhopper コードを変更して、この動的なエッジの重み値をサポートすることは可能ですか? たとえば、ノード A とノード B とエッジ A--B があるとします。このエッジの値が 3 であると仮定しましょう このシナリオでは、エッジ A--B の値を 3 から 6 または 3 から 2 に変更できるイベントが発生する可能性があります この機能をサポートするためにコードを変更できますか? これは DataAccess の実装に依存していますか?

4

1 に答える 1

5

エッジの速度または距離を変更するには、(たとえば座標から) EdgeIteratorState を取得してから、フラグまたは距離を設定する必要があります。コード スニペットを次に示します。

// find edge for lat,lon point
QueryResult qr = locationIndex.findClosest(lat, lon, EdgeFilter.ALL_EDGES);
if(!qr.isValid())
      throw RuntimeException("Cannot find nearby location " + lat+","+lon);
EdgeIteratorState edge = qr.getClosestEdge();
// use existing flags to reuse access information
long existingFlags = edge.getFlags();
// set speed
edge.setFlags(carFlagEncoder.setSpeed(existingFlags, newSpeed));
// set distance
edge.setDistance(newDistance);
于 2014-01-22T15:33:03.707 に答える