閱讀640 返回首頁    go 技術社區[雲棲]


地圖匹配實踐

1 背景

  如下圖所示,1、2、3這三個點是汽車的GPS定位結果,盡管汽車是在道路上,但定位結果與道路存在偏差。地圖匹配(Map Matching)是指將行車軌跡的經緯度采樣序列與數字地圖路網匹配的過程,其本質上是平麵線段序列的模式匹配問題( Alt等,2003)。

  在實際應用中,GPS采樣信號的質量會嚴重影響地圖匹配結果:采樣頻率的降低、定位誤差的加大、信號的丟失,都會使匹配的不準確性增加。這些情況在實際應用中經常出現。如何在這些情況下仍能保持較高的路徑匹配準確率是個值得研究的問題。

  2012年ACM SIGSPATIAL首次設立的競賽,其內容就是地圖匹配。三年前本人有幸和國防科大的楊岸然博士一同參加了該競賽,收獲良多。本博文也就是對參加競賽的工作做一個簡要的總結回顧,想要代碼參考的朋友可以在下麵留下郵箱,並注明用途。

  

2  地圖匹配算法綜述

2.1 以使用到的信息來劃分

  現有的算法可被分成四類:幾何、拓撲、概率、高級。

  a)基於幾何的算法考慮GPS點與道路的幾何信息,如距離、角度等;
  b)基於拓撲的算法使用道路拓撲信息來控製;
  c)概率方法通過考慮GPS點的概率;
  d)高級的算法往往綜合考慮使用全麵信息,有卡爾曼濾波、模煳邏輯模型、隱式馬爾可夫模型等等。

2.2 以考慮采樣點的範圍來劃分

  根據考慮采樣點的範圍,可分成局部/增量算法、全局算法。

  a)局部/增量算法是貪婪算法,每次確定一個匹配點,下個點從已經確定的匹配點開始。這些方法根據距離和方向相似性來找到局部最優點或邊。(在線匹配)
  b)全局算法是要從路網中找到一條與采樣軌跡最接近的匹配軌跡。為了測量采樣軌跡和匹配軌跡的相似性,大多數算法使用“Frechet距離”或者是“弱Frechet距離”。還有時空匹配算法、投票算法等。(離線匹配)

2.3 以采樣點的頻率來劃分

  根據軌跡數據的采樣頻率,現有的地圖匹配算法可分成:

  a)高頻采樣算法(所有局部算法、部分全局算法如Frechet距離判別法等)
b)低頻采樣算法(ST-matching算法、IVVM算法

  一般認為30s及其以上為低頻采樣,1s~10s為高頻采樣。

3 我們的訓練數據

  a)路網數據: Washington State U.S.A.(有128萬條邊 )
  b)GPS數據:采樣頻率為1~30s,

4 采用的算法

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

4.1 準備候選集

4.2 確定權重

a)空間因素權重(Fs)
b)時間因素權重(Ft)
 

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

  上一篇:go 棱鏡-分布式實時計算的跟蹤校驗係統
  下一篇:go 發個博,慶祝雲棲上線~