馬金麟,張宗博,謝君平,張其強
(江蘇大學 汽車與交通工程學院, 江蘇 鎮江 212013)
?
基于車牌識別數據的車輛OD矩陣獲取研究
馬金麟,張宗博,謝君平,張其強
(江蘇大學 汽車與交通工程學院, 江蘇 鎮江 212013)
利用高清智能卡口系統采集的車牌數據和調查得到的交通信息建立原始資料數據庫,提出車輛OD矩陣的獲取步驟,并利用VBA編程實現對Excel車牌數據文件的數據挖掘。提出了卡口間的車輛行程時間的獲取方法,運用VBA編程獲取全區所有的卡口間的行程時間,實現基于行程時間的卡口聚類劃分,從而完成對調查范圍的交通小區劃分。以某主城區為例,通過設定適當的卡口間行程時間的劃分標準,實現對主城分區的交通小區劃分,并根據交通小區的車輛OD矩陣獲取流程圖得到車輛OD矩陣。
城市交通;OD矩陣獲取;車牌;行程時間;小區劃分
傳統的OD調查方法包括路邊詢問法、發表調查法、車輛牌照法、家訪法等。這類方法以抽樣調查為基礎,通過對調查后的數據進行處理,形成所需的各類OD表。該方法能夠獲取較為精確的OD數據,但需要投入大量的人力、物力。近年來許多交通領域的專家、學者改變了以往的交通調查理念和方法,而專注于對車牌照進行交通調查和分析[1]。目前,每天城市路網中的所有卡口設備記錄的車牌數據超過百萬計,但是現今對車牌信息的利用局限于車速測量[2]、出入收費管理[3]、違章處罰[4]等功能。車輛牌照的應用局限于維護交通安全和城市治安,防止交通堵塞,沒有從系統全局的角度分析和利用車牌信息。以往的交通調查和分析的方法和理念具有一定的局限性和低效性,特別是起訖點調查,已經不能滿足現今交通系統分析的需求。因此,針對以上問題,本文利用車牌照信息來獲取公路網的車輛OD矩陣,并用相關的理論和方法對獲取的OD矩陣進行相關的分析,這種基于車牌識別數據的車輛OD矩陣獲取使得大量車牌數據得到充分利用。這種基于車牌照的交通調查不僅能夠降低調查的成本,而且對調查結果的分析也更加準確和可靠。
1) 利用高清智能卡口系統獲取的車牌數據和調查得到的交通信息建立原始資料數據庫,提出車牌數據處理的步驟,并利用VBA編程實現數據挖掘。
2) 提出一種基于車輛行程時間的交通區劃分方法。通過對卡口之間車輛的行程時間的長短進行卡口的聚類,實現對交通小區的劃分,并在此基礎上獲取交通小區的車輛OD矩陣。
3) 對交通矛盾最突出的主城分區進行交通現狀分析。根據車輛的行程時間對主城區進行交通小區劃分,并在此基礎上獲取車輛OD矩陣表。
2.1 建立原始資料數據庫
通常情況下,在調查中要求對每輛車記錄下列數據:調查地點、車牌號碼、車型、時間、行駛方向等。
2.1.1 車牌識別數據的獲取
通過卡口系統可以實現對路網中的設置點位全天候實時地記錄車輛的出行信息,并將記錄的信息傳至終端的數據庫中進行存儲,系統可自動識別車牌號碼且全天車牌的識別準確率都在95%以上[5]。
對于車牌數據的輸出,后臺軟件平臺可根據輸入條件查詢數據。出于分析需要,可根據選擇的導出條件導出車牌數據,保存為Excel格式的數據文件。
2.1.2 卡口點位的獲取和編碼
調查地點的獲取對于車輛的OD矩陣的推斷至關重要。調查地點從某種意義上代表了機動車的起訖點。為了獲取調查地點的位置,采用卡口點位代替調查地點位置。本次實驗調查以常州市武進區為例進行說明,通過收集武進區的各種規劃資料和網絡信息繪制武進地圖,將武進區所有的卡口位置在地圖中標注,得到共計303個卡口點位。卡口點位分布情況見圖1。

