http://www.cnblogs.com/LBSer/p/4612031.htmlhtml
以下圖所示,一、二、3這三個點是汽車的GPS定位結果,儘管汽車是在道路上,但定位結果與道路存在誤差。地圖匹配(Map Matching)是指將行車軌跡的經緯度採樣序列與數字地圖路網匹配的過程,其本質上是平面線段序列的模式匹配問題( Alt等,2003)。算法
在實際應用中,GPS採樣信號的質量會嚴重影響地圖匹配結果:採樣頻率的下降、定位偏差的加大、信號的丟失,都會使匹配的不許確性增長。這些狀況在實際應用中常常出現。如何在這些狀況下仍能保持較高的路徑匹配準確率是個值得研究的問題。測試
2012年ACM SIGSPATIAL首次設立的競賽,其內容就是地圖匹配。三年前本人有幸和國防科大的楊岸然博士一同參加了該競賽,收穫良多。本博文也就是對參加競賽的工做作一個簡要的總結回顧,想要代碼參考的朋友能夠在下面留下郵箱,並註明用途。spa
現有的算法可被分紅四類:幾何、拓撲、機率、高級。htm
根據考慮採樣點的範圍,可分紅局部/增量算法、全局算法。blog
根據軌跡數據的採樣頻率,現有的地圖匹配算法可分紅:索引
通常認爲30s及其以上爲低頻採樣,1s~10s爲高頻採樣。內存
使用ST-Matching算法(Lou等,2009),該算法是一種全局算法,能綜合幾何信息( GPS點與道路的距離)、道路拓撲信息(最短路徑)、道路屬性信息(每條道路的限速),具備精度高,穩定性好等優勢。get
問題:原始道路網數據的座標與軌跡點的座標並不在一個座標體系下,不能直接進行計算!class
解決方法:使用PRJ4地圖投影庫將兩個數據投影到統一座標下。
問題:該路網有128萬條邊,咱們採用C++,若是讀取每條邊都進行new和delete操做,將執行128萬次,效率極低!
解決方法:使用內存池技術。
問題:候選集不一樣層次的候選點之間都要計算最短路徑,使用最經常使用的Dijkstra最短路徑算法效率極低!
解決方法:使用啓發式最短路徑算法:A-star算法。
問題:因爲競賽真實測試會使用不少不一樣的路網數據,因此創建索引不必,可是計算某一GPS點的候選集時路網全部數據會參與計算,效率很低;
解決方法:計算某一GPS點的候選集時,先進行切片過濾,好比以該GPS點爲中心,生成200m的正方形框,而後在該框裏創建新的道路網,這時計算候選集時只須要與該框內的道路網數據計算。