方向に基づいて重み付けを書くことは可能ですか? パラメータがあるようですreverse
が、それは何を意味し、どうすれば計算できますか?
たとえば、南から北への直線ルートがあります
(0)
|
|
|
(1)
(1) から (0) までと (0) から (1) までの異なる重みが必要です。
====更新
車両の最後の 2 点に基づいて方向を計算しました。
- 入力は車両の最後の 2 点です
- 最後の 2 点に基づいて、角度を計算しています
- 車両のある場所でエッジを見つける
- ジオメトリに基づくエッジの角度の計算
- 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)。そして、両側からルートを計算しています: