GraphHopper:快速且灵活的开源旅行规划器

还没有读者喜欢这个。
Several houses

Opensource.com

路线规划是互联移动世界的重要组成部分。许多人每天都在使用商业解决方案,以避免在回家或计划下一次商务或户外旅行时遇到交通拥堵。它在许多商业领域也至关重要,例如垃圾收集、披萨外卖或拼车,在这些领域,速度对于在短时间内计算数千甚至数百万条高质量路线至关重要。

GraphHopper 背后的团队正在构建现有解决方案的快速开源替代方案。它在宽松的 Apache License 2.0 许可下获得许可,并且 在 GitHub 上可用。我们为汽车、自行车和步行路线提供了一个全球实例,称为 GraphHopper 地图。通过它,您可以查看正在运行的 GraphHopper 路由引擎,它与来自 Mapnik 的地图瓦片和来自 Photon 的地址搜索相结合。这一切都是开源的,并且由于使用自己的服务器而具有很高的隐私标准。

GraphHopper 支持两种不同的模式:灵活性模式加速模式。借助灵活性模式,您可以完全控制为每位用户自定义路线搜索,以满足其个人偏好。借助加速模式,您可以为汽车预先创建路线配置文件,并提供非凡的速度,例如从洛杉矶到纽约市在 50 毫秒内完成。

如果您在自己的服务器上托管 GraphHopper,则可以避免与外部服务相比的网络延迟,即使在普通硬件上且对于洲际长度的路线,GraphHopper 也比任何商业路由引擎都更快。GraphHopper 可以在所有主要平台上运行,例如 Linux、Windows、Mac、Raspberry Pi、Android 和 iOS。借助 TeaVM(用于浏览器的 Java 虚拟机),它甚至可以在浏览器中离线工作。这将使混合路由解决方案成为可能,这些解决方案是从相同的源代码基础上创建的。

路由服务器的设置简单、快速,并且只需要 Java。然后可以从任何编程语言轻松使用 HTTP API,我们为 Java 和 JavaScript 提供了实现。您还可以将 GraphHopper 直接集成到您的 Java 项目中,或根据您的需要进行自定义,例如使用您自己的数据来处理交通拥堵或速度限制。GraphHopper 针对低内存使用进行了调整,但 Java API 仍然易于使用。例如,以下 Java 代码片段将导入柏林的 OpenStreetMap 数据并在那里启动第一个路线查询

public static void main( String[] args ) {
 GraphHopper hopper = new GraphHopper().init(CmdArgs.read(args));
 hopper.setOSMFile("berlin.pbf");
 hopper.setGraphHopperLocation("berlin-gh");
 hopper.importOrLoad();
 hopper.route(new GHRequest(
     52.524786, 13.401604,
     52.503266, 13.358688));
 hopper.close();
}

这是典型的点对点路由的演示,其他用途包括

  • 交通模拟
  • 室内路由
  • 多模式路由
  • 城市规划
  • 为物流部门计算距离矩阵
  • 以及更多!

尽管它仍然是一个年轻的项目,0.3 版本已于 2014 年 5 月发布,并且已经有 Gnome Maps、GPSies.com、Rome2rio.com 和 Komoot.de 等用户。由于来自 OpenStreetMap 的丰富开放数据和 NASA 的海拔数据,GraphHopper 尤其可以大放异彩。

可以通过我们的邮件列表获得活跃的社区——请提出您的问题并加入讨论!我们也在 Twitter 上

标签
User profile image.
Peter Karich 是快速开源路线规划器 GraphHopper 的创建者。他曾在多家公司工作,涉及复杂的算法和工具链。例如,他通过 ElasticSearch 等改进了语音助手和企业搜索。他时不时在他的博客 karussell 上撰写有关 GraphHopper 和 Java 的文章。在 Twitter 上关注他 @timetabling

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.