王衛東 孫 偉 潘文剛
(青島市市政工程設計研究院有限責任公司,山東青島 266000)
按照現行的交通部部頒公路網規劃和工預可編制辦法,公路OD調查是公路網規劃、公路工預可研究交通量預測交通四階段方法的數據基礎。筆者實踐了多個工預可研究項目,OD調查數據的后期處理一直是最費時間和人力的工作,往往一個項目內業部分的2/3的時間都在進行OD調查基礎數據的處理。大量重復枯燥無味的重復性、機械性工作導致了工作效率低下,工作難度增加。
具體表現為如下幾個方面:
1)現有OD數據處理軟件格式要求嚴格:數據處理過程要不斷手工進行數據模式的轉換。
2)現有OD數據處理軟件大多基于DOS界面,操作繁瑣。
3)數據微調工作難度大:往往加幾個小區、調整車輛特征可能要重復所有的數據處理過程。
4)純手工操作過程過多,工作效能低下。
采用VBA對Excel進行二次開發的辦法進行OD處理,可以很好的解決以上問題。
VBA是Visual Basic Application的簡寫,是微軟應用可編程應用軟件對辦公軟件進行操作的完美實現,它作為一種通用的宏語言可操作常用應用軟件,例如 Excel,Word,Access,AutoCAD,TransCAD等。
一種可跨越多個應用軟件,使常用應用軟件產品具有高效、靈活且一致性的開發工具以根據用戶和工作需要提高軟件的操作性和擴展軟件的功能一度是軟件使用者所夢寐以求的目標,VBA正是微軟為了解決這一問題而開發出來的。常用的Excel,Word,Access,Project等都采用通用的宏語言供用戶開發使用,不需要獨立的去學習專用語言,它們之間互相兼容,使得數據可以在各個應用軟件之間進行互聯,使得程序設計人員僅需學習一種統一的標準宏語言,就可以轉換到特定的應用軟件上去,程序設計人員在編程和調試代碼時所看到的是相同的用戶界面,而且VBA與原應用軟件的宏語言相兼容,以保障用戶在代碼和工作上的成果。
VBA Excel正是基于VBA的Excel編程技術。它可以解決Excel數據表格存儲和處理中各種數據操作的重復性勞作,節省時間,簡化工作步驟,減少工作量,降低失誤,實現數據操作的連續性、準確性和編輯性。
公路規劃的原始OD調查數據是包括調查點、車型(客、貨、拖拉機等)、貨類(人、煤炭、石油、礦產等)、機動車起點(數字編號)、機動車終點(數字編號)、是否旅游等信息的逐條數據條。因為后續分析和四步驟法預測的需要,必須進行數據處理獲取分類OD表和分析表。數據處理主要步驟結構圖見圖1。
公路規劃的OD數據處理主要任務:
1)把現場采集的分條原始OD數據進行重新分類和列表,獲取各種車型和貨類OD表;
2)要將原始OD數據進行描述性分析,獲取各種貨類的指標性數據;
3)要將各調查點原始OD數據進行合并處理,獲取整個區域內的OD數據表;
4)要將原始OD數據進行加工整理,便于交通規劃軟件輸入和后期統計分析;
5)要將原始OD數據進行擴樣操作,以獲取每種車型出行量OD表。
首先是將分條的OD記錄按照分車型和分貨類轉換成OD表格式。
其次要對原始OD表進行擴樣,擴樣采用如下公式進行:
Qijk=Vijk·αk·Sk·Wk·Mk。
式中:Qijk——i區到j區的第k種車型的出行量;
Vijk——i區到j區的第k種車型的OD調查樣本量;
αk——第k種車型的晝夜比;
Sk——抽樣率倒數;
Wk——周日不均勻系數;
Mk——月不均勻系數。

圖1 數據處理主要步驟結構圖
再次是按照《公路工程技術標準》規定的車輛折算比例進行標準車折算。
最后按照常規串并聯規則進行OD的合并匯總獲取區域的OD數據。
車輛運輸特性文件的主要輸出內容包括分車型實載率、里程利用率和貨車重車率、車輛數、額載等有關指標。貨物載運狀況文件則是列出分車型、分貨類的裝載量調查統計分析結果。
無需置疑,這些數據操作如果用人工進行逐條操作會浪費太多的人力和時間,大量操作無疑會導致人為錯誤的出現。現在業內常采用的軟件基于DOS環境編寫的Fortran和C++編程序,存在數據格式要求苛刻,需要人工反復進行數據格式轉換,不具備Windows界面,操作復雜,不易上手等問題,也不允許用戶更改參數和優化處理步驟。
VBA Excel可以實現對常用Excel表格的程序化管理,實現數據的程序化操作。程序存儲于數據表內,以宏的形式運行,易于被用戶接受。Excel表格是目前計算機存儲數據最為普遍的形式,并且提供了多種其他形式數據文件的無縫導入,兼容性比較強。
VBA Excel處理數據就是運用VBA程序操作各個Excel數據文件,使得數據按照算法不斷的計算,交換,獲取處理結果。按照如上所述公路OD處理的原理,作者設計了基于VBA Excel的公路OD處理程序。
首先,參數輸入過程。將所要處理的車型、折算系數、擴大系數、串并聯規則都放入設定好的Excel工作簿主文件的4個工作表里,格式采用固定格式,以確保操作代碼能夠找到這些輸入數據。
第二,編寫代碼對各參數進行讀取,并命名成數組,進駐內存,備用。
第三,打開原始OD條工作簿,讀取要處理的原始OD條,并命名為數組,進駐內存,備用。
第四,按照算法對讀取的各個數組進行數據交換處理,并命名為數組,將處理結果存儲于該數組,進駐內存。
第五,將處理的結果數組按照不同的點和車型進行分組存儲為工作簿文件。
最后,將結果工作簿文件格式進行處理,以獲取更加簡潔、清晰的處理結果,并關閉打開的原始OD條工作簿。
以四川某高速公路工可為例,對程序進行演示和分析。對實例采用以往OD處理軟件和VBA程序兩種不同方法進行處理分析(見圖2~圖4及表1)。

圖2 程序主要文件構成

圖3 數據輸入示意圖

圖4 數據處理結果

表1 不同方法處理效率對比表
通過實例分析可以看出用VBA進行數據處理簡單易行,優點突出,可以作為OD處理的新辦法推廣進行。
[1] 晶辰工作室.Excel2000 VBA開發實例指南[M].北京:電子工業出版社,2000.
[2] 李曉玫,楊小平.Excel中的VBA程序設計[J].四川師范大學學報(自然科學版),2004(10):6.
[3] 符耀華.公路交通量及OD調查統計分析軟件開發[J].交通標準化,2008(5):11.
附:源代碼(部分)


