640
技術社區[雲棲]
地圖匹配實踐
1 背景
如下圖所示,1、2、3這三個點是汽車的GPS定位結果,盡管汽車是在道路上,但定位結果與道路存在偏差。地圖匹配(Map Matching)是指將行車軌跡的經緯度采樣序列與數字地圖路網匹配的過程,其本質上是平麵線段序列的模式匹配問題( Alt等,2003)。
在實際應用中,GPS采樣信號的質量會嚴重影響地圖匹配結果:采樣頻率的降低、定位誤差的加大、信號的丟失,都會使匹配的不準確性增加。這些情況在實際應用中經常出現。如何在這些情況下仍能保持較高的路徑匹配準確率是個值得研究的問題。
2012年ACM SIGSPATIAL首次設立的競賽,其內容就是地圖匹配。三年前本人有幸和國防科大的楊岸然博士一同參加了該競賽,收獲良多。本博文也就是對參加競賽的工作做一個簡要的總結回顧,想要代碼參考的朋友可以在下麵留下郵箱,並注明用途。
2 地圖匹配算法綜述
2.1 以使用到的信息來劃分
現有的算法可被分成四類:幾何、拓撲、概率、高級。
2.2 以考慮采樣點的範圍來劃分
根據考慮采樣點的範圍,可分成局部/增量算法、全局算法。

2.3 以采樣點的頻率來劃分
根據軌跡數據的采樣頻率,現有的地圖匹配算法可分成:
一般認為30s及其以上為低頻采樣,1s~10s為高頻采樣。
3 我們的訓練數據

4 采用的算法
使用ST-Matching算法(Lou等,2009),該算法是一種全局算法,能綜合幾何信息( GPS點與道路的距離)、道路拓撲信息(最短路徑)、道路屬性信息(每條道路的限速),具有精度高,穩定性好等優點。
4.1 準備候選集
4.2 確定權重


5 實驗結果
6 技術實現要點
6.1 地圖投影問題
問題:原始道路網數據的坐標與軌跡點的坐標並不在一個坐標體係下,不能直接進行計算!
解決方法:使用PRJ4地圖投影庫將兩個數據投影到統一坐標下。
6.2 大路網信息數據量的讀取
問題:該路網有128萬條邊,我們采用C++,如果讀取每條邊都進行new和delete操作,將執行128萬次,效率極低!
解決方法:使用內存池技術。
6.3 最短路徑算法的選擇
問題:候選集不同層次的候選點之間都要計算最短路徑,使用最常用的Dijkstra最短路徑算法效率極低!
解決方法:使用啟發式最短路徑算法:A-star算法。
6.4 索引
問題:由於競賽真實測試會使用很多不同的路網數據,所以建立索引沒必要,但是計算某一GPS點的候選集時路網所有數據會參與計算,效率很低;
解決方法:計算某一GPS點的候選集時,先進行切片過濾,比如以該GPS點為中心,生成200m的正方形框,然後在該框裏建立新的道路網,這時計算候選集時隻需要與該框內的道路網數據計算。
最後更新:2017-04-01 13:37:10