


摘 ?要:為了利用交通大數據為道路建設提供重要依據,本研究基于Web的Browser/Server結構模式,采用ASP.NET技術,借助百度地圖JavaScript API,應用C#、JavaScript和T-SQL等編程語言設計并實現了交通車速區間位置查詢系統。首先通過對交通大數據進行整理得到GPS數據,然后通過該系統的車速區間位置查詢頁面對十進制經緯度坐標精確到小數點后的位數和查詢條件(經緯度范圍、車速區間和車輛數量下限)進行設置,可查詢到車輛集中停放、堵車、車流量大和車輛超速的具體位置。通過實驗與分析,基于交通大數據的車速區間位置查詢系統可以為道路建設規劃與改造降低事故發生率提供重要的依據。
關鍵詞:交通大數據;位置查詢系統;百度地圖API;Web;ASP.NET;C#
中圖分類號:TP391.1 ? ? 文獻標識碼:A 文章編號:2096-4706(2019)05-0001-06
Abstract:In order to provide an important basis for road construction by using traffic data,this paper designs and implements a traffic speed interval location query system based on Browser/Server structure mode of Web,using ASP.NET technology and Baidu Map JavaScript API,using C#,JavaScript and T-SQL programming languages. Firstly,the GPS data is obtained by sorting out the traffic data. Then,the decimal coordinates of longitude and latitude are precisely set to the digits after decimal point and the query conditions(longitude and latitude range,speed interval and lower limit of vehicle number)are set through the speed interval location query page of the system,which can query the specific locations of concentrated parking,traffic jam,large traffic volume and vehicle overspeed. Through experiments and analysis, the speed interval location query system based on traffic data can provide an important basis for road construction planning and reconstruction to reduce the accident rate.
Keywords:traffic big data;location query system;Baidu map API;Web;ASP.NET;C#
0 ?引 ?言
目前國內面臨嚴峻的交通問題[1-4],城市中交通狀況不佳的現象普遍存在,時間的延誤、車速過低和能源的浪費給消費者帶來了極大的經濟損失,大量廢棄物的排放和大量噪聲的制造,對城市的環境造成了很大的影響。如果能夠對交通大數據進行分析,并查找到不同車速區間車輛的運行情況和位置,可為道路建設規劃與改造和降低事故發生率提供重要的依據。
在當今的互聯網時代,可以借助交通大數據為交通模型提供核心數據[5],交通大數據來源于對各種車輛的GPS信息的采集,比如公交車、貨車、出租車、網約車和私家車,采集到的車輛GPS信息的數據格式種類繁多,其中蘊含著重要的交通信息,這些信息可以通過數據分析和挖掘得到。近年國外發展了智能交通系統與數字道路交互式可視化與評價網絡(DRIVE Net)等[6,7],目前國內的交通信息服務系統種類繁多,具有代表性的有百度地圖導航和高德地圖導航等,但仍然需要大力發展基于大數據分析的新型交通信息服務系統。
本文構建了基于Web的交通車速區間位置查詢系統,通過設置經緯度的精確度和查詢條件,從交通GPS大數據中查找到在設定的車速區間范圍內的車輛運行的具體位置(經緯度),然后在經緯度的精確度范圍內進行統計,并在地圖中標定,可為道路建設規劃與改造提供重要的依據。
1 ?車速區間位置查詢系統的需求分析與架構
1.1 ?車速區間位置查詢系統構需求分析
交通車速區間位置查詢系統多層次數據流如圖1所示。
1.1.1 ?普通用戶
普通用戶的功能主要包括注冊、登錄和利用GPS數據進行車速區間位置的查詢等。
1.1.2 ?系統管理員
系統管理員的功能主要包括GPS數據庫的管理和普通用戶的審核與刪除等。
1.2 ?系統架構
該系統的架構采用Web的Browser/Server(即瀏覽器/服務器)結構,包括表示層、業務層和數據層。其中表示層主要是實現用戶與業務層之間的所有交互和邏輯功能;業務層的功能是接收表示層的請求,并向表示層返回結果;數據層的功能主要是系統數據的保存,該數據包括GSP數據和相關的用戶數據等,并為業務層提供所需要的數據。
2 ?系統設計
2.1 ?系統結構
交通車速區間位置查詢系統主要模塊構成如圖2所示。
2.2 ?數據庫結構
采用Microsoft SQL Server2008構建數據庫BigDataGps_DB,為了儲存大數據中對本系統有用的信息,本文建站數據表dbo.GPS,其屬性如圖3(a)所示。用戶信息數據表的屬性如圖3(b)所示。主要數據表之間的關系E-R圖如圖4所示。
3 ?系統實現
3.1 ?實現工具與技術
車速區間位置查詢系統采用了ASP.NET技術,并借助了百度地圖JavaScript API,通過C#、JavaScript和T-SQL等編程語言實現,其中應用了AJAX技術和ADO.NET技術。
系統開發平臺:Microsoft Visual Studio2010;數據庫管理系統:Microsoft SQL Server2008;運行平臺:Windows XP/Windows10/Windows Server 2003;運行環境:Micro-soft.NET Framework SDK4.0。
3.2 ?車速定位數據
3.2.1 ?交通大數據的整理
首先選擇所需要的交通大數據文件HfGps.CSV,導入數據庫BigDataGps_DB中,并轉換數據格式得到數據表dbo.HFGps(包含362706條記錄),從而獲得原始交通大數據信息。為了獲得大數據中對本系統有用的信息,從數據表dbo.HFGps中選取字段(經度、緯度和車速)的數據插入數據表dbo.GPS中,從而可以根據需要對數據表dbo.GPS進行任意操作,不會破壞原始交通大數據信息。
3.2.2 ?十進制經緯度坐標的精確度
經緯度可以表示地球上任何一個固定的點,通過GPS可以獲得具體位置的十進制坐標表示的經緯度,十進制經緯度坐標小數點后位數的精確度用式(1)進行計算,其中L為位置的精度范圍(弧長);R為地球半徑,設為6400KM。
從式(1)中可以得知,十進制經緯度坐標小數點后第3位的精度范圍設為L=100M。當N≈0.0001時,可以得知十進制經緯度小數點后第4位的精度范圍為L=10M。本研究對十進制經緯度坐標進行四舍五入,分別保留3或4位小數(即定位精度設定為100M或10M),然后進行比較實驗。
3.2.3 ?定位數據的獲得
在數據庫BigDataGps_DB中創建存儲過程,把經緯度范圍(左上角經緯度與右下角經緯度)、車速區間(車速下限、車速上限)和車輛數量下限作為參數傳遞給該存儲過程,采用ADO.NET技術執行該存儲過程,并以DataTable的形式獲取GPS數據。儲存過程的應用能在變更數據庫架構時顯著降低中斷應用程序的可能性,可減小SQL注入性攻擊的可能性[8]。
在存儲過程SearchGps中創建表變量DECLARE@Gps TABLE(LONGITUDE NUMERIC(9,6),LATITUDE NUMERIC(9,6)),然后從數據表dbo.GPS中選取符合搜索條件(經緯度范圍、車速區間)的數據插入表變量@Gps中,這時可以對表變量@Gps進行任意操作。首先對表變量@Gps中的經度和緯度字段的數據采用四舍五入的方式在小數點后保留3或4位有效數字,并進行更新,然后對表變量@Gps中的經度和緯度字段進行group by查詢結果分組,配合聚合函數count(*)進行分組記錄數的計算,然后利用having子句進行篩選分組記錄數大于等于車輛數量下限的分組,得到的結果中包括經緯度(小數點后保留3或4位有效數字)和在該經緯度的車速區間范圍內的且大于等于車輛數量下限的車輛數量。
3.3 ?車速區間位置查詢頁面的實現
車速區間位置查詢頁面的實現采用了母板和用戶控件,并使用了百度地圖JavaScript API和AJAX技術。在整個網站中使用母板頁,可增強頁面的整體效果且修改方便[9],Ajax技術的應用讓局部刷新頁面成為可能,能產生高度交互和動態的Web頁面[10]。
3.3.1 ?電子地圖初步定位
首先利用百度地圖JavaScript API創建Map實例,從而在車速區間位置查詢頁面中顯示百度地圖。由于本文獲得的GPS交通大數據只能覆蓋一個小區域,所以首先需要在百度地圖中查找定位這個區域,車速區間位置查詢頁面采用了兩種基于百度地圖JavaScript API的查找定位方法,第一種是輸入具體地址,然后采用方法BMap.LocalSearch()進行查找定位,第二種是輸入具體的經緯度,并把該經緯度設置為地圖的中心點坐標。
3.3.2 ?查詢經緯度范圍的獲取
電子地圖初步定位,并找到需要查詢的區域。獲取地圖可視區域的緯度范圍,并實時顯示地圖可視區域緯度范圍(左上端點和右下端點)的經緯度。把地圖可視區域左上端點和右下端點經緯度保存在4個服務器控件隱藏域HiddenField中,該控件可用于頁面前臺JavaScript與后臺C#之間的數據傳遞。
3.3.3 ?車速區間位置查詢與顯示
設置1個服務器控件TextBox,用于用戶輸入十進制經緯度坐標小數點后要保留的位數,設置3個服務器控件TextBox,用于用戶輸入查詢條件(車速下限、車速上限和車輛數量下限),設置服務器控件Button用于觸發回傳,把十進制經緯度坐標小數點后要保留的位數和查詢條件(經緯度范圍、車速區間和車輛數量下限)回傳至服務器,并執行存儲過程SearchGps獲取GPS數據,獲取的GPS數據為數據表DataTablegpstable,在后臺把數據表gpstable中的字段(經度LONGITUDE、緯度LATITUDE和車輛數量num)的數據以逗號為分隔符分別拼接成3個字符串(經度字符串LngString、緯度字符串LatString和車輛數量字符串NumString),然后分別賦給3個服務器控件HiddenField保存,目的是方便前臺JavaScript調用。前臺JavaScript通過調用2個服務器控件HiddenField得到字符串LngString和LatString,然后采用split()方法以逗號為分隔符把這2個字符串分別分割成2個字符串數組(經度字符串數組strLngArr[]、緯度字符串數組strLatArr[]),至此就得到了用于在地圖上進行顯示的十進制經緯度坐標。
利用百度地圖JavaScript API,根據經度字符串數組和緯度字符串數組中保存的數據,通過循環在地圖中創建紅色圖標標注,結果如圖5所示。在地圖右邊設置服務器控件GridView用來接收并顯數據表gpstable中的數據,并按車輛數量從大到小進行了排序,結果如圖5中地圖右邊的表格所示。
3.4 ?用戶模塊
用戶模塊包括用戶登錄和用戶注冊頁面,這兩個頁面都采用了用戶控件和母板技術,在母板的框架下設置服務器控件Login構建用戶登錄頁面,為防止惡意的登錄攻擊,在頁面中還設置了登錄驗證碼,如圖6(a)所示。用戶注冊頁面的構建也是通過在母板的框架下設置服務器控件LoginView來實現,如圖6(b)所示。
3.5 ?系統管理模塊
系統管理模塊包括用戶信息管理頁面和系統管理,用戶信息管理頁面如圖7所示,該頁面采用了用戶控件、母板、分頁顯示和AJAX技術。
在該頁面中設置服務器控件GridView接收并顯示用戶注冊信息,在服務器控件GridView中可刪除選定的用戶注冊信息,但不可修改。由于注冊的用戶可能會很多,所以采用了分頁顯示技術。
4 ?應用實驗與分析
打開車速區間位置查詢頁面,在地圖中找到要查詢的區域,并把地圖縮放到合適的大小,從而獲取查詢條件中的經緯度范圍(左上角經緯度與右下角經緯度)的數據。然后在該頁面輸入車速區間(車速下限、車速上限)和車輛數量下限進行查詢實驗。
為了分析和比較各種查詢條件的查詢結果,查詢條件的設置如表1所示。
由于查詢條件中車速下限和車速上限都設為0,所以查詢結果中會包含堵車的位置,但查詢條件中車輛數量下限設為1000輛,則會過濾掉輕微堵車的位置,但過濾不掉嚴重堵車的位置。由于經緯度精確到小數點后的位數設為4位比設為3位更能精準地進行位置標定,查詢條件1的查詢結果如圖8(a)所示,可以為大多數車輛停車的位置和嚴重堵車的位置提供參考。因為擁堵與緩行是相伴發生的,只要查詢緩行的位置就能得到擁堵的位置,為了不包含停車的位置,把查詢條件的速度區間設為[1,10]。經緯度精確到小數點后的位數設為3位比設為4位和車輛數量下限設1000比設為100更能獲得長期緩行的位置,并過濾掉隨機緩行的位置。查詢條件7的查詢結果如圖8(b)所示。為查詢高速行駛的車輛,速度區間設為[101,200],車輛數量下限均設為1次。通過比較得出車輛數量少的情況下,經緯度精確到小數點后4位更能精準地標定所處位置,查詢條件12查詢結果如圖8(c)所示。
5 ?討論與分析
首先要從雜亂無章的交通大數據中選取所需要的數據,然后插入事先設置好的表格中,本文通過人工操作數據庫管理系統(Microsoft SQL Server2008)來完成,并沒有開發實現這樣功能的用戶端,這將成為以后的工作任務。
本系統通過設置十進制經緯度坐標精確到小數點后的位數和查詢條件(經緯度范圍、車速區間和車輛數量下限),通過設置不同的查詢條件組合可得到不同的查詢結果。十進制經緯度坐標采用四舍五入的方式保留3位小數,可統計以標注位置為中心的長寬為100M的正方形區域的車輛情況,十進制經緯度坐標保留4位小數,可統計以標注位置為中心的長寬為10M的正方形區域的車輛情況。從應用實驗中可以看到,當符合查詢條件的車輛數量比較少時,精確到小數點后的4位比精確到小數點后3位更能在地圖上精準地標定位置,當符合查詢條件的車輛數量比較多時,則精確到小數點后的3位更合適。
6 ?結 ?論
本研究采用Asp.net技術,構建基于Web的交通車速區間位置查詢系統,交通大數據通過整理后儲存在后臺服務器數據庫中,為統一修改更新GPS數據提供方便。車速區間位置查詢頁面提供十進制經緯度坐標精確到小數點后的位數和查詢條件(經緯度范圍、車速區間和車輛數量下限)的設置,不同的設置組合可獲得不同的查詢結果,并能在百度地圖上直觀地顯示出來,該系統能為道路建設、規劃和改造提供重要的依據。
參考文獻:
[1] 丁俊發.改革開放40年中國物流業發展與展望 [J].中國流通經濟,2018,32(4):3-17.
[2] 劉民權.全球化中的中國中小企業:交通基礎設施的作用 [J].金融研究,2018(4):121-137.
[3] 趙福全,劉斐齊,劉宗巍,等.中國汽車產業低碳化評價指標體系研究 [J].中國工程科學,2018,20(1):104-112.
[4] 喬英俊,紀雪洪.發展共享汽車推動汽車強國建設 [J].中國工程科學,2018,20(1):120-126.
[5] 張天然.大數據背景下的交通模型發展思考 [J].城市交通,2016,14(2):22-28.
[6] Leung H,Faouzi N E E, Kurian A. Intelligent transportation system (ITS)[J]. Information Fusion,2011,12(1):2-3.
[7] Cui Z ,Zhang S ,Henrickson K C ,et al. New progress of drivenet:an e-science transportation platform for data sharing,visualization, modeling,and analysis [C]// Smart Cities Conference. IEEE,2016.
[8] [美]特羅爾森.C# NET3.5高級程序設計(第4版) [M].北京:人民郵電出版社,2009:580-682.
[9] [美]麥克唐納,茲普茲塔.ASP.NET3.5高級程序設計(第2版) [M].北京:人民郵電出版社,2008:528-571.
[10] [美]尼爾森.Server2008寶典 [M].北京:清華大學出版社,2011:459-515.
作者簡介:艾虎(1974-),男,漢族,江西弋陽人,副教授,博士,研究方向:信息技術、大數據。