Repolode
Project-OSRM

Project-OSRM/osrm-backend

基于 OpenStreetMap 数据的高性能 C++ 路径规划引擎,提供路线、距离矩阵和轨迹匹配等服务。

可替代:Google Maps Platform Directions API

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. 1

    下载 OpenStreetMap 地图数据(柏林示例)

    wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
  2. 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. 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. 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 数据每日更新。

相关项目

QGIS 是一款免费开源、跨平台的桌面地理信息系统,用于查看、编辑、分析和制作空间数据地图。

数据与分析#gis#mapping#geospatial
1.5万+51 本周3596C++GPL-2.0维护活跃更新于 13小时前