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

Ang*_*ata 3 graphhopper

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

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

谢谢Angelo

Kar*_*ell 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);
Run Code Online (Sandbox Code Playgroud)