圖1 卡口點位分布情況
建立原始數據庫后,借助編寫的程序,可以方便地進行數據處理。
2.2 車輛OD矩陣的獲取步驟
為了利用調查的數據獲取車輛出行OD矩陣,必須對原始數據庫進行數據處理。數據處理的目的就是找出車輛在直接影響區的行蹤。
車輛OD矩陣的獲取步驟:
1) 導出車牌數據
在數據導出界面中,選擇所需的數據導出條件,導出某工作日某時段(起始時間為5點,結束時間為9點)全區所有卡口的車牌數據。此時段的車輛出行行為多是從家出行至單位,除營運車輛外,多次、往返出行的車輛較少。
2) 獲取卡口點之間的車輛OD矩陣
由于導出的車牌數據是Excel文件,選擇利用VBA編程對車牌數據文件進行數據挖掘,獲取卡口與卡口之間的車輛數據信息。具體過程如下:
① 刪除無效數據
所導出的Excel格式的車牌數據文件,數據信息是保存在工作表sheet1中。數據形式如表1所示。首先,刪除sheet1中未被系統識別的數據(如表1中第4行數據)和車牌號碼列中的唯一項,保留重復項。其次,在此基礎上刪除由前4位是數字和最后一位字母是“X”組成的車牌號碼*常州出租車的車牌號是由前四位數字和末位字母是“X”組成的統一格式,此步驟是剔除營運車輛的短途往返出行。。

表1 數據文件
② 獲取每輛車的起點和終點
以該時段某一輛車的出行情況說明車輛出行的起點和終點的含義,表2是車輛(浙K1779S)在路網行駛中,被高清智能卡口記錄到的行車信息。通過表2,可以在路網圖中繪制出該輛車在路網中的出行軌跡。如圖2所示。

表2 出行情況

圖2 出行軌跡
通過圖2和表2可知:在該段時間內,這輛車的經過所有卡口時刻的最大值和最小值分別為2015-12-20,08:54:22.708和2015-12-20,08:34:40.285,記最大值(2015-12-20,08:54:22.708)所對應的卡口(長虹路-西園路)所在地即為該輛車出行的終點,最小值(2015-12-20,08:34:40.285)所對應的卡口(S38常合高速常州南區收費站)所在地為該輛車出行的起點。
在步驟1的基礎上,篩選得到的每輛車經過卡口時刻的最大值和最小值,以及時刻的最大值和最小值對應的卡口名稱,保存至工作表sheet2中。
③ 計算各卡口之間的車輛OD矩陣
對于工作表sheet3,在A列中,從A2開始存放sheet2中車輛經過卡口時刻最小值對應的卡口名稱;在第1行中,從B1開始存放sheet2中車輛經過卡口時刻最大值對應的卡口名稱。列對應的卡口名稱與行對應的卡口名稱順序要一致。根據sheet2中的數據,在sheet3中行列交叉處填寫從起點至終點的車輛出行數量,對于不用的車牌號碼但是具有相同的起點和終點的卡口名稱要累加計數。至此便可得到卡口與卡口之間的OD矩陣。
3) 求解交通小區的車輛OD矩陣
以所劃分的交通小區內含有的卡口點位為該交通小區的數據信息,即卡口為元素,交通小區就是由卡口為元素組成的集合。統計以卡口為元素的不同的交通小區集合,然后計算各交通小區集合之間的車輛數據信息,由此便可得到所需的車輛OD矩陣。
2.3 Excel VBA在數據處理中的應用
2.3.1 Excel VBA
Visual Basic for Applications(VBA)是Visual Basic的一種宏語言,是微軟開發出來在其桌面應用程序中執行通用的自動化(OLE)任務的編程語言。
2.3.2 Excel VBA實現車輛OD矩陣獲取步驟
Excel VBA在獲取車輛OD矩陣中的應用主要體現在卡口點之間的車輛OD矩陣的獲取過程中。在刪除無效數據的過程中,工作表sheet1中未被系統識別的數據和出租車的車牌號碼數據,可以利用Excel本身的數據篩選功能進行剔除。其余數據處理工作通過VBA編程得以實現。Excel VBA在實現卡口間OD矩陣獲取的程序設計分為兩步:
1) 原始數據的處理。根據vba基于ado訪問sql的策略,先建立自身的連接,然后構造一個sql語句,取得車輛記錄大于1的所有車輛最大經過時間對應的記錄(車牌號碼Max,經過時間Max,卡口名稱Max),同理,通過構造另外一個sql語句,并取得車輛記錄大于1的所有車輛最小經過時間對應的記錄(車牌號碼Min,經過時間Min,卡口名稱Min),將處理結果放入sheet2。
2) 卡口間OD矩陣的生成。基于前述的ado處理方式,將sheet2的結果作為數據源,重新構造sql,"select distinct 卡口名稱Max from[sheet2$]",提取卡口名稱Max唯一記錄放入首行,通過構造sql,"select distinct 卡口名稱Min from[sheet2$] ",提取卡口名稱Min唯一記錄放入首列。根據構造的這個矩陣,循環遍歷sheet2的所有記錄,根據卡口名稱Max在sheet3定位到列號,根據卡口名稱Min在sheet3定位到行號,通過此行號和列號,定位坐標,并記錄數據次數加1,整個sheet2處理完畢,即可得到sheet3所示的二維表單。
程序設計的流程如圖3所示。

