OSRM笔记

本文介绍OSRM路线规划引擎的安装与使用方法,包括通过Docker快速部署及Ubuntu 16.04环境下从源码编译安装的过程。OSRM是一个高性能的开源路线规划工具,基于OpenStreetMap数据构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OSRM

OSRM(OpenStreetMap Routeing Machine)可用于路线规划。作为高性能的路线规划引擎,OSRM使用C++14编写,基于开源的OpenStreetMap数据实现。

官网:http://project-osrm.org/
Github:https://github.com/Project-OSRM/osrm-backend

安装

使用docker安装

首先需要安装docker:

curl -fsSL https://get.docker.com/ | sh

# daocloud.io 国内镜像
curl -sSL https://get.daocloud.io/docker | sh

详细请阅读:Docker学习笔记

OSRM依赖OpenStreetMap的数据。可以在 http://download.geofabrik.de 下载。选择pbf即可。示例:

wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

安装 Server 端并运行在5000端口:

docker run -t -v $(pwd):/data osrm/osrm-backend osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf
docker run -t -v $(pwd):/data osrm/osrm-backend osrm-contract /data/berlin-latest.osrm

docker run -t -i -p 5000:5000 -v $(pwd):/data osrm/osrm-backend osrm-routed /data/berlin-latest.osrm

如果顺利的话,osrm-backend已经安装好了。发送请求示例:

curl "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true"

安装web端用于显示地图,运行在 9966 端口:

docker run -p 9966:9966 osrm/osrm-frontend

打开浏览器,访问 http://127.0.0.1:9966 即可。

663847-20170424221038928-923968447.png

从源码编译安装

这里以 Ubuntu 16.04 为例。

安装依赖:

sudo apt install build-essential git cmake pkg-config \
libbz2-dev libstxxl-dev libstxxl1v5 libxml2-dev \
libzip-dev libboost-all-dev lua5.2 liblua5.2-dev libtbb-dev

编译和安装 OSRM 二进制文件:

mkdir -p build
cd build
cmake ..
cmake --build .
sudo cmake --build . --target install

Geofabrik 或者 Mapzen's Metro Extracts 下载一个.osm.pbf文件:

wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

解压地图数据并启动 Server:

osrm-extract berlin-latest.osm.pbf -p profiles/car.lua
osrm-contract berlin-latest.osrm
osrm-routed berlin-latest.osrm

请求示例:

curl http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true

相关资料

OpenStreetMap

OpenStreetMap(简称OSM)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。

OSM是一款由网络大众共同打造的免费开源、可编辑的地图服务。OpenStreetMap它是利用公众集体的力量和无偿的贡献来改善地图相关的地理数据。OSM是非营利性的,它将数据回馈给社区重新用于其它的产品与服务。而其他地图则是将大多数的地图数据出售给第三方。

OSM的地图由用户根据手提GPS装置、航空摄影照片、其他自由内容甚至单靠地方智慧绘制。网站里的地图图像及向量数据皆以共享创意姓名标示-相同方式分享2.0授权。

官网:http://www.openstreetmap.org/

Leaflet

Leaflet 是一个为建设移动设备友好的互动地图,而开发的现代的、开源的 JavaScript 库。它是由 Vladimir Agafonkin 带领一个专业贡献者团队开发,虽然代码仅有 33 KB,但它具有开发人员开发在线地图的大部分功能。

Leaflet设计坚持简便、高性能和可用性好的思想,在所有主要桌面和移动平台能高效运作,在现代浏览器上会利用HTML5和CSS3的优势,同时也支持旧的浏览器访问。支持插件扩展,有一个友好、易于使用的API文档和一个简单的、可读的源代码。

官网:http://leafletjs.com/

拓展

1、如何用Go实现一款类似滴滴优步的网络约车软件(含源码)
https://mp.weixin.qq.com/s/FnrnytO2-nybdWSE3jTkUQ

转载于:https://www.cnblogs.com/52fhy/p/6759415.html

04-18
### OSRM Open Source Routing Machine 使用与配置 OSRM 是一种开源路由引擎,能够快速计算道路网络上的最短路径。它支持步行、驾驶和骑行等多种交通方式,并提供高效的查询性能。 #### 安装 OSRM 要安装 OSRM,通常需要先下载所需的数据文件并运行服务端程序。以下是基本流程: 1. **获取地图数据** 需要从 [Geofabrik](https://geofabrik.de/) 或其他开放地理空间数据提供商处下载 OSM 数据文件(通常是 `.osm.pbf` 格式)。这些文件包含了用于构建路网的基础地理信息[^2]。 2. **安装依赖项** 在 Linux 系统上可以使用包管理器来安装必要的工具链。例如,在 Ubuntu 上可以通过以下命令完成基础环境搭建: ```bash sudo apt-get update && sudo apt-get install -y \ software-properties-common \ make \ gcc \ g++ \ cmake \ libboost-all-dev \ lua5.3 \ luajit \ liblua5.3-dev \ curl ``` 3. **编译 OSRM 后端** 如果选择源码部署,则需克隆官方仓库并按照说明执行本地化操作: ```bash git clone https://github.com/Project-OSRM/osrm-backend.git osrm-backend cd osrm-backend mkdir build && cd build cmake .. make ``` 4. **准备数据集** 利用 `osrm-extract`, `osrm-partition`, 和 `osrm-customize` 工具处理原始 PBF 文件以适配算法需求。 ```bash ./build/osrm-extract berlin-latest.osm.pbf ./build/osrm-partition berlin-latest.osrm ./build/osrm-customize berlin-latest.osrm ``` 5. **启动 HTTP 服务器** 运行下面这条指令即可开启 RESTful API 接口供客户端调用: ```bash ./build/osrm-routed --algorithm mld berlin-latest.osrm ``` #### 基本使用方法 通过向指定 URL 发送 GET 请求可获得两点间最优路线方案。比如请求如下结构的链接将会返回 JSON 格式的响应体: ``` http://localhost:5000/route/v1/driving/{lon1},{lat1};{lon2},{lat2}?overview=full&steps=true ``` 其中 `{lon}` 表示经度而 `{lat}` 对应纬度坐标值;参数 `overview` 控制是否附加完整的几何形状描述,默认关闭状态只给出概览轨迹片段;另外启用选项 `steps` 能够展示分步指导详情[^1]。 #### 可选插件集成案例分析 某些流行的前端框架如 Leaflet 提供了专门扩展组件方便开发者轻松接入自定义的地图交互功能。这里列举几个典型例子及其特点对比表单以便理解实际应用场景差异性[^2]: | 插件名称 | 功能简介 | 维护者 | |-------------------------|----------------------------------------------------------------------------------------------|--------------------------| | Leaflet Routing Machine | 支持中途停留点规划以及多种替代线路推荐 | Per Liedman | | Leaflet.Routing | 允许用户灵活切换不同后台服务商实现跨平台兼容 | Norwegian Trekking Assoc| | Route360° | 不仅限于单一终点可达范围可视化还兼顾具体出行模式下的详尽指引 | Motion Intelligence GmbH| 以上表格展示了部分基于 Leaflet 的第三方库如何增强标准 Web 应用中的导航体验效果。 ```javascript // 示例代码:利用 LeafletRoutingMachine 实现简单在线寻径演示 var map = L.map('map').setView([51.505, -0.09], 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, }).addTo(map); var control = L.Routing.control({ waypoints: [ L.latLng(57.74, 11.94), L.latLng(57.6792, 11.949) ], router: new L.Routing.OSRMv1() }).addTo(map); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值