我想在play框架中实现自己的路由Web服务(因为它是java,它是一个快速的原型框架)。我也想使用graphhopper作为路由引擎。
我的基本要求是:
目前我有很多问题,并且不知道从哪里开始:
到目前为止我做了什么:
我从开发人员片段和low level API开始浏览graphhopper文档,但是在页面上它说这已经过时了?!?! (这是什么意思?)
我还检查了graphhopper github存储库的web子文件夹,但是根据内置的OSM数据,只有一个现成的graphhopper webservice。
不幸的是我找不到更全面的例子,包括使用MMapDataAccess构建图表(编辑感谢提示查看单元测试,我想我会找到在那里)
我非常感谢这里的任何人,他们可以给我一些例子,说明当加权参数发生变化时如何构建我自己的图并使用(或重建它?)。
编辑:试图让我的观点更加清晰
答案 0 :(得分:2)
在运行时从数据库中选择边缘权重的不同属性
如果要在运行时中选择权重,则应避免触发外部数据库。它会减慢一切。而是将您拥有的权重输入GraphHopperStorage本身。每一条边都是一张大桌子上的一排。只需在每个重量上再添加一列:
E_CUSTOM_WEIGHT = nextEdgeEntryIndex();
图表的价格超过奥地利的一半(约800.000边缘)
不确定你对multimodal graph的意思(也是时间相关的?)。如果正常的道路网800k并不多。整个德国是十倍大,适合低于1gb
关于快速入门。只是低级API的wiki已经过时了。查看LocationIndexTree的单元测试以了解当前用法。 (也许你之后可以更新维基:))
不幸的是,我找不到更全面的例子,包括使用MMapDataAccess构建图表。
您只需更改配置,或者您更喜欢低级API:
graph = new GraphHopperStorage(new MMapDirectory(), encodingManager)
这里的任何人都可以给我一些例子,当加权参数发生变化时,如何构建我自己的图并重建它。
查看单元测试。大量示例如何构建图表。 “重建” - 你的意思是什么?你的意思是CH准备吗?如果要在运行时计算重量,则无法进行CH准备。