吳景春 劉志杰 喻國軍 朱洪巖
(貴州師范大學(xué)貴州省信息與計(jì)算科學(xué)重點(diǎn)實(shí)驗(yàn)室, 貴陽 550001)
?
基于ArcGis Server的高速公路數(shù)據(jù)校驗(yàn)系統(tǒng)設(shè)計(jì)與研究
吳景春劉志杰喻國軍朱洪巖
(貴州師范大學(xué)貴州省信息與計(jì)算科學(xué)重點(diǎn)實(shí)驗(yàn)室, 貴陽 550001)
摘要:介紹了ArcGis Server的體系結(jié)構(gòu)和開發(fā)方法,系統(tǒng)實(shí)現(xiàn)了地圖圖層的控制與顯示、路徑和費(fèi)額查詢與校對、歷史行進(jìn)道路的回放、空間數(shù)據(jù)的查詢、最短路徑和最小收費(fèi)額顯示等關(guān)鍵模塊。為優(yōu)化路況、提高公路通行率、減少人為干預(yù)、降低人工成本提供了技術(shù)支撐,并以貴州省高速公路為實(shí)際應(yīng)用背景展示了整個(gè)系統(tǒng)的功能。
關(guān)鍵詞:ArcGis Server; 高速公路數(shù)據(jù)校驗(yàn); 路徑和費(fèi)額查詢與校對; 車輛管理與查詢
在過去快速發(fā)展的20 a里,我國高速公路的客運(yùn)系統(tǒng)已逐漸完善,高速公路已經(jīng)成為各省市(州)間的重要交通樞紐。但是由于客運(yùn)企業(yè)數(shù)量增長過快和管理經(jīng)驗(yàn)短板的存在,常導(dǎo)致高速公路數(shù)據(jù)管理過程中人工錄入錯(cuò)誤及運(yùn)維成本增加等問題。高速公路數(shù)據(jù)校驗(yàn)系統(tǒng)是優(yōu)化路況、提高公路通行率、降低人為干預(yù)和人工成本的重要手段,可為高速公路客運(yùn)發(fā)展提供決策依據(jù)。目前該系統(tǒng)已在國內(nèi)一些省份的高速公路管理局投入使用,為用戶與各個(gè)高速公路段的所屬業(yè)主提供方便與便利,提高了社會(huì)智能與信息化的建設(shè)步伐。本次研究以開發(fā)具有實(shí)用和推廣意義的數(shù)據(jù)校驗(yàn)系統(tǒng)為例,闡述基于ArcGis和C#的開發(fā)平臺(tái),如何更可靠并有效地實(shí)現(xiàn)系統(tǒng)[1]。
1基于.net和ArcGis Server的開發(fā)原理
Visual studio .net 是微軟公司推出的一款以.net Framework類庫為基礎(chǔ)的功能完善的開發(fā)工具,方便用戶開發(fā)各種應(yīng)用程序。其中,包含基本的圖形用戶界面程序和命令行程序,也包含基于asp .net所提供的web 窗體和XML Web services[2-3]。該類庫可用于不同的開發(fā)語言,所有這些語言都可以訪問 .net Framework,它們還可以彼此交互。此外其豐富的代碼庫和組件技術(shù),減少了開發(fā)人員的工作量,便于進(jìn)行系統(tǒng)部署、設(shè)計(jì)和后期維護(hù)。
基于ArcGis Server 的高速公路系統(tǒng)所用到的面向?qū)ο箝_發(fā)語言是C#,asp.net。在ArcGis Server中發(fā)布的資源是通過桌面產(chǎn)品進(jìn)行創(chuàng)建和準(zhǔn)備的。當(dāng)在Gis服務(wù)器上將一個(gè)Gis資源發(fā)布為服務(wù)時(shí),可以指定該服務(wù)包含的功能[4-6]。功能即客戶使用該服務(wù)的方法,例如地圖服務(wù)最基本的功能就是繪制地圖。其中,關(guān)系型數(shù)據(jù)庫使用的是Oracle,通過ArcGis的空間數(shù)據(jù)引擎ArcSDE把Oracle中的表數(shù)據(jù)轉(zhuǎn)換成空間數(shù)據(jù)來管理與共享,與通用數(shù)據(jù)不同的是空間數(shù)據(jù)借助于圖形圖像來表現(xiàn)。用戶在瀏覽器端發(fā)送請求,服務(wù)器端接收請求,并根據(jù)相應(yīng)的算法程序進(jìn)行處理分析,然后將可視化結(jié)果返回給瀏覽器端,使得用戶可以方便地看到該功能所對應(yīng)的效果。
2系統(tǒng)分析與設(shè)計(jì)
以高速公路車輛行駛時(shí)的狀態(tài)為研究對象,并依托ArcGis Server 為綜合平臺(tái),構(gòu)建一個(gè)運(yùn)行在標(biāo)準(zhǔn)的.net Web服務(wù)器中的基于BS架構(gòu)的高速公路數(shù)據(jù)校驗(yàn)系統(tǒng),能提高高速公路數(shù)據(jù)管理的效率。
2.1系統(tǒng)基本架構(gòu)
按照現(xiàn)有的經(jīng)典設(shè)計(jì)模式和高內(nèi)聚低耦合原則,將高速公路系統(tǒng)分為表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)層3層。其中表示層位于3層體系結(jié)構(gòu)中的最上層,由一些asp頁面、ArcGis Server 組件等組成,負(fù)責(zé)直接與用戶交互,但不實(shí)現(xiàn)具體功能,僅將用戶的請求傳送給業(yè)務(wù)邏輯層或者接收業(yè)務(wù)邏輯層處理,并將結(jié)果數(shù)據(jù)以可視化的方式呈現(xiàn)給用戶。業(yè)務(wù)邏輯層包含Web 服務(wù)器和Gis服務(wù)器2部分。其中:IIS是Web服務(wù)器,也是Gis服務(wù)器發(fā)布地圖和服務(wù)的容器,還能實(shí)現(xiàn)非空間數(shù)據(jù)的邏輯運(yùn)算;ArcGis Server是Gis服務(wù)器,實(shí)現(xiàn)地圖服務(wù)的發(fā)布與管理,還包含與地圖交互等相關(guān)操作,實(shí)現(xiàn)空間數(shù)據(jù)的邏輯運(yùn)算。數(shù)據(jù)層包括地圖信息等空間數(shù)據(jù)和一些基本的屬性數(shù)據(jù),如車輛和道路信息等。另外還可通過Esri ArcSde空間數(shù)據(jù)引擎對空間數(shù)據(jù)進(jìn)行高性能的管理和高效率的操作。該系統(tǒng)結(jié)構(gòu)清晰,層次分明,有利于各層之間邏輯的復(fù)用,減少層與層之間的依賴性。在軟件后期進(jìn)行維護(hù)時(shí),可以有效地降低開發(fā)人員的維護(hù)時(shí)間與成本,提高了軟件的可擴(kuò)展性。其基本架構(gòu)如圖1 所示。
圖1 高速公路系統(tǒng)基本架構(gòu)
2.2系統(tǒng)功能設(shè)計(jì)
此高速公路系統(tǒng)包含的主要設(shè)計(jì)功能有地圖的顯示及基本操作、查詢分析、數(shù)據(jù)校對、數(shù)據(jù)編輯、空間分析等,能提供多角度、多層次的信息采集,為用戶及高速公路管理者提供決策及管理依據(jù)。
(1)地圖操作:用戶可以自由選擇全景地圖和分層地圖,并帶有導(dǎo)航和鷹眼功能,還可以對地圖進(jìn)行放縮、平移等操作,能夠看到地圖內(nèi)部更具體的地物信息。
(2)查詢分析:包含地圖信息查詢、車輛信息查詢、模糊查詢等,可用鼠標(biāo)點(diǎn)選地圖上的地物,以得到更精確的信息。
(3)數(shù)據(jù)校對(業(yè)主有此功能):包含任意2個(gè)收費(fèi)站之間的最短路徑或最小費(fèi)額路徑,羅列該路徑所經(jīng)過的各個(gè)路段名稱、路段長度、基礎(chǔ)費(fèi)率、業(yè)主名稱、路段類型等。由于高速公路業(yè)主下轄各自的高速路段,所以收取費(fèi)用時(shí)需按照一定的標(biāo)準(zhǔn)進(jìn)行拆分,并對數(shù)據(jù)進(jìn)行校對,以防出現(xiàn)差錯(cuò)。
(4)數(shù)據(jù)編輯(管理員有此功能):管理員可以對系統(tǒng)數(shù)據(jù)進(jìn)行修改,包含對地圖數(shù)據(jù)的修改,增加刪除地圖圖層,增加修改地物信息等。
(5)空間分析:空間分析是地理信息系統(tǒng)的關(guān)鍵功能。系統(tǒng)實(shí)現(xiàn)了歷史行進(jìn)軌跡查詢、路徑分析(最短路徑和最小費(fèi)額路徑)與顯示、服務(wù)設(shè)施查詢、里程測量等功能。
3高速公路系統(tǒng)中的關(guān)鍵技術(shù)
3.1電子地圖顯示
在ArcGis系統(tǒng)開發(fā)過程中,電子地圖顯示功能是實(shí)現(xiàn)其他功能的基礎(chǔ)。在ArcGis Server中的地圖服務(wù)是作為資源提供給Gis服務(wù)器的。要使用Esri 公司提供的控件,必須在需要顯示地圖的頁面頂部添加注冊信息,然后便可以在該引用頁面內(nèi)使用控件。在aspx頁面中使用
3.2電子地圖基本操作
為了能夠更加方便、精確地找到所需要的地圖信息,需對地圖進(jìn)行一系列操作,包括對地圖進(jìn)行放大、縮小、漫游、測距、鷹眼、圖層控制等。ArcGis Server提供了大量控件,開發(fā)者只要引用這些控件,并在此基礎(chǔ)上進(jìn)行適當(dāng)修改,便可實(shí)現(xiàn)相應(yīng)的功能。以地圖縮小為例:
3.3空間分析
空間分析功能是整個(gè)系統(tǒng)的核心功能,最短路徑和最小費(fèi)額路徑是2個(gè)高速公路收費(fèi)站之間可以通行的最短路徑和花費(fèi)最小的路徑。采用迪杰斯特拉(Dijkstra)算法進(jìn)行全路徑搜索,得到每個(gè)收費(fèi)站到其他收費(fèi)站的最短距離和最小費(fèi)額路徑,并用一系列代號(hào)數(shù)字進(jìn)行存儲(chǔ)。用戶任意選擇2個(gè)收費(fèi)站,系統(tǒng)便會(huì)更新地圖,在地圖上顯現(xiàn)出2個(gè)站點(diǎn)之間的最短路徑或最小費(fèi)額,供用戶自行選擇。下面的代碼實(shí)現(xiàn)了最小費(fèi)額的查詢。其中,BPoint 對應(yīng)初始站點(diǎn)坐標(biāo),EPoint對應(yīng)終點(diǎn)坐標(biāo)。實(shí)驗(yàn)步驟如下:
步驟1:通過函數(shù)傳參獲取ToolEventArgs對象,其包含了客戶端Map控件和當(dāng)前客戶端工具的信息。
步驟2:用ToolEventArgs的Control 屬性獲取地圖對象,然后得到用戶在地圖上畫的矩形框。
adfMap =ToolEventArgs.Control;
mapPointEventArgs =ToolEventArgs;
Envelope adfPoint = mapPointEventArgs.Map Extent;
Envelope pEEnv = new Envelope(adfPoint.XMax - 500, adfPoint.YMax - 500,adfPoint.XMax + 500, adfPoint.YMax + 500);
pGeometry = pEEnv as Geometry。
步驟3:將矩形框?qū)ο?、地圖對象、地圖資源對象、圖層對象和每個(gè)站點(diǎn)對應(yīng)坐標(biāo)對象作為參數(shù)傳入QueryName函數(shù),得到用戶所選站點(diǎn)對應(yīng)的坐標(biāo)。
String BorePoint = QueryName(pGeometry, adfMap, "MapResourceItem0", "SDE.node1", "NODE_CODE")。
步驟4:用戶選擇初始站點(diǎn)和終點(diǎn)站點(diǎn)后,調(diào)用SelectFeature函數(shù)獲取最小費(fèi)額。
上述代碼中指定LessFreeTool實(shí)現(xiàn)IMapServerToolAction接口,是工具類所必須的。在IMapServerToolAction.ServerAction 方法中通過參數(shù)args得到用戶在地圖上拖動(dòng)矩形的屏幕坐標(biāo)范圍。由于Web ADF 沒有提供矩形從屏幕坐標(biāo)轉(zhuǎn)換為地圖坐標(biāo)的方法,因此上述代碼利用矩形對角的2個(gè)點(diǎn)分別轉(zhuǎn)換到地圖坐標(biāo),然后利用Envelope類的構(gòu)造函數(shù)構(gòu)造一個(gè)地圖坐標(biāo)的矩形對象,最后調(diào)用QueryName方法實(shí)現(xiàn)查詢。
步驟5:在SelectFeature方法中,從最小費(fèi)用表中提取數(shù)據(jù),執(zhí)行sql語句,將所查詢結(jié)果存儲(chǔ)在數(shù)據(jù)集DS中,代碼如下:
string sql = string.Format("select path from t_shortest_new where node_b_code='{0}' and node_e_code='{1}' and auto_type=1", oMap.Page.Session["BPoint"], oMap.Page.Session["EPoint"]); System.Data.DataSet ds = DbHelperOra.Query(sql)。
在該系統(tǒng)中每個(gè)站點(diǎn)在Oracle數(shù)據(jù)庫中都是用8位數(shù)字代號(hào)表示,所經(jīng)過的路徑也是以一系列數(shù)字作為表現(xiàn)方式,然后通過每8位數(shù)字進(jìn)行截取解析得到相應(yīng)的結(jié)果。
步驟6:把用戶查詢結(jié)果在地圖上進(jìn)行繪制:
geom = (Esri.ArcGis.ADF.Web.Geometry.Geometry)dt.Rows[ii][myGeometryIndex];
myGraphicsElement = new Esri.ArcGis.ADF.Web.Display.Graphics.GraphicElement(geom, System.Drawing.Color.Yellow);
myGraphicsElement.Symbol.Transparency = 50.0。
該功能可視化效果見圖2,虛線代表站點(diǎn)間的最小費(fèi)額路徑,實(shí)線代表最短距離的路徑;具體計(jì)算結(jié)果見表1。
圖2 團(tuán)澤站到平正站的最短路徑和最小費(fèi)額優(yōu)化路徑圖
類型路徑長度∕m收費(fèi)金額∕元最短路徑84146.4652.06最小收費(fèi)額86961.2551.25
3.4數(shù)據(jù)校驗(yàn)
目前各省、地區(qū)大部分高速公路都是利用多元化的投資進(jìn)行建設(shè),收費(fèi)權(quán)也歸屬不同的業(yè)主。如何使不同路段的業(yè)主建立信任、做到公平的拆分是聯(lián)網(wǎng)收費(fèi)順利推進(jìn)的關(guān)鍵。由于貴州省地區(qū)特色及高速公路建設(shè)情況,一方面,各個(gè)高速公路段的業(yè)主很多,另一方面每天在高速公路上通行的車輛非常多,這為業(yè)主拆分每天的收費(fèi)額帶來了巨大的不便。稍有不慎就會(huì)出現(xiàn)差錯(cuò),損失業(yè)主利益。為此該系統(tǒng)提供了數(shù)據(jù)校驗(yàn)功能,羅列該路徑所經(jīng)過的各個(gè)路段名稱,路段長度,基礎(chǔ)費(fèi)率,業(yè)主名稱,路段類型等,供業(yè)主核對信息。
3.5車輛軌跡回放
系統(tǒng)自動(dòng)將每天行駛的車輛信息存入數(shù)據(jù)庫的相應(yīng)表中,存儲(chǔ)時(shí)間為半年。要進(jìn)行車輛軌跡的回放,用戶可根據(jù)車牌號(hào)和回放時(shí)間到數(shù)據(jù)庫中查詢;然后根據(jù)數(shù)據(jù)庫的歷史記錄,調(diào)用車輛顯示模塊,在地圖上繪制行駛軌跡。
4系統(tǒng)的測試優(yōu)化及部署
一個(gè)開發(fā)程序通常都需要不斷地優(yōu)化與完善。該系統(tǒng)借助vs提供的調(diào)試平臺(tái)進(jìn)行優(yōu)化與測試。常見問題有語法錯(cuò)誤,語義錯(cuò)誤和運(yùn)行時(shí)錯(cuò)誤。運(yùn)行時(shí)錯(cuò)誤是指在程序運(yùn)行時(shí)出錯(cuò),比如檢查數(shù)組越界,函數(shù)庫版本不一致等。出錯(cuò)原因需要具體問題具體分析。該系統(tǒng)的開發(fā)先采取單元測試進(jìn)行模塊化分析,然后達(dá)到語句全覆蓋,再進(jìn)行集成測試與系統(tǒng)測試以確保開發(fā)的程序滿足設(shè)計(jì)需求。
在測試完整無誤后,將程序部署到大型服務(wù)器上,安裝.net程序所需的運(yùn)行環(huán)境和.net Framework、ArcGis Server等。在.net平臺(tái)下將程序部署到IIS web服務(wù)器上,這樣用戶就可在任意一臺(tái)聯(lián)網(wǎng)的電腦上使用瀏覽器端訪問該程序,提高軟件的易用性。
5結(jié)語
基于ArcGis Server、ArcSDE、vs.net、asp.net、Oracle等構(gòu)建了能對高速公路信息進(jìn)行空間分析、查詢分析、數(shù)據(jù)校對等功能的信息系統(tǒng)。共設(shè)計(jì)了3種角色,可根據(jù)不同的用戶需求劃分相應(yīng)的系統(tǒng)模塊,達(dá)到配置靈活,分工明確的目的。利用BS結(jié)構(gòu)簡易方便的優(yōu)勢,增加了信息數(shù)據(jù)的共享性,為用戶選擇路線及行進(jìn)方向等提供決策依據(jù)。目前該系統(tǒng)在貴州省高速公路管理局運(yùn)行良好,取得了良好的社會(huì)效應(yīng)。
參考文獻(xiàn)
[1] 黎華,王重華,張勇.基于J2EE和ArcGis平臺(tái)的WebGis設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2006(6):966-969.
[2] 劉光,唐大仕.Web Gis開發(fā)——ArcGis Server與.net[M].北京:清華大學(xué)出版,2010:11-25.
[3] 李貞培,李平,吳明.基于ArcGis Engine和ArcGis Server的數(shù)字管道系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(3):638-642.
[4] 趙軍,王群.基于ArcGis Server的綜合管線信息發(fā)布平臺(tái)[J].計(jì)算機(jī)應(yīng)用,2009(增刊2):138-140.
[5] 董永峰,郭志濤,谷強(qiáng),等.基于ArcGis Server的公交車輛監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2012(5):95-98.
[6] 李春立,曾志遠(yuǎn),徐學(xué)軍.基于ArcGis Engine的車輛監(jiān)控系統(tǒng)[J].計(jì)算機(jī)工程,2006,32(24):257-259.
Research on the Design of Highway Data Validation System Based on ArcGis Server
WUJingchunLIUZhijieYUGuojunZHUHongyan
(Key Laboratory of Information and Computing Science of Guizhou Province,Guizhou Normal University, Guiyang 550001, China)
Abstract:This paper introduces the structure and development methods of the ArcGis Server system, which systematically realized the control and display of the map layer, path and expense proofreading and query, playback of historical track, spatial data query, displaying the shortest path and the minimum charge and other key functions. The system also provides some important methods to optimize the road, increase the rate of road traffic, reduce the human intervention and labor cost. In the application background of Guizhou highway shows the function of the whole system.
Key words:ArcGis Server; highway data validation; proofread and query of the path and charge; vehicle management and query
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1673-1980(2016)01-0077-05
中圖分類號(hào):TP393
作者簡介:吳景春(1990 — ),男,在讀碩士研究生,研究方向?yàn)榈乩硇畔⑾到y(tǒng)及軟件工程。
基金項(xiàng)目:貴州省科學(xué)技術(shù)基金項(xiàng)目(200917);貴州省基礎(chǔ)研究重大項(xiàng)目“大數(shù)據(jù)聚合機(jī)制及分析與交易機(jī)理研究”(黔科合JZ字[2014]2001號(hào));貴陽市科技局重點(diǎn)項(xiàng)目(2010183)
收稿日期:2015-09-18