是否可以根据方向编写权重?我看到有reverse
参数,但它意味着什么,我该如何计算它呢?
例如,我有一条从南到北的直线路线
(0)
|
|
|
(1)
我需要从(1)到(0)和从(0)到(1)的不同重量。
====更新
我根据车辆的最后两个点计算了方向:
以下是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)
这是可能的。你可以存储,例如正如我们在Bike2WeightFlagEncoder中所做的那样,前进和后退速度与下坡相比速度较慢,但还有其他应用,如交通影响汽车的速度等。请参阅FastestWeighting如何使用它。
背景:已经正确交换了标志,具体取决于0-> 1还是1-> 0,这是在GraphHopperStorage中的EdgeIterator实现中完成的。
reverse
参数仍未影响任何内容。对于双向算法,此参数可以是true
和false
(对于unidir算法,它始终是false
),因此您需要额外注意反向搜索的权重你读了反向速度。