一切福田,不離方寸,從心而覓,感無不通。

搭建OSRM(Open Source Routing Machine)

简介

OSRM(Open Source Routing Machine)是一个用C++开发的基于OSM(OpenStreetMap)地图数据的高性能开源路线规划引擎,提供以下几个服务:

1. Nearest – 搜索近邻路段服务

通过参数来设置搜索半径、搜索路段的数量等,可以获取距离某个点最近的n条路段

2. Route – 路线规划(路线导航)服务

路线导航是OSRM最为重要的功能,它会找到坐标之间的最快的路线。

3. Table – 批量算路服务

Tble服务是计算若干个点之间的行驶距离和行驶时长。传入4个经纬度点,返回4个地点之间的距离和时长,即4X4的distances和4X4的durations

4. Match – 地图匹配服务

OSRM则提供了离线的地图匹配功能。以最合理的方式将嘈杂的 GPS 轨迹捕捉到道路网络。

5. Trip – TSP问题求解服务

Trip为TSP问题(Traveling Salesman Problem) 服务。采用贪婪的启发式算法(最远插入算法)解决了10个点以上的TSP问题,并对10个点以下使用蛮力求解。

6. Tile – 内部路网瓦片服务

OSRM提供了所用的OSM路网数据矢量切片服务,基于路网矢量切片可以轻松的在前端配置各种样式的地图。

安装

1. 安装docker环境
2. 下载地图数据

https://www.openstreetmap.org(约1G)

3. osrm搭建

先决条件:全中国的数据初始化需要内存16G(实测,在最大时需要15多G)。最好是32G的机器。

按顺序输入下方4条命令即可

命令1

有两条pre-processing管道可用:

• 收缩层次(CH)

• Multi-Level迪杰斯特拉(MLD)

我们建议默认使用MLD,除了特殊的use-cases之外,比如非常大的距离矩阵,CH目前仍然更适合。

下面我们将解释MLD管道。

如果您想使用CH管道,而是将osrm-partition和osrm-customize替换为一个osrm-contract,

并将osrm-routed的算法选项更改为--algorithm ch。

命令2

命令3

命令4启动

测试

参考文献

OSRM API:OSRM API Documentation

OSRM github: GitHub – MyLittlePlan/osrm-backend: Open Source Routing Machine – C++ backend / GitHub – Project-OSRM/osrm-backend: Open Source Routing Machine – C++ backend

openStreetMap:https://www.openstreetmap.org

from:https://blog.csdn.net/Sophiahaha/article/details/129416537