OSRM(OpenStreetMap Routeing Machine)可用于路线规划。作为高性能的路线规划引擎,OSRM使用C++14编写,基于开源的OpenStreetMap数据实现。
OSRM的总体流程
OSRM在进行真正的路径规划前需要进行数据前处理,如果数据格式为.pbf的话,还需要先解压(osrm-extract)为.osrm格式。
OSRM内置2种算法:1、CH:Contraction Hierarchies。需要较长的预处理时间,但是处理完成后速度较快.对osrm数据使用Contraction Hierarchies algorithm算法(osrm-contract)预处理;2、MLD:Multi Level Dijkstra。预处理与查询时间都普通的快。使用osrm-partition以及osrm-customize进行预处理。
最后将处理完的数据传给osrm-routed(别忘记选择算法),就得到最短路径。
接下来让我们具体去看看,每一步OSRM都做了什么,首先是osrm-extract。