Valhalla:基于 OpenStreetMap 的开源路线引擎

Valhalla 是一个开源的路由引擎和配套工具库,基于 OpenStreetMap 数据提供路线规划服务。

正文顶部截图

项目在 GitHub 上获得了 5,800+ Star,采用 MIT 协议。

Valhalla 支持的功能包括:路线规划、时间距离矩阵计算、等时圈分析、高程采样、地图匹配和旅行商优化。它能够在同一路线中混合使用汽车、步行、自行车和公共交通,也支持设定到达时间约束。

README区域截图

核心设计

Valhalla 采用分层瓦片数据结构,内存占用小,支持离线路由,可以做区域数据提取和增量更新。图中的边和节点支持运行时动态计费,通过插件架构实现自定义和备选路线生成。

整个引擎用 C++ 编写,可以交叉编译到离线便携设备上运行。导航语音和转弯指令的生成同样采用插件架构,能够针对不同地区和语言做定制。

模块组成

项目由多个库模块构成:Midgard 提供基础地理和几何算法;Baldr 负责瓦片路由数据的访问和缓存;Sif 用于图节点和边的计费;Mjolnir 将开放数据转为 Valhalla 图瓦片;Loki 搜索图瓦片并将输入位置关联到图实体;Thor 在图瓦片层级中生成路径;Odin 根据路径生成导航指令;Tyr 处理 HTTP 请求并格式化输出;Meili 负责地图匹配;Skadi 提供高程数据访问。

安装方式

Valhalla 提供多种安装途径。Docker 部署最简单:

docker build -t valhalla:latest .

也可以通过 Python 绑定安装,pip 安装后直接使用命令行工具:

pip install pyvalhalla
python -m valhalla valhalla_build_tiles -h

NodeJS 用户:

npm install @valhallajs/valhallajs

需要从源码编译的话,参考项目文档中的构建指南。

演示服务器

FOSSGIS 提供了公开的演示服务器,包含完整的全球图数据和配套 Web 应用,可以直接在线体验路线规划和等时圈等功能。

跨平台支持

Valhalla 在多数 Linux 和 macOS 发行版上完整可用,也支持 iOS 和 Android。Windows 上可以完成库的构建和部分模块的使用,包括命令行工具、数据工具和 Python 绑定。

d。Windows 上可以完成库的构建和部分模块的使用,包括命令行工具、数据工具和 Python 绑定。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