本發(fā)明涉及一種海量交通數(shù)據(jù)處理方法。
背景技術(shù):
在當(dāng)今的大數(shù)據(jù)時(shí)代,由于GPS采集裝置的多種和獲取方法的多樣化使得交通數(shù)據(jù)日漸龐大,傳統(tǒng)方法已經(jīng)滿足不了數(shù)據(jù)的分析,為了獲取數(shù)據(jù)中蘊(yùn)含的價(jià)值,各種數(shù)據(jù)分析與挖掘方法應(yīng)運(yùn)而生。
從海量數(shù)據(jù)中很難直接的提取有價(jià)值的信息,能夠準(zhǔn)確并及時(shí)的對交通現(xiàn)狀進(jìn)行分析并為出行者提供優(yōu)質(zhì)的交通誘導(dǎo)服務(wù),一直是城市智能交通規(guī)劃所追求的目標(biāo),將交通數(shù)據(jù)的處理集中在并行分布式計(jì)算平臺(tái)上,利用Hadoop的MapReduce分布式計(jì)算框架對交通數(shù)據(jù)進(jìn)行流式處理,用分布式平臺(tái)保證了其時(shí)效性和高容錯(cuò)性。Hadoop得以在大數(shù)據(jù)處理應(yīng)用中廣泛應(yīng)用得益于其自身在數(shù)據(jù)提取、變形和加載(ETL)方面上的天然優(yōu)勢。Hadoop的分布式架構(gòu),將大數(shù)據(jù)處理引擎盡可能的靠近存儲(chǔ),對例如像ETL這樣的批處理操作相對合適,因?yàn)轭愃七@樣操作的批處理結(jié)果可以直接走向存儲(chǔ)。Hadoop的MapReduce功能實(shí)現(xiàn)了將單個(gè)任務(wù)打碎,并將碎片任務(wù)(Map)發(fā)送到多個(gè)節(jié)點(diǎn)上,之后再以單個(gè)數(shù)據(jù)集的形式加載(Reduce)到數(shù)據(jù)倉庫里。Map-Reduce是Hadoop的核心算法,也稱為映射-規(guī)約算法,算法思想簡單,舉個(gè)例子來說,就是一個(gè)任務(wù)來了,一臺(tái)計(jì)算機(jī)做不了,MapReduce算法可以將它映射成很多子任務(wù),分給不同的計(jì)算機(jī)去完成,每臺(tái)機(jī)器做完了,最后規(guī)約到一個(gè)結(jié)果交給用戶,這就是MapReduce算法的核心思想。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要克服現(xiàn)有海量交通數(shù)據(jù)處理方法的數(shù)據(jù)冗雜及處理緩慢的缺點(diǎn),提出一種利用Hadoop平臺(tái)處理數(shù)據(jù)的方式,設(shè)計(jì)出一種基于Hadoop的海量交通數(shù)據(jù)處理分析方法,更好地解決交通數(shù)據(jù)冗雜處理緩慢,快速實(shí)現(xiàn)數(shù)據(jù)處理及計(jì)算,以達(dá)到有效的道路匹配及相關(guān)道路流量及各種復(fù)雜運(yùn)算,例如路段流量、車輛速度以及路口分流的具體數(shù)據(jù)計(jì)算。
本發(fā)明設(shè)計(jì)了一種MapReduce交通數(shù)據(jù)處理方法,以方便數(shù)據(jù)的清理及快速的路網(wǎng)匹配,與傳統(tǒng)的多線程數(shù)據(jù)處理方式不同,MapReduce是將任務(wù)分配給多臺(tái)計(jì)算機(jī)并行運(yùn)算,這與一臺(tái)電腦多線程的工作效率完全不同,并且在對于路網(wǎng)的復(fù)雜狀況下更是具有得天獨(dú)厚的優(yōu)勢,可以將任務(wù)在碎片化執(zhí)行的情況下幾乎不會(huì)影響到路網(wǎng)的具體情況。為了能具體快速的對交通數(shù)據(jù)進(jìn)行處理以及計(jì)算,本發(fā)明所涉及的一種基于Hadoop的海量交通數(shù)據(jù)處理方法,包括以下幾個(gè)步驟:
1)分布式道路匹配:將數(shù)據(jù)傳輸?shù)紿adoop平臺(tái)的HDFS數(shù)據(jù)存儲(chǔ)系統(tǒng),方便進(jìn)行分布式處理數(shù)據(jù),道路匹配的目的是將有效的GPS點(diǎn)匹配到所在道路,進(jìn)行準(zhǔn)確的流量統(tǒng)計(jì)。其中步驟1)具體包括:
(1.1)多節(jié)點(diǎn)數(shù)據(jù)處理及計(jì)算:將包含出租車信息的數(shù)據(jù)文件傳輸?shù)紿DFS的數(shù)據(jù)存儲(chǔ)系統(tǒng),命令多臺(tái)電腦作為獨(dú)立的節(jié)點(diǎn)同時(shí)對數(shù)據(jù)進(jìn)行處理,包括出租車數(shù)據(jù)的清理、矢量地圖的修正等,主要目的是全方位剔除邏輯錯(cuò)誤的GPS點(diǎn)數(shù)據(jù),具體包括時(shí)間錯(cuò)亂以及速度不符合常理的數(shù)據(jù);在道路修正上主要解決道路單雙向以及道路行駛方向的糾正。由于多臺(tái)主機(jī)同時(shí)作為節(jié)點(diǎn)處理數(shù)據(jù)大大提高工作效率,進(jìn)行快速的流量統(tǒng)計(jì)及速度計(jì)算;
(1.2)搭建MapReduce道路匹配的框架:通過Hadoop平臺(tái)的MapReduce框架讀取數(shù)據(jù)與實(shí)際路網(wǎng)的杭州市道路路網(wǎng)信息進(jìn)行路網(wǎng)匹配,進(jìn)一步提高該系統(tǒng)的高效性。使用dom4j文件處理方式處理數(shù)據(jù)文件中的路網(wǎng)信息,將文件中路網(wǎng)的邊界、節(jié)點(diǎn)以及路段信息通過MapReduce框架進(jìn)行讀取和解析,進(jìn)行多服務(wù)器同時(shí)處理數(shù)據(jù)的路網(wǎng)匹配工作;
(1.3)車輛軌跡解析:對已經(jīng)讀取的車輛軌跡進(jìn)行解析。本計(jì)算方法首先將軌跡解析成有聯(lián)系的一系列的GPS點(diǎn)數(shù)據(jù),解析后的數(shù)據(jù)符合MapReduce框架的處理格式。將文件對應(yīng)的數(shù)據(jù)行所代表的GPS點(diǎn)整理為包含經(jīng)緯度信息、時(shí)間信息、和車輛ID的文本文件,為了便于MapReduce任務(wù)的進(jìn)行,每一個(gè)數(shù)據(jù)行的偏移量作為Map任務(wù)的Key值便于數(shù)據(jù)索引,行內(nèi)的內(nèi)容作為當(dāng)前Key值對應(yīng)的Value,利用MapReduce進(jìn)行快速的Key-Value讀取與處理,完成路網(wǎng)中每一條軌跡的解析;
(1.4)創(chuàng)建擴(kuò)展路網(wǎng):利用每一個(gè)GPS點(diǎn)的位置對路網(wǎng)進(jìn)行擴(kuò)建,以候選GPS為矩形中心,建立邊長為M的的最小矩形,M為可修改的矩形邊長,所建立的最小矩形稱為最小限定矩形MBR(minimum bounding rectangle),使用prtree算法中的find方法查找當(dāng)前點(diǎn)的MBR與所有路段的MBR(以一條道路的連線作為對角線所形成的矩形)進(jìn)行比較,凡是有共同面積的每一個(gè)MBR作為候選匹配路段。計(jì)算GPS候選點(diǎn)和每一條候選匹配路段的距離,得到的最短距離所對應(yīng)路段的ID信息取出來,則該路段作為候選GPS點(diǎn)的最佳匹配路段。由此利用Hadoop平臺(tái)完成所有GPS點(diǎn)與路網(wǎng)信息的快速匹配,作為后續(xù)道路流量計(jì)算和分流數(shù)據(jù)來源;
2)道路流量及車輛速度的計(jì)算:通過匹配成功的路網(wǎng)索引路段ID得到對應(yīng)車輛的行駛軌跡,將路段流量看做車輛當(dāng)前時(shí)間經(jīng)過當(dāng)前路段的次數(shù),根據(jù)路段當(dāng)前所匹配到的軌跡數(shù)量確定當(dāng)前車流量,一條道路所對應(yīng)的路段流量總和作為該道路流量。另外利用路段序列中當(dāng)前路段與下一路段在空間中的相對位置,計(jì)算兩個(gè)路段向量的夾角和外積的模,若夾角小于30度則視為直行,若大于150度則為掉頭,根據(jù)外積的模可以判斷轉(zhuǎn)向?yàn)樽筠D(zhuǎn)還是右轉(zhuǎn),模為正數(shù)為左轉(zhuǎn),負(fù)數(shù)為右轉(zhuǎn);對于道路車輛行駛速度v,首先計(jì)算三種平均速度,三種平均速度分別為上個(gè)路段尾點(diǎn)到當(dāng)前點(diǎn)的平均速度v1、當(dāng)前點(diǎn)到下個(gè)路段起始點(diǎn)的平均速度v2和當(dāng)前道路的瞬時(shí)速度v3:
v=ω1v1+ω2v2+ω3v3
其中ωi(i=1,2,3)為每種速度的加權(quán)值,且∑ωi(i=1,2,3)=1;
然后把出租車軌跡的每一個(gè)GPS點(diǎn)匹配到的路段信息(包括速度,流量,下一條路的ID等信息)導(dǎo)出,作為下一個(gè)分流工程的輸入文件;
3)道路分流統(tǒng)計(jì):首先判斷道路方向,利用每條路的兩個(gè)節(jié)點(diǎn)nodeID判斷道路的流向,假設(shè)當(dāng)前路段Way1的兩個(gè)節(jié)點(diǎn)nodeID1和nodeID2,下一條路段Way2的兩個(gè)節(jié)點(diǎn)nodeID3和nodeID4。分流統(tǒng)計(jì)則包含以下步驟:
(3.1)若nodeID2和nodeID3相同,則規(guī)定這兩條路的方向?yàn)閚odeID1指向nodeID2,nodeID2指向nodeID4;
(3.2)然后通過兩條路的空間位置來計(jì)算分流的方向,這里定義兩條路的夾角大150度的情況為掉頭,把夾角介于150度到30度之間以及路段矢量差積來確定左轉(zhuǎn)或者右轉(zhuǎn),夾角小于30度視為直行;
(3.3)若nodeID1-nodeID4均無任何一個(gè)相同ID,則定義兩個(gè)連續(xù)GPS點(diǎn)匹配到的路段之間還包含其他的路段,首先找到當(dāng)前路Way1所有相鄰的路段,然后查找到所有相鄰路段對應(yīng)的相鄰路段集合,判斷集合中所有路段中是否存在和Way2相同的路段ID,若存在則表示W(wǎng)ay1和Way2之間存在一條連接路段,若不存在則繼續(xù)按照上述方法多次迭代,即可找到當(dāng)前路段和下一條路段之間的所有連接路段;
(3.4)對每兩條相鄰路段重復(fù)步驟(3.2)判斷分流的具體情況。
本發(fā)明的技術(shù)構(gòu)思是:搭建MapReduce框架處理交通數(shù)據(jù),實(shí)現(xiàn)了多臺(tái)計(jì)算機(jī)并行執(zhí)行任務(wù),大大提高了工作效率,且對于克服交通數(shù)據(jù)的冗雜性有很大的幫助;對于路網(wǎng)匹配中的MBR算法則很大程度上改善了GPS點(diǎn)與路段的匹配速度,并且提高了準(zhǔn)確性;道路分流的計(jì)算將可能存在的情況均考慮在內(nèi),保證了分流計(jì)算的準(zhǔn)確度與有效性。
本發(fā)明可具體應(yīng)用到手機(jī)導(dǎo)航系統(tǒng),可以幫助用戶來顯示當(dāng)前區(qū)域的實(shí)時(shí)路況,包括當(dāng)前某條路段的流量以及速度情況和路口的分流信息,用戶可以通過這些信息來分析道路擁堵情況,并選擇合適的路線來避免經(jīng)過擁堵的路段,提高導(dǎo)航系統(tǒng)的準(zhǔn)確性和有效性。
本發(fā)明的優(yōu)點(diǎn)是:部署簡易,維護(hù)方便,數(shù)據(jù)處理迅速。
附圖說明
圖1為實(shí)施本發(fā)明方法的道路實(shí)時(shí)處理系統(tǒng)框圖。
圖2為本發(fā)明的不相鄰的兩條路段的空間方向計(jì)算示意圖。
圖3為本發(fā)明的路網(wǎng)匹配過程示意圖。
圖4為本發(fā)明的道路速度計(jì)算示意圖
具體實(shí)施方式
本發(fā)明所涉及的基于Hadoop的海量交通數(shù)據(jù)處理方法,包括以下幾個(gè)步驟:
1)分布式道路匹配:將數(shù)據(jù)傳輸?shù)紿adoop平臺(tái)的HDFS數(shù)據(jù)存儲(chǔ)系統(tǒng),方便進(jìn)行分布式處理數(shù)據(jù),道路匹配的目的是將有效的GPS點(diǎn)匹配到所在道路,進(jìn)行準(zhǔn)確的流量統(tǒng)計(jì)。其中步驟1)具體包括:
(1.1)多節(jié)點(diǎn)數(shù)據(jù)處理及計(jì)算:將包含出租車信息的數(shù)據(jù)文件傳輸?shù)紿DFS的數(shù)據(jù)存儲(chǔ)系統(tǒng),命令多臺(tái)電腦作為獨(dú)立的節(jié)點(diǎn)同時(shí)對數(shù)據(jù)進(jìn)行處理,包括出租車數(shù)據(jù)的清理、矢量地圖的修正等,主要目的是全方位剔除邏輯錯(cuò)誤的GPS點(diǎn)數(shù)據(jù),具體包括時(shí)間錯(cuò)亂以及速度不符合常理的數(shù)據(jù);在道路修正上主要解決道路單雙向以及道路行駛方向的糾正。由于多臺(tái)主機(jī)同時(shí)作為節(jié)點(diǎn)處理數(shù)據(jù)大大提高工作效率,進(jìn)行快速的流量統(tǒng)計(jì)及速度計(jì)算;
(1.2)搭建MapReduce道路匹配的框架:通過Hadoop平臺(tái)的MapReduce框架讀取數(shù)據(jù)與實(shí)際路網(wǎng)的杭州市道路路網(wǎng)信息進(jìn)行路網(wǎng)匹配,進(jìn)一步提高該系統(tǒng)的高效性。使用dom4j文件處理方式處理數(shù)據(jù)文件中的路網(wǎng)信息,將文件中路網(wǎng)的邊界、節(jié)點(diǎn)以及路段信息通過MapReduce框架進(jìn)行讀取和解析,進(jìn)行多服務(wù)器同時(shí)處理數(shù)據(jù)的路網(wǎng)匹配工作;
(1.3)車輛軌跡解析:對已經(jīng)讀取的車輛軌跡進(jìn)行解析。本計(jì)算方法首先將軌跡解析成有聯(lián)系的一系列的GPS點(diǎn)數(shù)據(jù),解析后的數(shù)據(jù)符合MapReduce框架的處理格式。將文件對應(yīng)的數(shù)據(jù)行所代表的GPS點(diǎn)整理為包含經(jīng)緯度信息、時(shí)間信息、和車輛ID的文本文件,為了便于MapReduce任務(wù)的進(jìn)行,每一個(gè)數(shù)據(jù)行的偏移量作為Map任務(wù)的Key值便于數(shù)據(jù)索引,行內(nèi)的內(nèi)容作為當(dāng)前Key值對應(yīng)的Value,利用MapReduce進(jìn)行快速的Key-Value讀取與處理,完成路網(wǎng)中每一條軌跡的解析;
(1.4)創(chuàng)建擴(kuò)展路網(wǎng):利用每一個(gè)GPS點(diǎn)的位置對路網(wǎng)進(jìn)行擴(kuò)建,以候選GPS為矩形中心,建立邊長為M的的最小矩形,M為可修改的矩形邊長,所建立的最小矩形稱為最小限定矩形MBR(minimum bounding rectangle),使用prtree算法中的find方法查找當(dāng)前點(diǎn)的MBR與所有路段的MBR(以一條道路的連線作為對角線所形成的矩形)進(jìn)行比較,凡是有共同面積的每一個(gè)MBR作為候選匹配路段。計(jì)算GPS候選點(diǎn)和每一條候選匹配路段的距離,得到的最短距離所對應(yīng)路段的ID信息取出來,則該路段作為候選GPS點(diǎn)的最佳匹配路段。由此利用Hadoop平臺(tái)完成所有GPS點(diǎn)與路網(wǎng)信息的快速匹配,作為后續(xù)道路流量計(jì)算和分流數(shù)據(jù)來源;
2)道路流量及車輛速度的計(jì)算:通過匹配成功的路網(wǎng)索引路段ID得到對應(yīng)車輛的行駛軌跡,將路段流量看做車輛當(dāng)前時(shí)間經(jīng)過當(dāng)前路段的次數(shù),根據(jù)路段當(dāng)前所匹配到的軌跡數(shù)量確定當(dāng)前車流量,一條道路所對應(yīng)的路段流量總和作為該道路流量。另外利用路段序列中當(dāng)前路段與下一路段在空間中的相對位置,計(jì)算兩個(gè)路段向量的夾角和外積的模,若夾角小于30度則視為直行,若大于150度則為掉頭,根據(jù)外積的??梢耘袛噢D(zhuǎn)向?yàn)樽筠D(zhuǎn)還是右轉(zhuǎn),模為正數(shù)為左轉(zhuǎn),負(fù)數(shù)為右轉(zhuǎn);對于道路車輛行駛速度v,首先計(jì)算三種平均速度,三種平均速度分別為上個(gè)路段尾點(diǎn)到當(dāng)前點(diǎn)的平均速度v1、當(dāng)前點(diǎn)到下個(gè)路段起始點(diǎn)的平均速度v2和當(dāng)前道路的瞬時(shí)速度v3:
v=ω1v1+ω2v2+ω3v3
其中ωi(i=1,2,3)為每種速度的加權(quán)值,且∑ωi(i=1,2,3)=1;
然后把出租車軌跡的每一個(gè)GPS點(diǎn)匹配到的路段信息(包括速度,流量,下一條路的ID等信息)導(dǎo)出,作為下一個(gè)分流工程的輸入文件;
3)道路分流統(tǒng)計(jì):首先判斷道路方向,利用每條路的兩個(gè)節(jié)點(diǎn)nodeID判斷道路的流向,假設(shè)當(dāng)前路段Way1的兩個(gè)節(jié)點(diǎn)nodeID1和nodeID2,下一條路段Way2的兩個(gè)節(jié)點(diǎn)nodeID3和nodeID4。分流統(tǒng)計(jì)則包含以下步驟:
(3.1)若nodeID2和nodeID3相同,則規(guī)定這兩條路的方向?yàn)閚odeID1指向nodeID2,nodeID2指向nodeID4;
(3.2)然后通過兩條路的空間位置來計(jì)算分流的方向,這里定義兩條路的夾角大150度的情況為掉頭,把夾角介于150度到30度之間以及路段矢量差積來確定左轉(zhuǎn)或者右轉(zhuǎn),夾角小于30度視為直行;
(3.3)若nodeID1-nodeID4均無任何一個(gè)相同ID,則定義兩個(gè)連續(xù)GPS點(diǎn)匹配到的路段之間還包含其他的路段,首先找到當(dāng)前路Way1所有相鄰的路段,然后查找到所有相鄰路段對應(yīng)的相鄰路段集合,判斷集合中所有路段中是否存在和Way2相同的路段ID,若存在則表示W(wǎng)ay1和Way2之間存在一條連接路段,若不存在則繼續(xù)按照上述方法多次迭代,即可找到當(dāng)前路段和下一條路段之間的所有連接路段;
(3.4)對每兩條相鄰路段重復(fù)步驟(3.2)判斷分流的具體情況。
以上闡述的是本發(fā)明給出的一個(gè)實(shí)施案例展示了交通數(shù)據(jù)處理的形式列舉,顯然本發(fā)明不只是限于上述實(shí)施案例,在不偏離本發(fā)明基本精神及不超出本發(fā)明實(shí)質(zhì)內(nèi)容所涉及范圍的前提下對其可作種種變形加以實(shí)施。所提出的數(shù)據(jù)處理方法對于解決數(shù)據(jù)的冗雜及處理緩慢是非常有效的。