JUST技术:提升基于GPS轨迹的路网推测精确度
路網數據對于城市中的很多應用,比如車載導航和線路優化等,都非常重要。傳統的道路數據采集方法依賴于采集車,消耗大量的人力物力。隨著GPS設備的普及,海量軌跡數據在城市里產生,使我們能夠用軌跡數據去生成路網。這個問題在近十年中已經有了廣泛的研究,但是其中很多方法的精確度(precision)并不高,特別是上下道路,平行道路等地方。由于軌跡數據在城市內并不是均勻分布的,對于那些車輛頻繁通行的地方,我們有沒有辦法進一步提高這些區域路網推測的精確度呢?
本文將介紹美國麻省理工學院(MIT)與卡塔爾哈馬德-本-哈利法大學(HBKU)聯合在國際地理信息領域頂會ACM SIGSPATIAL 2018上發表的論文《RoadRunner:Improving the Precision of Road Network Inference from GPS Trajectories》,使得在提高路網推測精確度的同時,不損失覆蓋率(或召回率,recall)。本文將路網推測的問題分為兩階段,先用本文提出的RoadRunner算法在高軌跡密度區域推測出高精確度地圖,然后與傳統的軌跡推測路網方法結合,滿足召回率的要求。RoadRunner的核心思想是利用每條軌跡的連通性來判斷相交的軌跡是行駛在同一條道路上,還是平行的兩條路上。? ? ? ? ? ? ? ? ? ? ? ?
一、問題背景
從軌跡中推測路網是一個非常有挑戰的問題。圖1左側兩欄給出了基于概率密度估計(KDE)和k-Means聚類的兩類傳統算法在三個城市(洛杉磯、波士頓、芝加哥)上的表現。生成的地圖有三個問題:1)上層道路會與下層道路連接;2)實際不相交的鄰接道路會連通;3)詳細的拓撲很難識別,例如高速路的交叉口。
本文提出了RoadRunner,該方法利用增量的方式基于軌跡的流構建路網。在每一次迭代中,RoadRunner通過一個軌跡過濾算子,考慮前驅相同的子軌跡集合來生成路段。這種方法對于除去相鄰路段的干擾非常重要,并且對于GPS的噪聲和道路拓撲較為魯棒。雖然RoadRunner精確度較高,但是過濾操作會導致軌跡較少的區域丟失道路。為了進一步提高路網推測的召回率,本文提出了一種合并操作將RoadRunner推測的結果與傳統方法推測的結果整合。圖1右側一欄展示了文本提出的方法的效果。
圖1?路網推測的挑戰
二、RoadRunner
RoadRunner的算法流程如圖2所示。算法的輸入是一個初始的路網,可以來自于現有路網或者用別的方法推測得到的路網。我們先把初始路網中所有的頂點加入隊列Q,隊列中的頂點稱為active頂點(第2-3行)。在每一輪迭代中,RoadRunner從隊列中挑選一個active頂點v,通過Trace操作提取軌跡在頂點v處的流出方向(第5-6行)。對于每個流出方向θ,我們加入一條從v出發,方向為θ,距離為固定長度d的小路段來擴展當前路網(第7-11行)。然后通過Merge操作,嘗試將該小路段的另一個頂點u合并到現有路網。如果合并失敗,我們將u加入Q用于下一輪迭代(第12-14行)。當Q為空時,算法停止,并返回當前路網。
圖2?RoadRunner算法框架
值得注意的一點是,為了有效地進行Trace和Merge,在每一次迭代中,RoadRunner只保留一部分和當前路段相關的子軌跡集合用于路網的生成。圖3是某處的衛星地圖和對應的軌跡數據分布。假設我們現在要從圖3下圖藍色頂點處擴展路網。由于三條高亮的路在該處空間距離非常接近,而且它們的朝向也近乎相同,如果我們考慮所有軌跡數據,我們可能會將紅色的路與綠色的路相連,或者把紅色的路和藍色的路合并。但是通過排除不在當前正在擴展的路段附近的軌跡,我們能夠得到一個干凈得多的子軌跡集合(只覆蓋紅色道路的軌跡)。我們將這個軌跡過濾操作稱為路徑過濾算子(way path filter)。實現方式如下:給定一個圓心沿著路段的圓序列(半徑代表道路寬度),路徑過濾算子只保留按順序通過這些圓的軌跡。對于一個active頂點,我們可以基于當前路網,計算一條長度為k的路徑(以active頂點為結束),然后沿著這條路徑生成圓序列(每個圓的半徑可以通過軌跡數據動態估計),來構造過濾條件。
圖3 引入路徑過濾算子的動機
接下來,我們簡單介紹一下Trace和Merge操作的具體實現。
2.1 Tracing
Trace操作的目的是為了提取軌跡在頂點v處的主要流出方向。如圖4上圖所示,我們要提取軌跡在藍色頂點處的方向。我們首先應用路徑過濾算子得到經過藍色頂點之前的路徑的子軌跡集合(綠色顯示),我們發現軌跡在交叉路口處明顯分為了三組。我們以藍色頂點為圓心,D為半徑畫一個圓(如粉色圓所示),然后在頂點處生成72個角度用于等分圓周。QQ號交易平臺再以每一個角度與圓的交點為圓心,r為半徑,構造一個小圓(如黃色圓所示)。然后再次利用路徑過濾去篩選得到經過之前路徑以及經過該小圓的軌跡T'。最后,該角度的軌跡數量記錄為min(0, |T' - M|),其中M為一個常數,用于濾噪。我們將每個角度的軌跡條數都計算出,并存儲在一個72維的向量中,再利用高斯核對該向量進行平滑,然后檢測局部峰值。圖4下圖可視化了平滑后的計數值的分布,算法檢測得到三個方向的局部峰值。
圖4 Trace操作舉例
2.2 Merging
當我們生成一條路段后,需要將它和已有路網合并。但是這并不容易,合并的過程中,需要確保上下關系,平行關系以及多層級關系等等。為了克服這些挑戰,本文只有在通過路段的軌跡未來的分布匹配的情況下,才會合并兩個路段。圖5中,我們展示了經過藍色和綠色的路徑的軌跡未來的分布情況。我們可以很明顯發現,在例子(a)中兩者的分布并不一致,但是在例子(b)中兩者的分布幾乎一樣。?
圖5 Merge操作舉例
Merge操作具體實現如圖6所示。對于一個要合并的頂點v,我們計算經過v的路徑的軌跡未來的分布,然后我們找到v周圍的頂點u,如果經過u的路徑的軌跡未來分布和v的一致,我們加入路段(u,?v),并返回True;如果v的分布與周圍頂點都不同,則返回False。
圖6?Merge操作
三、兩階段路網推測
RoadRunner雖然有較高的精確度,但是由于路徑過濾算子對軌跡的篩選,很多低頻訪問區域的路段會丟失。所以在第二階段,為了提高召回率,需要將RoadRunner的結果與其他路網推測算法結果合并。
假設G1為RoadRunner推測的路網,G2為其他能夠捕捉低頻通行路段的路網生成算法輸出的結果。我們首先刪除G2中距離G1中路段Rmerge范圍內的路段得到G2',因為這些路段RoadRunner已經成功推測完成了。然后我們將G1與G2'放在一起得到G。然而,從G2'中加入的路段和其余路段并不連通。為了連通這些道路,對于G中每一個度為1的頂點v,我們在滿足以下兩個條件時,讓其與周圍路段(u,?w)連通:1)v到(u, w)的距離小于Rmerge;2)經過路徑v→p→u或者v→p→w的軌跡超過一定閾值,其中p為v在路段(u, w)上的投影點。
四、實驗結果
本文在4個城市(洛杉磯、波士頓、芝加哥、紐約)上驗證了提出的方法的有效性,每個城市選擇了一塊4km4km的區域,軌跡數據累計約有6萬條。OpenStreetMap被當作真實路網用于驗證。
圖7給出了不同方法在不同參數設定下,錯誤率和召回率的變化曲線(越接近左上角性能越好,不同數據集結果取平均)。實驗結果顯示,RoadRunner+KDE的方法(RR-2+BE-2)比只用KDE的方法(BE-2)有33.6%的錯誤率降低,RoadRunner+kMeans的方法(RR-2+Kharita-20)比只用kMeans的方法(Kharita-20)有60.7%的錯誤率降低。
圖7 實驗結果
五、小結
本文提出了一個兩階段的路網推測框架,能夠在不損失召回率的情況下,提升精度。本框架中的核心模塊是RoadRunner,它利用軌跡數據的連接性來生成準確的路網,面對復雜的路況,與現有相比有很好的表現。
總結
以上是生活随笔為你收集整理的JUST技术:提升基于GPS轨迹的路网推测精确度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JUST技术:管理海量空间数据的利器-空
- 下一篇: JUST技术:空间连接运算与空间索引