圖3 程序設計的流程
3.1 卡口間行程時間的獲取
首先,利用卡口記錄的車牌數據獲取卡口的車輛的時間差。然后,對所獲取的時間差進行區間分段計數處理,通過時間差分段區間的車輛比例刻畫卡口間的車輛行程時間分布情況。
詳細的數據處理步驟如下:
1) 在原始車牌數據的基礎上,先篩選卡口,然后運行編寫好的宏命令,得到了所有車輛經過卡口的時間差值,將結果輸出到工作表sheet2中。
2) 對時間差值進行分段,求出對應時間差分段的車輛數、車輛比例。取車輛比例最高的時間差分段區間為卡口車輛行程時間。
3.2 VBA在基于車輛行程時間的交通區劃分中的應用
3.2.1 Excel VBA實現行程時間數據處理
基于大數據量的考慮,利用excel ado 讀取表外文件的特性,把數據源單獨放入一個excel文件,一方面可以減少程序文件的體積,另一方面可以利用ado處理大數據的優勢,不通過open的方式訪問工作薄,建立SQL查詢語句快速搜索相關符合要求的記錄。
本程序設計分為兩步:
第1步,通過構造sql語句,"sql="select distinct 卡口名稱 from[源數據$]",提取卡口數據,采用遞歸算法Sub comb(a,arr,x As Long,y As Long,z As Long,jj As Long),得到所有卡口組合。
第2步,直接用利用excel ado,通過構造sql語句”sql="select 車號,datediff(""s"",min(left(經過時間,len(經過時間)-4)),max(left(經過時間,len(經過時間)-4))) as 間隔 from[源數據$] where 卡口名稱=′" & Cells(i,"A") & "′ or 卡口名稱=′" & Cells(i,"B") & "′ group by 車號"”,循環遍歷所有的卡口組合,實現卡口之間的時間差的統計,在data表中預制好公式(詳見表3),通過在data工作表預制的公式,就可以在統計出時間差的同時,得出各區間時段的車輛數,繼而求出與各時段車輛數最大值相對應的卡口間的行程時間。最后將每一組卡口間的行程時間保存于另一張工作表中。
用編寫的VBA程序計算車輛通過所有卡口之間的車輛行程時間,程序的流程圖見圖4,運行情況見圖5。

表3 Data表中的公式設計

圖4 計算車輛通過所有卡口之間的車輛 行程時間的程序流程

圖5 程序運行情況
表3中:第1列和第2列分別存儲經過宏運行后獲取的每個卡口組合的車牌號碼和時間差;第3列(時間分段),起始值為5,步長(區間長度)設置為15;第4列預制公式“=COUNTIFS(B:B,"<="&C2+15,B:B,">= "&C2)”,用于統計每個時間分段的車輛數;第4列的第一行預制公式“=OFFSET(D1,MATCH(MAX(E:E), E:E,0)-1,0)”,用于求出與各時段車輛數最大值相對應的卡口間的行程時間。
3.2.2 Excel VBA實現基于行程時間的卡口聚類劃分
交通小區是具有一定交通關聯度和交通相似度的節點或連線的集合,隨時間、關聯度和相似度的變化而變化,反映城市路網交通特征的時空變化特性[6]。車輛的行程時間作為卡口劃分的依據,卡口間行程時間設置的大小直接影響到將所有卡口劃分的集合數量的多與少。根據不同的研究目的,可以設置不同的劃分標準,隨之調查范圍內的所有卡口也將劃分為不同的集合,得到不同的劃分結果。
基于行程時間的卡口聚類劃分的VBA程序設計相對簡單。根據數據字典,通過關鍵字快速檢索數據的特點,引入字典變量,建立檢索庫、總庫字典和分庫字典。本程序設計分為兩步:
1) 將卡口1和卡口2 的所有組合讀入到檢索庫中,用于后期的數據快速讀取。循環遍歷表中所有卡口(卡口1、卡口2),判斷此卡口是否存在于總庫中,存在即進入一下記錄的判斷。否則加入總庫,并建立對應的分庫,并從當前記錄開始到最后記錄開始循環,判斷包含此卡口的所有記錄中,另一卡口和查詢卡口對應分庫中所有組合,是否滿足檢索條件。若滿足即加入對應的分庫,并加入總庫,當所有記錄循環完畢,即得到所有分庫。
2) 通過遍歷表中所有卡口組合,讀取每個分庫的所有卡口數據,建立矩陣,并通過先前的檢索庫,寫入對應每個坐標數據。
通過循環輸出的所有分庫,即是輸出對應于所有卡口劃分形成的集合,程序的流程見圖6。

