我正在尝试获取EdgeIteratorState e 的基数和调整节点的lat / lon。我正在路由并从路由请求中获取路径。从Path对象我得到EdgeIteratorStates。
我是这样做的:
double lat = this.getGraphHopperStorage().getNodeAccess().getLatitude(e.getBaseNode());
double lon = this.getGraphHopperStorage().getNodeAccess().getLongitude(e.getBaseNode());
double latadj = this.getGraphHopperStorage().getNodeAccess().getLatitude(e.getAdjNode());
double lonadj = this.getGraphHopperStorage().getNodeAccess().getLongitude(e.getAdjNode());
这适用于大多数边缘。但在某些情况下(每次路线计算2次),我会得到一些长度为一些米的边缘,但两个节点中的一个位于1000公里以外。
一个例子:
edgeid: 23883882
base: 53.45419410886304, 10.13771746615434;
adj: 47.80398136684257, 10.344953879973751;
length of edge: 75.45741857808768 m
speed: 45.0
waygeometry: (47.80348739333795,10.34522731628777,741.0), (47.80375542798092,10.345045708381662,741.0), (47.80398136684257,10.344953879973751,733.0)
我做错了什么?有没有其他方法来查询节点属性?
答案 0 :(得分:1)
您最终是指虚拟节点的问题吗?来自算法的边缘状态是否来自QueryGraph?
您需要使用此“查询图表”来正确回答这些请求,而不是“图表存储”。
此外,我们应该对这些请求失败而不是默默地允许它们,请在此处查看问题:https://github.com/graphhopper/graphhopper/issues/642