OSRM(Open Source Routing Machine)( https://github.com/Project-OSRM/osrm-backend)开源导航引擎,
用C++14编写完成,此引擎基于OpenStreetMap数据进行计算。OSRM提供了以下服务:
Nearest :根据坐标查找最近的匹配目标;
Route:查找坐标间最快的路径
Table :计算路径上坐标之间的时间和距离
Match:捕捉路网中存在的GPS轨迹噪点
Trip:旅行商问题(Travelling SalesMan problem),寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。
Tile :生成Mapbox矢量切片
以下服务模块可通过HTTP接口或者C++库形式进行调用。
OSRM有两种计算算法:
* Contraction Hierarchies (CH)
* Multi-Level Dijkstra (MLD)
这两种算法所表示的含义可自行进入深入了解,这里就不多做介绍。
这里我主要介绍通过OSRM提供的HTTP接口,及其相关参数:
请求形式:
GET /{service}/{version}/{profile}/{coordinates}[.{format}]?option=value&option=value
请求地址参数:
service:上面列表的服务之一;
version: 服务版本,默认v1;
profile:交通方式,通过lua文件进行定义,例如:car, bike,foot等,这些是官方已经提供的交通方式。也可以通过定义lua文件实现