2

方向に基づいて重み付けを書くことは可能ですか? パラメータがあるようですreverseが、それは何を意味し、どうすれば計算できますか?

たとえば、南から北への直線ルートがあります

(0)
 |
 |
 |
(1)

(1) から (0) までと (0) から (1) までの異なる重みが必要です。

====更新

車両の最後の 2 点に基づいて方向を計算しました。

  1. 入力は車両の最後の 2 点です
  2. 最後の 2 点に基づいて、角度を計算しています
  3. 車両のある場所でエッジを見つける
  4. ジオメトリに基づくエッジの角度の計算
  5. 2 つのエッジの比較

Scala のコードは次のとおりです。

def isReverseDirection(target: Point, previous: Point) = {
    val angle = RouteUtils.angleFromCoordinate(previous.lat, previous.long, target.lat, target.long)
    val edgeState = findEdge(target.lat, target.long)
    val pl = edgeState.fetchWayGeometry(3)

    val edgeAngle = RouteUtils.angleFromCoordinate(pl.getLat(0), pl.getLongitude(0), pl.getLat(pl.getSize - 1),
      pl.getLongitude(pl.getSize - 1))

    Math.abs(edgeAngle - angle) > 90
}

このソリューションをテストしましたが、機能しているようです。実装する必要がありますCar2FlagEncoder。赤い点で、移動中の車両からブロッキング データを受信しました (0) -> (1)。そして、両側からルートを計算しています:

(0) -> (1)

(1) -> (1)

4

1 に答える 1