圖6 基于行程時間的卡口聚類劃分的 VBA程序流程
最后,需要指出兩點:
1) 在進行實際的應用時,若進行卡口劃分的行程時間標準值為m,只需將程序代碼第二行改成“Const minNum& =m”,可實現對城市路網中的卡口的自動聚類劃分,代碼截圖見圖7。

圖7 代碼截圖
2) 運用上述的方法進行交通區劃分,劃分的結果中會存在少數卡口同時滿足多個分庫的檢索條件,也即是說某些交通小區的集合會存在交集。完整的小區劃分是將所有的卡口劃分成互不相交的子集之并,所以要結合專家經驗對運用上述方法劃分的交通小區進行優化和修正[7]。
以常州市武進區的主城區為例,簡述交通小區的車輛OD矩陣獲取過程。
4.1 車輛OD矩陣的獲取的思路
采用記錄車輛牌號法進行車輛OD調查時,機動車O、D點在調查中并不能直接得到。首先,按照車輛OD矩陣獲取步驟對所建立的原始數據庫進行數據處理,得到卡口與卡口之間的車輛OD矩陣。再結合對研究區域的交通小區的劃分情況,得到交通小區的車輛OD矩陣。基于車牌識別數據的車輛OD矩陣獲取的過程如圖8所示。

圖8 交通小區的車輛OD矩陣獲取的流程
4.2 調查范圍的劃定
調查范圍的劃定是進行交通小區的劃分和交通小區的車輛OD矩陣獲取的前提條件,劃定調查區域范圍實際上就是確定境界線,區域的大小與交通規劃的目標是密切相關的。
通過對加權道路網絡的多重分形分析可知:主城分區的路網不僅是網絡密度最高,而且網絡覆蓋的深入程度、網絡分布的均勻程度最大,所以這個區域是交通矛盾最突出的區域。因此,將調查范圍劃定為:最北以312國道為界,南至西湖里;東起夏城路,西至龍江路,見圖9。

圖9 調查范圍
4.3 交通小區劃分
交通小區的劃分是建立交通模型的基礎,將調查范圍分為2個層次進行交通小區劃分:① 通過對卡口之間車輛的行程時間的長短進行卡口的聚類,從而實現對交通小區的劃分[8]。這一級的小區劃分是精細劃分,目的是為進行交通分配等微觀方面研究提供保障。② 在第1層次劃分的基礎上,根據土地利用、路網結構、地形特征等情況對交通小區合并,形成交通大區,這一級別的劃分較粗,主要用于出行分布等較宏觀層次的研究工作。
第1層次的交通區劃分:基于車輛行程時間的交通區劃分。
首先,通過高清智能卡口系統的軟件平臺,獲取得到調查范圍內2015-12-20日,5:00—9:00這個時間段內所有的卡口車牌數據,利用上述車輛行程時間的獲取方法得到調查范圍內所有卡口間的行程時間,結果如表4所示。
表4 卡口間行程時間

卡口名稱1卡口名稱2行程時間/sS38常合高速常州南(武進高新區)收費站S39江宜高速武進65S38常合高速常州南(武進高新區)收費站東龍路牛塘段305┋┋┋鳴新路—新平路龍江路—人民路275
其次,實現基于車輛行程時間的卡口聚類劃分。將已獲取得到的研究范圍內卡口間的行程時間作為源數據,利用已經編寫好VBA程序進行卡口的聚類劃分。為了能夠更好地對調查范圍內的交通現狀進行分析,將聚類劃分的標準設置為60s,把程序代碼第二行改成“Const minNum& =60”,運行VBA程序即可實現對城市路網中的卡口的自動聚類劃分。通過劃分將主城分區的86個卡口按照車輛行程時間劃分為47個交通小區,編號為1~47。
第2層次的交通區劃分:結合主城區用地布局情況,調查范圍主要形成牛塘片區、湖塘片區、綜合中心區、智心片區、高新區等五大功能片區[9]。將已經劃分好的交通小區合并到五大功能片區內,形成5個交通大區,編號為1~5。
研究范圍劃分成直接影響區。為了體現過境交通的影響,在研究范圍周邊設虛擬小區。虛擬小區是將幾條主要的對外交通道路設置為界線形成的,對外交通道路之間所夾范圍內含有的卡口作為該對外小區的含有的卡口。據此,對外小區劃為10個,編號為48~57。
本次交通區劃分如圖10、11所示。

