基于 OpenStreetMap 数据的开源 Java 路径规划服务,提供路线、等时圈、距离矩阵等接口。
Project-OSRM/osrm-backend
基于 OpenStreetMap 数据的高性能 C++ 路径规划引擎,提供路线、距离矩阵和轨迹匹配等服务。
- Star
- 8,195
- Fork
- 3,979
- 未关闭 Issue
- 374
- 最近提交
- 49分钟前
这是什么?
OSRM(Open Source Routing Machine)是一个用 C++ 编写的路径规划引擎,基于 OpenStreetMap 道路网络数据运行。服务可通过 HTTP API、C++ 库接口和 Node.js 封装调用,也提供 Python 绑定。
引擎提供六类服务:nearest 用于将坐标吸附到最近的道路,route 计算两点之间的最快路线,table 计算多个点两两之间的时间或距离矩阵,match 将有噪声的 GPS 轨迹匹配到道路上,trip 使用贪心启发式求解旅行商问题,tile 生成带路由元数据的 Mapbox 矢量瓦片。
项目支持两种预处理流程:默认推荐的 Multi-Level Dijkstra(MLD)和 Contraction Hierarchies(CH)。项目提供 Docker 镜像便于快速部署,从源码构建时依赖通过 vcpkg 管理。
核心功能
- 01基于 OpenStreetMap 数据提供路线、最近点、距离矩阵、轨迹匹配、旅行商和矢量瓦片服务
- 02支持 HTTP API、C++ 库、Node.js 和 Python 绑定
- 03提供 MLD 与 CH 两种预处理流程
- 04提供 Docker 镜像,便于快速搭建
- 05通过 Lua 脚本自定义路由配置
适用场景
- 基于 OpenStreetMap 数据自建路径规划或导航后端
- 为物流与调度计算大规模行程时间或距离矩阵
- 将车辆或运动设备的 GPS 轨迹匹配到道路网络
- 求解小规模配送路线或旅行商式的访问顺序问题
快速上手
- 1
下载 OpenStreetMap 地图数据(柏林示例)
wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf - 2
使用 Docker 和汽车配置文件预处理地图数据
docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf || echo "osrm-extract failed" - 3
对地图数据进行分区(然后按 README 同样方式运行 osrm-customize)
docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-partition /data/berlin-latest.osrm || echo "osrm-partition failed" - 4
在 5000 端口启动路由 HTTP 服务器
docker run -t -i -p 5000:5000 -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-routed --algorithm mld /data/berlin-latest.osrm
使用前须知
- 处理大型 OpenStreetMap 地图数据可能非常耗时,例如 550 MB 的文件约需 30 分钟。
- 从源码构建需要支持 C++20 的编译器、CMake 3.29 或更新版本以及 vcpkg,且首次配置会编译大量依赖。
标签
常见问题
- osrm-backend 是什么?
- 基于 OpenStreetMap 数据的高性能 C++ 路径规划引擎,提供路线、距离矩阵和轨迹匹配等服务。 OSRM(Open Source Routing Machine)是一个用 C++ 编写的路径规划引擎,基于 OpenStreetMap 道路网络数据运行。服务可通过 HTTP API、C++ 库接口和 Node.js 封装调用,也提供 Python 绑定。
- osrm-backend 可以免费使用吗?用的什么许可证?
- osrm-backend 以 BSD-2-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
- osrm-backend 还在维护吗?
- 活跃维护中。osrm-backend 最近一次提交是在 2026年11月7日。
- osrm-backend 适合用来做什么?
- 基于 OpenStreetMap 数据自建路径规划或导航后端 为物流与调度计算大规模行程时间或距离矩阵 将车辆或运动设备的 GPS 轨迹匹配到道路网络 求解小规模配送路线或旅行商式的访问顺序问题
- osrm-backend 怎么安装和运行?
- 下载 OpenStreetMap 地图数据(柏林示例): wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf 使用 Docker 和汽车配置文件预处理地图数据: docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf || echo "osrm-extract failed" 对地图数据进行分区(然后按 README 同样方式运行 osrm-customize): docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-partition /data/berlin-latest.osrm || echo "osrm-partition failed" 在 5000 端口启动路由 HTTP 服务器: docker run -t -i -p 5000:5000 -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-routed --algorithm mld /data/berlin-latest.osrm
- 在哪里获取 osrm-backend?
- 源代码和安装说明在 GitHub 上:https://github.com/Project-OSRM/osrm-backend
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
基于 OpenStreetMap 数据的开源路径规划引擎,可作为 Java 库或独立 Web 服务使用。
QGIS 是一款免费开源、跨平台的桌面地理信息系统,用于查看、编辑、分析和制作空间数据地图。
开源的多模式出行路线规划服务端,结合公共交通、骑行、步行及共享单车、网约车等出行方式。
基于 OpenStreetMap 数据的开源地理编码服务,支持按名称和地址搜索及逆地理编码。
一个开源的浏览器 3D 地球,把实时航班、船舶、卫星、地震、交通和公共摄像头叠加在逼真地形上,并支持语音操控。