吳 勇, 曹 林, 代后建
(1.浙江師范大學(xué)地理與環(huán)境科學(xué)學(xué)院,浙江金華 321004;2.安徽通途信息技術(shù)有限公司,安徽合肥230088)
隨著社會(huì)經(jīng)濟(jì)的快速發(fā)展和城市現(xiàn)代化水平的不斷提高,突發(fā)災(zāi)害事件對(duì)城市功能正常發(fā)揮的影響程度和波及范圍也越來(lái)越大.因此,建立應(yīng)急指揮系統(tǒng),增強(qiáng)城市應(yīng)急反應(yīng)和防災(zāi)減災(zāi)能力,以最大限度減少人為事故或自然災(zāi)害事件對(duì)城市發(fā)展秩序和市民正常生活的不利影響是一件非常有意義的工作.而在交通系統(tǒng)日趨復(fù)雜、瞬息萬(wàn)變的今天,單憑人的經(jīng)驗(yàn)和現(xiàn)有手段已經(jīng)不能夠解決復(fù)雜的城市交通應(yīng)急問(wèn)題,需要依靠高效的信息化工具、手段和方法來(lái)輔助人們進(jìn)行應(yīng)急指揮決策.交通應(yīng)急指揮系統(tǒng)能夠把各種信息集成起來(lái),迅速傳遞到一個(gè)指揮中心,并能夠輔助相關(guān)人員進(jìn)行科學(xué)的決策,進(jìn)行聯(lián)動(dòng)處置[1-3].這個(gè)系統(tǒng)為政府實(shí)現(xiàn)決策的科學(xué)化提供了一個(gè)非常好的手段,對(duì)于改善和提高城市的管理水平將會(huì)起到很大的作用.
地理信息系統(tǒng)(GIS)作為一種決策支持系統(tǒng),經(jīng)過(guò)幾十年的發(fā)展已經(jīng)從理論研究走向行業(yè)應(yīng)用[4-6].與其他信息系統(tǒng)相比,它以直觀的方式在地圖上顯示數(shù)據(jù),同時(shí)提供強(qiáng)大的空間分析功能,更加有利于從空間關(guān)系、空間分布中發(fā)現(xiàn)隱含的信息,為決策提供有力支撐[7-9].在綜合應(yīng)急指揮決策體系中,一個(gè)非常重要的理念是能夠讓指揮員針對(duì)當(dāng)前的形勢(shì)快速做出正確的決策,這就需要兩方面的重要支持:其一是要能夠?qū)崟r(shí)了解前線的信息;其二是要有相應(yīng)的輔助工具來(lái)支持領(lǐng)導(dǎo)的決策.而這兩方面都離不了GIS.
ArcGIS Server是一個(gè)發(fā)布企業(yè)級(jí)GIS應(yīng)用程序的綜合平臺(tái),它提供了創(chuàng)建和配置GIS應(yīng)用程序和服務(wù)的框架,可以滿足各種客戶端的各種需求.ArcGIS Server本身對(duì)外提供的編程方式很多.本文首先利用ArcGIS提供的Geoprocessing制作成具體應(yīng)用模型,借助ArcGIS Server平臺(tái)對(duì)外發(fā)布,進(jìn)而在客戶端通過(guò)ArcServer for FLEX API進(jìn)行調(diào)用.
FLEX是可以在企業(yè)內(nèi)部或在Web上創(chuàng)建并交付豐富Internet應(yīng)用程序(RIA),堪稱(chēng)最完整、最強(qiáng)大的RIA開(kāi)發(fā)解決方案.它使企業(yè)能夠創(chuàng)建個(gè)性化的豐富多媒體應(yīng)用程序,極大地提高用戶的體驗(yàn),徹底革新人與Web的交互關(guān)系.FLEX是Adobe公司最新的服務(wù)器端產(chǎn)品,該技術(shù)提供了一個(gè)新的、基于標(biāo)準(zhǔn)的語(yǔ)言和編程模型,其編程模型支持常用的設(shè)計(jì)模式,能夠使企業(yè)創(chuàng)建許多有吸引力的、交互的快速應(yīng)用,這些應(yīng)用會(huì)戲劇性地增強(qiáng)用戶的體驗(yàn)、客戶的滿意度和用戶的工作效率.
FLEX對(duì)矢量地圖的支持及豐富的用戶體驗(yàn)效果,使得利用FLEX建立美觀的互聯(lián)網(wǎng)地圖應(yīng)用程序成為可能.2008年4月,美國(guó)環(huán)境系統(tǒng)研究所(ESRI)率先推出的ArcServer for FLEX API是進(jìn)行RIA開(kāi)發(fā)的FLEX庫(kù),基于該套API建立的WebGIS應(yīng)用運(yùn)行速度快,比傳統(tǒng)的基于網(wǎng)頁(yè)的WebGIS具有更好的用戶體驗(yàn).使用ArcServer for FLEX API可以達(dá)到下面的效果:
1)顯示地圖數(shù)據(jù)并可以和數(shù)據(jù)交互;
2)在服務(wù)器上執(zhí)行空間處理模型并顯示結(jié)果;
3)基于ArcGIS Online上的底圖顯示自己的數(shù)據(jù);
4)根據(jù)屬性或者位置查找數(shù)據(jù)并顯示結(jié)果;
5)查找地址并顯示結(jié)果;
6)用創(chuàng)新的方式可視化結(jié)果.
基于GIS的綜合應(yīng)急指揮決策系統(tǒng)以地理空間數(shù)據(jù)庫(kù)為基礎(chǔ),結(jié)合ArcGIS桌面制作各種模型通過(guò)服務(wù)器發(fā)布,在ArcServer平臺(tái)之上提供各種功能單元,滿足交通應(yīng)急指揮系統(tǒng)中的各種業(yè)務(wù)需求,系統(tǒng)的整體架構(gòu)如圖1所示.
2.2.1 應(yīng)急報(bào)警
圖1 系統(tǒng)整體架構(gòu)圖
通過(guò)這個(gè)模塊,可以迅速了解當(dāng)前哪個(gè)位置發(fā)生了什么類(lèi)型的緊急事故,以及和事故相關(guān)的詳細(xì)信息.使用動(dòng)態(tài)分段技術(shù)可以定位路線上的某一特定點(diǎn),也可以定位某一特定路段,在ArcGIS中進(jìn)行動(dòng)態(tài)分段需要網(wǎng)絡(luò)數(shù)據(jù)集和動(dòng)態(tài)分段表的支撐.若定位點(diǎn),則分段表中只有路線編碼和樁號(hào)2個(gè)字段;若定位路段,則包含3個(gè)字段,即路線編碼、起點(diǎn)樁號(hào)和終點(diǎn)樁號(hào).在本系統(tǒng)中,需要進(jìn)行點(diǎn)的定位,因此分段表的字段是路線編碼和樁號(hào).具體應(yīng)用過(guò)程如下:
1)從彈出的窗口中用鼠標(biāo)點(diǎn)擊一下定位按鈕,觸發(fā)點(diǎn)擊事件,然后從地圖上顯示的高速公路、國(guó)省干線、縣鄉(xiāng)公路中通過(guò)鼠標(biāo)點(diǎn)擊路線,來(lái)選擇報(bào)警的路線,就可以得到該條路線的名稱(chēng),見(jiàn)圖2.
2)跳轉(zhuǎn)到詳細(xì)信息填寫(xiě)界面,在詳細(xì)信息界面中,填寫(xiě)事故點(diǎn)發(fā)生的位置樁號(hào),在地圖中確定其具體位置.
3)將查詢(xún)到的具體位置信息保存到詳細(xì)信息列表中,見(jiàn)圖3,通過(guò)點(diǎn)擊列表中的每條記錄,地圖以報(bào)警點(diǎn)進(jìn)行動(dòng)態(tài)移動(dòng),實(shí)現(xiàn)中心顯示.
圖2 樁號(hào)設(shè)置
圖3 列表顯示
2.2.2 救援查詢(xún)
本模塊實(shí)現(xiàn)了在事故點(diǎn)的緩沖范圍內(nèi)查詢(xún)救援物資和救援隊(duì)伍的功能.具體實(shí)現(xiàn)上使用了ArcGIS Server 9.3提供的Geometry Service和IdentifyTask技術(shù).
1)救援物資.可以查詢(xún)突發(fā)交通事故點(diǎn)周?chē)嗌賙m以?xún)?nèi)的救援物資的分布情況、種類(lèi)和數(shù)量等信息,可以通過(guò)點(diǎn)擊查詢(xún)的記錄將救援物資顯示在事故點(diǎn)的周?chē)?,?duì)事故救援提供保障,見(jiàn)圖4.
2)救援隊(duì)伍.可以查詢(xún)突發(fā)交通事故點(diǎn)周?chē)嗌賙m以?xún)?nèi)的救援隊(duì)伍的分布情況、人員數(shù)量、救援工具等信息.可以通過(guò)點(diǎn)擊查詢(xún)的記錄將救援隊(duì)伍顯示在事故點(diǎn)的周?chē)?,為事故救援提供保障?/p>
圖4 救援物資
圖5 疏散路徑分析
2.2.3 疏散路徑分析
通過(guò)在地圖上選擇路徑的起點(diǎn)(可多選)和路徑的終點(diǎn),然后點(diǎn)擊疏散路徑分析按鈕,返回一個(gè)列表,將所有查詢(xún)到的路徑列出來(lái).通過(guò)點(diǎn)擊列表中的各條記錄,可以在地圖上將路徑高亮顯示,見(jiàn)圖5.
該模塊借助ArcGIS網(wǎng)絡(luò)分析功能,完成高速路網(wǎng)中兩點(diǎn)間最短路徑分析,包括數(shù)據(jù)準(zhǔn)備、模型制作與發(fā)布、前臺(tái)調(diào)用.網(wǎng)絡(luò)數(shù)據(jù)集的制作與發(fā)布全部在ArcGIS平臺(tái)中完成,模型包含了復(fù)雜的分析過(guò)程,這也減輕了客戶端開(kāi)發(fā)的任務(wù).最后一步是前臺(tái)調(diào)用.前臺(tái)調(diào)用的邏輯主要包括3個(gè)部分,用戶設(shè)置起終點(diǎn)、調(diào)用模型、模型返回結(jié)果響應(yīng).按照調(diào)用的時(shí)間順序,結(jié)合程序代碼對(duì)前臺(tái)調(diào)用邏輯進(jìn)行如下詳細(xì)說(shuō)明.
用戶在點(diǎn)擊選擇工具時(shí)將觸發(fā)activateIdentifyTool()方法,代碼如下:
private function activateIdentifyTool():void{
var status:String="點(diǎn)擊標(biāo)注";
setMapAction(Draw.MAPPOINT,status,drawEnd);}
其中,status用作控制工具欄的狀態(tài),setMapAction方法中的參數(shù)drawEnd是一個(gè)回調(diào)函數(shù),用戶在圖上選擇起終點(diǎn)完畢后將觸發(fā)該方法.
private function drawEnd(event:DrawEvent):void{
if(p==0){
ruteGraphicsLayer.clear();
myGraphisLayer.clear();)
p=p+1;
var object:String=new String(p);
event.graphic.a(chǎn)ttributes=object;
event.graphic.symbol=ifs;
var graphic:Graphic=new Graphic(event.graphic.geometry);
plist.push(graphic);
myGraphicsLayer.a(chǎn)dd(event.graphic);//將選中的點(diǎn)顯示在地圖上 }
該方法的作用是將用戶選擇的點(diǎn)在地圖上顯示,并將兩點(diǎn)保存到數(shù)組plist中,plist將作為輸入?yún)?shù)被傳遞到模型中,它與模型中的Input Stops對(duì)應(yīng).參數(shù)準(zhǔn)備完畢后,開(kāi)始調(diào)用模型:
private function doShortestRoute():void{
if(plist.length==0){
Alert.show("請(qǐng)?jiān)诘貓D上選擇點(diǎn)!");}
else if(plist.length==1){
Alert.show("請(qǐng)?jiān)诘貓D上再選擇一個(gè)點(diǎn)!");}
else if(plist.length > 2){
clear();
plist=new Array();
Alert.show("只可以在地圖上選擇2個(gè)點(diǎn)進(jìn)行分析!");}
else{
CursorManager.setBusyCursor();
//設(shè)置Geoprocessing服務(wù)的輸入?yún)?shù)
var featureSet:FeatureSet=new FeatureSet(plist);
var params:Object={"Input_Stops":featureSet};
//進(jìn)行分析成功調(diào)用onResult方法,失敗調(diào)用onFault方法
gp.execute(params,new AsyncResponder(onResult,onFault));}
}
doShortestRoute()方法首先對(duì)參數(shù)設(shè)置情況進(jìn)行檢查,確保用戶已經(jīng)在地圖上選擇2個(gè)點(diǎn),然后設(shè)置光標(biāo)狀態(tài)為“忙碌”,對(duì)模型進(jìn)行異步調(diào)用,并設(shè)置了對(duì)調(diào)用結(jié)果的回調(diào)函數(shù).當(dāng)調(diào)用成功返回結(jié)果時(shí),通過(guò)調(diào)用on-Result()方法,在地圖上顯示最短路徑.
2.2.4 在線資源調(diào)度
該功能主要實(shí)現(xiàn)對(duì)移動(dòng)設(shè)備的監(jiān)控,將移動(dòng)設(shè)備(車(chē)輛)在公路上的運(yùn)行情況直觀地反映到電子地圖上,設(shè)備的位置信息流向如圖6所示.通過(guò)安裝在救援車(chē)輛上的GPS定位設(shè)備,向中轉(zhuǎn)服務(wù)器發(fā)送數(shù)據(jù),中轉(zhuǎn)服務(wù)器可以將數(shù)據(jù)保存在數(shù)據(jù)庫(kù)中,方便以后進(jìn)行歷史軌跡回放和信息的瀏覽,同時(shí)將數(shù)據(jù)轉(zhuǎn)發(fā)Web頁(yè)面,在地圖上實(shí)時(shí)展示,方便領(lǐng)導(dǎo)及時(shí)了解當(dāng)前救援隊(duì)伍的前進(jìn)情況.
為接收從移動(dòng)設(shè)備上發(fā)送的GPS數(shù)據(jù),需要建立單獨(dú)的服務(wù)器,該服務(wù)器接收GPS數(shù)據(jù)后進(jìn)行重新的解析、封裝,封裝得到的數(shù)據(jù)格式如表1所示:
圖6 在線資源調(diào)度
表1 服務(wù)器接收并封裝的數(shù)據(jù)格式
數(shù)據(jù)解析完成后保存到數(shù)據(jù)庫(kù)中,同時(shí)通過(guò)ServerSocket向Web前臺(tái)發(fā)送數(shù)據(jù),ServerSocket用于服務(wù)器端,Socket是建立網(wǎng)絡(luò)連接時(shí)使用的.在連接成功時(shí),應(yīng)用程序兩端都會(huì)產(chǎn)生一個(gè)Socket實(shí)例,操作這個(gè)實(shí)例,完成所需的會(huì)話.在本系統(tǒng)中,服務(wù)器和客戶端的會(huì)話內(nèi)容就是傳送移動(dòng)設(shè)備的位置信息.
服務(wù)器端的核心代碼如下:
public void sendData()
{
int PORT=8888;//偵聽(tīng)端口
ServerSocket serverSocket=new ServerSocket(PORT);while(true)
{
socket=serverSocket.a(chǎn)ccept();// 等待連接
OutputStream os=sockert.getOutputStream();// 獲取輸出流
os.write(data);// 寫(xiě)入數(shù)據(jù)
ServerThread st=new ServerThread(socket);//處理鏈接的線程類(lèi)
new Thread(st).start();//啟動(dòng)線程處理
}
由于客戶端采用FLEX技術(shù),沒(méi)辦法直接使用JAVA中的Socket去接收數(shù)據(jù),但FLEX所使用的腳本語(yǔ)言actionscript中提供了另一個(gè)對(duì)象XMLSocket,它可以接受字符或XML格式的數(shù)據(jù),這樣在前臺(tái)就能通過(guò)綁定IP地址和端口號(hào)與服務(wù)器進(jìn)行通信了.
客戶端連接服務(wù)器的核心代碼如下:
function conectServer():void
{
xmlsock=new XMLSocket();//聲明一個(gè)XMLSocket連接
configureListeners(xmlsock);
StartButton.enabled=false;//連接到本機(jī)端口8800
StopButton.enabled=true;
xmlsock.connect("192.2.200.14",8800);
}
其中,configureListeners(xmlsock)是進(jìn)行XMLSocket的事件監(jiān)聽(tīng)設(shè)置,當(dāng)服務(wù)器通過(guò)特定端口號(hào)對(duì)外發(fā)送數(shù)據(jù)時(shí),就會(huì)觸發(fā)在此處設(shè)置的DataEvent.data事件,客戶端接受到數(shù)據(jù)后就會(huì)執(zhí)行該事件對(duì)應(yīng)的監(jiān)聽(tīng)器dataHandler().dataHandler()方法解析獲取的數(shù)據(jù),提取其中的位置信息保存到數(shù)組中,調(diào)用AddPoints()方法,在地圖上顯示移動(dòng)設(shè)備的位置.由于中轉(zhuǎn)服務(wù)器會(huì)不斷地向前臺(tái)發(fā)送數(shù)據(jù),移動(dòng)設(shè)備的位置在不斷地被刷新,就能在地圖上模擬出車(chē)輛的移動(dòng)過(guò)程.
從功能上說(shuō),本系統(tǒng)可以幫助指揮員迅速查詢(xún)發(fā)生事故的路線,根據(jù)路線樁號(hào)定位具體事故地點(diǎn),借助GIS提供的緩沖區(qū)分析功能,指揮員可迅速查找事故發(fā)生地附近的救援物資和救援隊(duì)伍,而系統(tǒng)提供的最短路徑分析功能,則為救援物資和人員在第一時(shí)間流向事故現(xiàn)場(chǎng)提供了保障;從技術(shù)上說(shuō),本系統(tǒng)融ArcGIS Server、FLEX技術(shù)為一體,視圖層采用FlexView框架,保證了程序的擴(kuò)展性、靈活性和易維護(hù)性.
總體上說(shuō),系統(tǒng)可以在應(yīng)急指揮業(yè)務(wù)流程中發(fā)揮一定作用,但也存在一定的問(wèn)題,如對(duì)事故現(xiàn)場(chǎng)信息采集單一,只能查詢(xún)救援物資和救援隊(duì)伍的分布與數(shù)量,無(wú)法了解物資與人員的具體情況等,針對(duì)系統(tǒng)中存在的問(wèn)題,在后續(xù)的系統(tǒng)維護(hù)階段中,將完善以下功能:
1)添加視頻監(jiān)控功能,使指揮員可以更加清楚地了解事故現(xiàn)場(chǎng)的具體情況;
2)提供與公路管理系統(tǒng)的對(duì)接功能,保障指揮員對(duì)救援物資和人員情況的準(zhǔn)確了解;
3)改進(jìn)最短路徑功能,在設(shè)置障礙點(diǎn)的情況下進(jìn)行路徑分析;
4)保存決策指揮過(guò)程,為事后分析決策過(guò)程提供依據(jù).
[1]李卓君,吳金中.內(nèi)蒙古公路交通應(yīng)急指揮平臺(tái)研究[J].公路交通科技:應(yīng)用技術(shù)版,2009(3):175-177.
[2]Li Shen,Hong Sheng,Ling Cheng.New algoriths for efficimining of association rules[J].Information Sciences,1999(3):112-118.
[3]Seishi O,Ken S.An average-case analysis of K-nearest neighbor classifier[J].International Conference on Case-based Reasoning,1995(10):45-48.
[4]申穩(wěn)穩(wěn),李華,俞書(shū)偉.突發(fā)事件應(yīng)對(duì)的動(dòng)態(tài)監(jiān)測(cè)與預(yù)警系統(tǒng)[J].山東經(jīng)濟(jì),2008(5):41-45.
[5]鄔倫,劉瑜,張晶.地理信息系統(tǒng)原理、方法與應(yīng)用[M].北京:科學(xué)出版社,2001:1-10.
[6]劉明潔.城市道路交通緊急事件應(yīng)急指揮系統(tǒng)建設(shè)研究[J].江西公安專(zhuān)科學(xué)校學(xué)報(bào),2008(1):115-117.
[7]左宏毅.包頭市城市報(bào)警與監(jiān)控系統(tǒng)建設(shè)與應(yīng)用情況介紹[J].中國(guó)安防,2008(4):94-96.
[8]陳靜,吳健華.交通應(yīng)急通信系統(tǒng)設(shè)計(jì)方案探討[J].中國(guó)交通信息產(chǎn)業(yè),2008(3):72-75.
[9]鐘開(kāi)凱,彭宗超.突發(fā)事件與首都城市應(yīng)急聯(lián)動(dòng)系統(tǒng)的構(gòu)建[J].北京社會(huì)科學(xué),2003(4):60-65.