如何用我自己的多模式图快速启动Graphhopper



我想实现我自己的路由web服务在玩框架(因为它是java,而且是一个快速原型框架)。我还想使用graphhopper作为路由引擎。

我的基本要求是:

  • 路由应该基于我们自己的多模式图数据库(包括EDGES/LINKS和NODES,以及从中导出权重的不同属性
  • 我希望能够在运行时为边缘加权选择不同的属性(即应急车辆可以行驶路线,不允许使用普通的cardrivers)
  • 这张图的面积是奥地利的一半(约800.000条边)

目前我有很多问题,不知道从哪里开始:

  1. 运输车辆类型是否仅使用EncodingManager定义,或者是否可以在路线中更改?(运行时不重建图形)
  2. RAMDataAccess和MMapDataAccess到底有什么区别?后者是否意味着图形(部分)存储在光盘上?第一个是否意味着图形只存储在内存中
  3. 我不理解EDGE对象的NextA和NextB属性。。。有3个或3个以上EDGE的交叉口怎么办?哪个是NextB
  4. "…其中nodeA总是小于nodeB…"是否意味着ID必须总是更小?图形方向(即EDGE指向另一个方向)如何
  5. 还有更多问题要问

到目前为止我做了什么:

  • 我从开发人员代码片段和低级API开始浏览了graphhopper文档,但在第页上它说这已经过时了?!?!(这是什么意思?)

  • 我还检查了graphhopper github存储库的web子文件夹,但只有一个基于OSM数据的现成的graphhopperWeb服务。

  • 不幸的是,我找不到任何更全面的例子,包括用MMapDataAccess构建图edit感谢您提供的关于单元测试的提示,我想我会在那里找到更多)

我非常感谢这里的任何人,他们可以给我一些例子,如何建立我自己的图,并在权重参数变化时使用(或重建它?)。

编辑:试图让我的观点更清晰

在运行时从我们的数据库中选择不同的边缘加权属性

如果要在运行时选择权重,则应避免触发外部数据库。这将减缓一切。相反,将权重输入GraphHopperStorage本身。一张大桌子的每一边都是一排。只需按您需要的重量再添加一列即可:

E_CUSTOM_WEIGHT = nextEdgeEntryIndex();

该图分布在奥地利的一半大小(约800.000个边缘)

不确定您对多模式图(也与时间相关?)的意思。如果正常的道路网800k并不多。整个德国是10倍大,适合1gb以下的

关于快速启动。只是低级别API的维基已经过时了。查看LocationIndexTree的单元测试以了解当前使用情况。(也许你可以在之后更新wiki:)

不幸的是,我找不到任何更全面的例子,包括用MMapDataAccess构建一个图。

您只需更改配置,或者如果您更喜欢低级别的API:

graph = new GraphHopperStorage(new MMapDirectory(), encodingManager)

这里的任何人都可以给我一些例子,当权重参数改变时,如何建立自己的图并重建它。

看看单元测试。很多关于如何构建图的例子。"重建"是什么意思?你是说CH准备?如果您想在运行时计算重量,CH准备是不可能的。

相关内容

  • 没有找到相关文章

最新更新