2015-05-04 46 views
0

我试图按照文档(https://github.com/graphhopper/graphhopper/blob/master/docs/core/weighting.md)中描述的示例在我的graphhopper路由中封锁边缘。 我试图找到这不得不封闭graphhopper路由中的块节点/边缘 - 错误的边缘被阻止

EdgeIteratorState edge = hopper.getLocationIndex().findClosest(lat, lon, EdgeFilter.ALL_EDGES).getClosestEdge(); 
运行我的应用程序时

但得到的边缘,它显示了一些完全不同的边缘被封锁,没有我试图阻止的。 我做错了什么,你有什么提示吗?自从四天以来,我就陷入了这个问题,没有任何想法。

+0

没有任何进一步的信息很难猜测。 lat,lon是否按正确的顺序? getClosestEdge.getEdge实际上有一些正值吗?阻塞权重是否被正确选取并且实际上包含找到的边缘ID? – Karussell

+0

有一个类似的例子。也许你之前尝试过? https://github.com/karussell/graphhopper-traffic-data-integration/ – Karussell

+0

感谢您的快速回复!是的,lat/long的顺序是正确的。为了更具体一些: ,同时通过我的BlockingWeighting类的CalcWeight-Method调试时,它为我提供了以下计算路径的边缘: 28 [22-> 1,22-> 16], 30 [22 - > 1。 22-> 16], 20 20 13-6, 19 19 6-5, 12 [1-22,17] 1-20,12-2], 和禁止边是0.9和10. 请看看![附图](http://www.c-it.at/Screenshot_2015-05-05-08-32-47.jpg)。 - 计算出的路线以蓝色绘制。 我正在使用离线地图进行室内路由 - 也许我在创建地图时做了错误的事情? –

回答

0

不知道的是,如果这是优雅的,但我想我找到了一个解决办法:在 我加

prepare.chWeighting=no 

的graphhopper.sh的config.properties,并在加载图形,我设置

tmpHopp.setCHEnable(false); 

要事后块中的边缘,我简单地设置速度这个边缘到0

FlagEncoder footEncoder = TempAppData.getInstance().getHopper().getEncodingManager().getEncoder("foot"); 
       edge.setFlags(footEncoder.setSpeed(edge.getFlags(), 0)); 
+1

不建议将速度设置为0。而是使用访问属性。 footEncoder.setAccess。另外,如果您在应用程序中创建漏斗,则无需使用Java API更改配置,只需一个就可以。我还更新了权重文档,以避免将来对chWeighting产生误解。 – Karussell

+0

完美,就是这样!非常感谢你! –