圖10 交通小區 圖11 交通大區
4.4 車輛OD矩陣的獲取
根據已劃分好的交通分區,按照OD矩陣的獲取步驟,首先找到對應分區內的卡口編號(表4),然后通過查表將各交通分區對應的列編號和行編號一一列出來,最后將行編號和列編號分別輸入編好的源VBA程序文件中,便可以計算出對應交通分區的車輛的OD矩陣表,從而計算得到主城分區交通大區的車輛OD矩陣表和交通小區的車輛OD矩陣表。
本文以常州武進區的主城區為例,在交通小區的劃分中,按照研究目的的不同,將調查區域分為2個層次進行交通小區的劃分:① 采用了基于車輛的行程時間對調查范圍進行了微觀層次的小區劃分;② 在第1層次劃分的基礎上,根據土地利用、路網結構、地形特征等情況對交通小區合并成,實現調查范圍交通大區的劃分。根據交通小區的車輛OD矩陣獲取的流程,實現了對交通分區的車輛OD矩陣的獲取。
[1] 王龍飛.基于車牌照的車輛出行軌跡分析方法與實踐研究[D].西安:長安大學,2011.
[2] 王煒,過秀成.交通工程學[M].南京:東南大學出版社,2000.
[3] 趙丹,孫云蓮.基于ICA的車牌牌照字符識別系統[J].武漢大學學報(理學版),2005,51(S2):208-210.
[4] Nanne van der Zijpp.Dynamic OD-Matrix Estimation on Motorway Networks[D].Holand:Department of Civil Engineering Delft University of Technology,1996.
[5] 杭州海康威視數字技術股份有限公司.高清智能卡口系統方案[EB/OL].[2015-05-20].http://wenku.baidu.com/link?url=mFTDhZBbshS-YY1kILDtSdOc
Fu_HwNOMPQA2hxX3RVxcjB8tKddd4LRAT-XeCli8MJ
zBRayH6wSQP8s7UVSFG3q5Vz8WQGsgKOL5grQClzC.
[6] 蔡毅.基于出租車GPS數據的南京市交通小區的劃分[J].科技創新導報,2015(23):218.
[7] 李曉丹,楊曉光,陳華杰.城市道路網絡交通小區劃分方法研究[J].計算機工程與應用,2009,45(5):19-22.
[8] 蔡毅.基于出租車GPS數據的南京市交通小區的劃分[J].科技創新導報,2015(23):218.
[9] 南京大學城市與區域規劃系.武進中心城區空間發展戰略與優化提升規劃[EB/OL].[2015-06-28].http://wj.czghj.gov.cn/info/WJ2335.html.
(責任編輯 楊黎麗)
Research on Obtaining the Vehicle OD Matrix Based on License Plate Number
MA Jinlin, ZHANG Zongbo, XIE Junping, ZHANG Qiqiang
(School of Automotive and Traffic Engineering, Jiangsu University, Zhenjiang 212013, China)
The original database based on theobtained license plate number and investigation on the traffic information was established. And then, data processing steps for the license plate were put forward with the use of VBA Excel programming license plate data files for data mining. The method of acquiring the travel time between bayonets is proposed by using the VBA programming to obtain all of the travel time between bayonets. The division of the traffic area through clustering analysis the length of the vehicle’s travel time between bayonets was achieved. Taking the main district of Wujin as an example, the main city zone is divided into pieces of traffic areas by setting the appropriate standard of travel time between bayonets. Obtaining OD matrix of vehicle is demonstrated by flowchart of achieving OD matrix of traffic zone.
urban traffic; obtain OD matrix; license plate; travel time; zone division
2016-09-11
國家自然科學基金資助項目(71101072)
馬金麟(1973—),男,山東臨清人,碩士,副教授,主要從事交通運輸規劃與管理研究,E-mail:mjl@ujs.edu.cn。
馬金麟,張宗博,謝君平,等.基于車牌識別數據的車輛OD矩陣獲取研究[J].重慶理工大學學報(自然科學),2017(7):48-55.
format:MA Jinlin,ZHANG Zongbo,XIE Junping, et al.Research on Obtaining the Vehicle OD Matrix Based on License Plate Number[J].Journal of Chongqing University of Technology(Natural Science),2017(7):48-55.
10.3969/j.issn.1674-8425(z).2017.07.007
U491
A
1674-8425(2017)07-0048-08