以下图所示,一、二、3 这三个点是汽车的GPS定位结果,尽管汽车是在道路上,但定位结果与道路存在误差。地图匹配(Map Matching)是指将行车轨迹的经纬度采样序列与数字地图路网匹配的过程,其本质上是平面线段序列的模式匹配问题( Alt等,2003)。算法
在实际应用中,GPS采样信号的质量会严重影响地图匹配结果:采样频率的下降、定位偏差的加大、信号的丢失,都会使匹配的不许确性增长。这些状况在实际应用中常常出现。如何在这些状况下仍能保持较高的路径匹配准确率是个值得研究的问题。测试
2012年ACM SIGSPATIAL首次设立的竞赛,其内容就是地图匹配。三年前本人有幸和国防科大的杨岸然博士一同参加了该竞赛,收获良多。spa
现有的算法可被分红四类:几何、拓扑、几率、高级。
a)基于几何的算法考虑GPS点与道路的几何信息,如距离、角度等;
b)基于拓扑的算法使用道路拓扑信息来控制;
c)几率方法经过考虑GPS点的几率;
d)高级的算法每每综合考虑使用全面信息,有卡尔曼滤波、模糊逻辑模型、隐式马尔可夫模型等等。索引
根据考虑采样点的范围,可分红局部/增量算法、全局算法。
a)局部/增量算法是贪婪算法,每次肯定一个匹配点,下个点从已经肯定的匹配点开始。这些方法根据距离和方向类似性来找到局部最优势或边。(在线匹配)
b)全局算法是要从路网中找到一条与采样轨迹最接近的匹配轨迹。为了测量采样轨迹和匹配轨迹的类似性,大多数算法使用“Frechet距离”或者是“弱Frechet距离”。还有时空匹配算法、投票算法等。(离线匹配)ip
根据轨迹数据的采样频率,现有的地图匹配算法可分红:
a)高频采样算法(全部局部算法、部分全局算法如Frechet距离判别法等)
b)低频采样算法(ST-matching算法、IVVM算法内存
通常认为30s及其以上为低频采样,1s~10s为高频采样。it
a)路网数据: Washington State U.S.A.(有128万条边 )
b)GPS数据:采样频率为1~30s,class
使用ST-Matching算法(Lou等,2009),该算法是一种全局算法,能综合几何信息( GPS点与道路的距离)、道路拓扑信息(最短路径)、道路属性信息(每条道路的限速),具备精度高,稳定性好等优势。效率
a)空间因素权重(Fs)cli
b)时间因素权重(Ft)
问题:原始道路网数据的坐标与轨迹点的坐标并不在一个坐标体系下,不能直接进行计算!
解决方法:使用PRJ4地图投影库将两个数据投影到统一坐标下。
问题:该路网有128万条边,咱们采用C++,若是读取每条边都进行new和delete操做,将执行128万次,效率极低!
解决方法:使用内存池技术。
问题:候选集不一样层次的候选点之间都要计算最短路径,使用最经常使用的Dijkstra最短路径算法效率极低!
解决方法:使用启发式最短路径算法:A-star算法。
问题:因为竞赛真实测试会使用不少不一样的路网数据,因此创建索引不必,可是计算某一GPS点的候选集时路网全部数据会参与计算,效率很低;
解决方法:计算某一GPS点的候选集时,先进行切片过滤,好比以该GPS点为中心,生成200m的正方形框,而后在该框里创建新的道路网,这时计算候选集时只须要与该框内的道路网数据计算。