GraphHopper是否支持动态边缘权重?

时间:2014-01-15 08:32:54

标签: graphhopper

我们正在考虑在我们需要做路线规划的项目中使用它。 我们遇到的第一个问题是我们有非常dyanimc变量代表我们的重量值;这意味着我们不能使用收缩层次算法,因为每当这些变量中的一个发生变化时我们应该重新创建“收缩”图,所以我们考虑配置graphhopper以便不使用CH算法

在这种情况下,是否可以修改graphhopper代码以支持此动态边缘权重值? 例如,假设我们有节点A和节点B以及边缘A-B;我们假设这条边的值为3 在我们的场景中,可以有一个事件可以将边缘A-B的值从3修改为6或从3修改为2 我们可以修改代码以支持此功能吗?这是否依赖于DataAccess实现?

谢谢 安吉洛

1 个答案:

答案 0 :(得分: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);