Graphhopper 获得 Lat/Lon 个塔节点

Graphhopper getting Lat/Lon of tower nodes

我正在尝试获取 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)

我做错了什么?还有其他查询节点属性的方法吗?

你最终是说虚拟节点的问题?边缘状态是否来自 QueryGraph 提供的算法?

您需要 'query graph' 而不是 'graph storage' 来正确回答这些请求。

此外,我们应该对这些请求失败,而不是默默地允许它们,请在此处查看问题:https://github.com/graphhopper/graphhopper/issues/642