找不到应该可以在自己的 Graphhopper 安装上路由的路由
Route not found that should be routable on own Graphhopper installation
问题:
在我的 Graphhopper (GH) 安装中,有一些情况是不可路由的,在我看来应该是可路由的。同样的路由在 GH Demo 版本上是可路由的,而我的安装使用的是最新的 GH 代码。
示例:
This route 在 GH 演示服务器上是可计划的,而我的机器上出现 "not found" 错误。
尽管当我调用 locationIndex
中的第二个点时:
LocationIndex index = hopper.getLocationIndex();
QueryResult qr = index.findClosest( place.lat, place.lon, EdgeFilter.ALL_EDGES );
GHPoint3D snappedPoint = qr.getSnappedPoint();
找到了(距离该点约 20-30 米)。这让我相信我使用的 OSM 数据是正确的(我仔细检查了上个月是否连接了道路并且没有编辑过,因为我使用的是一个月前的 OSM 数据)。
This is another example 编辑:用新数据集修复了! 在我的机器上无法规划的路线,而它在 GH 演示服务器上工作并在 locationIndex
中找到。我没有修改 GH 代码。
配置:
我在服务器上使用的配置如下:
graph.dataaccess=RAM_STORE
prepare.chWeighting=no
osmreader.wayPointMaxDistance=1
graph.flagEncoders=bike,foot
web.jsonpAllowed=true
问题:
我可以配置什么来允许这些路由可路由吗?或者你能给我指出正确的方向吗?我的问题的原因是什么?
编辑: 使用新数据集,我发布的第二个示例是 'fixed'。第一个还在..
还有一个new example。好像我的路由机器不能用GH用的'main'路来达到一个结果。我仔细检查了自行车标志编码器(所有 3 个)是否与主 GH 版本相同,它们是。这部分可以通过我之前的 OSM 数据集进行路由,所以我去看看 OSM 数据发生了什么变化。不幸的是,我看不到数据集中到底发生了什么变化,但是与主干道相邻的自行车道指定了 oneway=true 。可能还是和我的oneway设置有关?
在Karussel的帮助下,我们找到了问题所在。
问题是在准备图表时图表中的某些 'sub-networks' 被删除,因为它们低于封闭岛屿可路由所需的最小节点数量的阈值。可以使用 config.properties
中的以下属性来降低此阈值(参见 this question)
prepare.minOnewayNetworkSize=200
prepare.minNetworkSize=100
这将解决我在问题中的示例。虽然因为我正在为两种车辆(步行和自行车)创建一个准备好的图表,但是对于当前的 Graphhopper 构建,这个设置没有被使用。所以这只适用于图中有一辆汽车的情况。
可以找到当前 Github 问题 here。
问题:
在我的 Graphhopper (GH) 安装中,有一些情况是不可路由的,在我看来应该是可路由的。同样的路由在 GH Demo 版本上是可路由的,而我的安装使用的是最新的 GH 代码。
示例:
This route 在 GH 演示服务器上是可计划的,而我的机器上出现 "not found" 错误。
尽管当我调用 locationIndex
中的第二个点时:
LocationIndex index = hopper.getLocationIndex();
QueryResult qr = index.findClosest( place.lat, place.lon, EdgeFilter.ALL_EDGES );
GHPoint3D snappedPoint = qr.getSnappedPoint();
找到了(距离该点约 20-30 米)。这让我相信我使用的 OSM 数据是正确的(我仔细检查了上个月是否连接了道路并且没有编辑过,因为我使用的是一个月前的 OSM 数据)。
This is another example 编辑:用新数据集修复了! 在我的机器上无法规划的路线,而它在 GH 演示服务器上工作并在 locationIndex
中找到。我没有修改 GH 代码。
配置:
我在服务器上使用的配置如下:
graph.dataaccess=RAM_STORE
prepare.chWeighting=no
osmreader.wayPointMaxDistance=1
graph.flagEncoders=bike,foot
web.jsonpAllowed=true
问题:
我可以配置什么来允许这些路由可路由吗?或者你能给我指出正确的方向吗?我的问题的原因是什么?
编辑: 使用新数据集,我发布的第二个示例是 'fixed'。第一个还在..
还有一个new example。好像我的路由机器不能用GH用的'main'路来达到一个结果。我仔细检查了自行车标志编码器(所有 3 个)是否与主 GH 版本相同,它们是。这部分可以通过我之前的 OSM 数据集进行路由,所以我去看看 OSM 数据发生了什么变化。不幸的是,我看不到数据集中到底发生了什么变化,但是与主干道相邻的自行车道指定了 oneway=true 。可能还是和我的oneway设置有关?
在Karussel的帮助下,我们找到了问题所在。
问题是在准备图表时图表中的某些 'sub-networks' 被删除,因为它们低于封闭岛屿可路由所需的最小节点数量的阈值。可以使用 config.properties
中的以下属性来降低此阈值(参见 this question)
prepare.minOnewayNetworkSize=200
prepare.minNetworkSize=100
这将解决我在问题中的示例。虽然因为我正在为两种车辆(步行和自行车)创建一个准备好的图表,但是对于当前的 Graphhopper 构建,这个设置没有被使用。所以这只适用于图中有一辆汽车的情况。
可以找到当前 Github 问题 here。