我想在 play 框架中实现我自己的路由 Web 服务(因为它是 java 并且它是一个快速原型设计框架)。我也想使用 graphhopper 作为路由引擎。
我的基本要求是:
- 路由应该基于我们自己的多模式图数据库(由 EDGES/LINKS 和 NODES 以及不同的属性组成,以从中获取权重
- 我希望能够在运行时为边缘加权选择不同的属性(即紧急车辆可以采取路线,普通汽车司机可以使用)
- 该图分布在奥地利面积的一半以上(大约 800.000 条边)。
目前我有很多问题,不知道从哪里开始:
- 运输车辆类型是仅使用 EncodingManager 定义的,还是可以在路线中更改?(在运行时不重建图形)
- RAMDataAccess 和 MMapDataAccess 之间到底有什么区别?后者是否意味着图形(部分)存储在磁盘上?第一个是否意味着图形仅存储在内存中?
- 我不了解 EDGE 对象的 NextA 和 NextB 属性...与 3 个或更多 EDGE 的交叉点呢?哪一个是 NextB 与其他每个?
- “......其中nodeA总是小于nodeB......”是否意味着ID必须总是更小?图形方向(即指向另一个方向的边缘)呢?
- 更多的问题要提出......
到目前为止我做了什么:
我从开发人员片段和低级 API开始浏览 graphhopper 文档,但在页面上它说这已经过时了?!?!(这意味着什么?)
我还检查了 graphhopper github 存储库的 web 子文件夹,但那里只有一个基于 OSM 数据的现成可用的 graphhopper web 服务。
不幸的是,我找不到任何更全面的示例,包括使用 MMapDataAccess 构建图表(编辑感谢您提供查看单元测试的提示,我想我会在那里找到更多信息)
我会非常感谢这里的任何人,谁能给我一些示例,如何构建我自己的图表并在加权参数发生变化时使用(或重建它?)。
编辑:试图让我的观点更清楚