Graphhopper - 如何设置路由配置文件"foot"



如何设置路线配置文件"foot"?使用默认的配置文件"car",我无法计算(树林中(任何位置与附近人行道之间的距离。

我得到的错误信息是:

> Encoding does not match: Graphhopper config:
> foot|speed_factor=1.0|speed_bits=4|turn_costs=false|version=5 Graph:
> car|speed_factor=5.0|speed_bits=5|turn_costs=false|version=2 Change
> configuration to match the graph or delete ...
> gelederland-latest.osm-gh/

我的代码是:

graphHopper = new GraphHopper().forMobile();
EncodingManager encodingManager = EncodingManager.create( FlagEncoderFactory.FOOT);
graphHopper.setEncodingManager(encodingManager);
graphHopper.setProfiles(Arrays.asList( new ProfileConfig("my_foot").setVehicle("foot").setWeighting("fastest")));
graphHopper.load(getRoutingDataFolder());

我使用的路由数据?首先,我通过http://download.geofabrik.de/europe/netherlands/gelderland.html.之后,我通过以下命令准备了Graphhopper路由数据:

./graphhopper.sh -a import -i gelderland-latest.osm.pbf

更新:这足够了吗?我正在尝试:

./graphhopper.sh -a import -p foot,bike,car -i netherlands-latest.osm.pbf  

问题是Graph(即graphhopper生成的路由文件(与应用程序中的配置设置不一致。

在下面的答案中,我想有一个步行、自行车和汽车的路线设施。当然,只有一种类型的"车辆"才能获得路线。我还测试了路由配置文件"foot"。

为了实现这种对齐,我首先在graphhopper项目的克隆中编辑了config.yml文件。在配置文件中,我更改了:

graph.flag_encoders: foot,bike,car

和:

profiles:
- name: foot
vehicle: foot
weighting: fastest

profiles_ch:
- profile: foot

我用这个命令生成了图形数据:

./graphhopper.sh -a import -p foot,bike,car -i netherlands-latest.osm.pbf  

然后,用相同的配置文件配置你的应用程序是很重要的。因此,即使只使用应用程序中的"脚部"配置文件,也会出现不匹配——正如错误消息所示。

该应用程序包含以下代码,用于测量任何点到路径的距离:

graphHopper = new GraphHopper().forMobile();
EncodingManager encodingManager = EncodingManager.create( FlagEncoderFactory.FOOT + "," + FlagEncoderFactory.BIKE + "," + FlagEncoderFactory.CAR);
graphHopper.setEncodingManager(encodingManager);
graphHopper.setProfiles(Arrays.asList(
new ProfileConfig("my_foot").setVehicle("foot").setWeighting("fastest"),
new ProfileConfig("my_bike").setVehicle("bike").setWeighting("fastest"),
new ProfileConfig("my_car").setVehicle("car").setWeighting("fastest")));
graphHopper.load(routingDataFolder);