基于FLEX技术的交通应急指挥系统*

2011-12-17 09:41代后建
关键词:调用救援服务器

吴 勇, 曹 林, 代后建

(1.浙江师范大学地理与环境科学学院,浙江金华 321004;2.安徽通途信息技术有限公司,安徽合肥230088)

0 引言

随着社会经济的快速发展和城市现代化水平的不断提高,突发灾害事件对城市功能正常发挥的影响程度和波及范围也越来越大.因此,建立应急指挥系统,增强城市应急反应和防灾减灾能力,以最大限度减少人为事故或自然灾害事件对城市发展秩序和市民正常生活的不利影响是一件非常有意义的工作.而在交通系统日趋复杂、瞬息万变的今天,单凭人的经验和现有手段已经不能够解决复杂的城市交通应急问题,需要依靠高效的信息化工具、手段和方法来辅助人们进行应急指挥决策.交通应急指挥系统能够把各种信息集成起来,迅速传递到一个指挥中心,并能够辅助相关人员进行科学的决策,进行联动处置[1-3].这个系统为政府实现决策的科学化提供了一个非常好的手段,对于改善和提高城市的管理水平将会起到很大的作用.

地理信息系统(GIS)作为一种决策支持系统,经过几十年的发展已经从理论研究走向行业应用[4-6].与其他信息系统相比,它以直观的方式在地图上显示数据,同时提供强大的空间分析功能,更加有利于从空间关系、空间分布中发现隐含的信息,为决策提供有力支撑[7-9].在综合应急指挥决策体系中,一个非常重要的理念是能够让指挥员针对当前的形势快速做出正确的决策,这就需要两方面的重要支持:其一是要能够实时了解前线的信息;其二是要有相应的辅助工具来支持领导的决策.而这两方面都离不了GIS.

1 ArcGIS Server与FLEX

ArcGIS Server是一个发布企业级GIS应用程序的综合平台,它提供了创建和配置GIS应用程序和服务的框架,可以满足各种客户端的各种需求.ArcGIS Server本身对外提供的编程方式很多.本文首先利用ArcGIS提供的Geoprocessing制作成具体应用模型,借助ArcGIS Server平台对外发布,进而在客户端通过ArcServer for FLEX API进行调用.

FLEX是可以在企业内部或在Web上创建并交付丰富Internet应用程序(RIA),堪称最完整、最强大的RIA开发解决方案.它使企业能够创建个性化的丰富多媒体应用程序,极大地提高用户的体验,彻底革新人与Web的交互关系.FLEX是Adobe公司最新的服务器端产品,该技术提供了一个新的、基于标准的语言和编程模型,其编程模型支持常用的设计模式,能够使企业创建许多有吸引力的、交互的快速应用,这些应用会戏剧性地增强用户的体验、客户的满意度和用户的工作效率.

FLEX对矢量地图的支持及丰富的用户体验效果,使得利用FLEX建立美观的互联网地图应用程序成为可能.2008年4月,美国环境系统研究所(ESRI)率先推出的ArcServer for FLEX API是进行RIA开发的FLEX库,基于该套API建立的WebGIS应用运行速度快,比传统的基于网页的WebGIS具有更好的用户体验.使用ArcServer for FLEX API可以达到下面的效果:

1)显示地图数据并可以和数据交互;

2)在服务器上执行空间处理模型并显示结果;

3)基于ArcGIS Online上的底图显示自己的数据;

4)根据属性或者位置查找数据并显示结果;

5)查找地址并显示结果;

6)用创新的方式可视化结果.

2 系统设计与实现

2.1 系统总体设计

基于GIS的综合应急指挥决策系统以地理空间数据库为基础,结合ArcGIS桌面制作各种模型通过服务器发布,在ArcServer平台之上提供各种功能单元,满足交通应急指挥系统中的各种业务需求,系统的整体架构如图1所示.

2.2 系统功能设计与实现

2.2.1 应急报警

图1 系统整体架构图

通过这个模块,可以迅速了解当前哪个位置发生了什么类型的紧急事故,以及和事故相关的详细信息.使用动态分段技术可以定位路线上的某一特定点,也可以定位某一特定路段,在ArcGIS中进行动态分段需要网络数据集和动态分段表的支撑.若定位点,则分段表中只有路线编码和桩号2个字段;若定位路段,则包含3个字段,即路线编码、起点桩号和终点桩号.在本系统中,需要进行点的定位,因此分段表的字段是路线编码和桩号.具体应用过程如下:

1)从弹出的窗口中用鼠标点击一下定位按钮,触发点击事件,然后从地图上显示的高速公路、国省干线、县乡公路中通过鼠标点击路线,来选择报警的路线,就可以得到该条路线的名称,见图2.

2)跳转到详细信息填写界面,在详细信息界面中,填写事故点发生的位置桩号,在地图中确定其具体位置.

3)将查询到的具体位置信息保存到详细信息列表中,见图3,通过点击列表中的每条记录,地图以报警点进行动态移动,实现中心显示.

图2 桩号设置

图3 列表显示

2.2.2 救援查询

本模块实现了在事故点的缓冲范围内查询救援物资和救援队伍的功能.具体实现上使用了ArcGIS Server 9.3提供的Geometry Service和IdentifyTask技术.

1)救援物资.可以查询突发交通事故点周围多少km以内的救援物资的分布情况、种类和数量等信息,可以通过点击查询的记录将救援物资显示在事故点的周围,对事故救援提供保障,见图4.

2)救援队伍.可以查询突发交通事故点周围多少km以内的救援队伍的分布情况、人员数量、救援工具等信息.可以通过点击查询的记录将救援队伍显示在事故点的周围,为事故救援提供保障.

图4 救援物资

图5 疏散路径分析

2.2.3 疏散路径分析

通过在地图上选择路径的起点(可多选)和路径的终点,然后点击疏散路径分析按钮,返回一个列表,将所有查询到的路径列出来.通过点击列表中的各条记录,可以在地图上将路径高亮显示,见图5.

该模块借助ArcGIS网络分析功能,完成高速路网中两点间最短路径分析,包括数据准备、模型制作与发布、前台调用.网络数据集的制作与发布全部在ArcGIS平台中完成,模型包含了复杂的分析过程,这也减轻了客户端开发的任务.最后一步是前台调用.前台调用的逻辑主要包括3个部分,用户设置起终点、调用模型、模型返回结果响应.按照调用的时间顺序,结合程序代码对前台调用逻辑进行如下详细说明.

用户在点击选择工具时将触发activateIdentifyTool()方法,代码如下:

private function activateIdentifyTool():void{

var status:String="点击标注";

setMapAction(Draw.MAPPOINT,status,drawEnd);}

其中,status用作控制工具栏的状态,setMapAction方法中的参数drawEnd是一个回调函数,用户在图上选择起终点完毕后将触发该方法.

private function drawEnd(event:DrawEvent):void{

if(p==0){

ruteGraphicsLayer.clear();

myGraphisLayer.clear();)

p=p+1;

var object:String=new String(p);

event.graphic.attributes=object;

event.graphic.symbol=ifs;

var graphic:Graphic=new Graphic(event.graphic.geometry);

plist.push(graphic);

myGraphicsLayer.add(event.graphic);//将选中的点显示在地图上 }

该方法的作用是将用户选择的点在地图上显示,并将两点保存到数组plist中,plist将作为输入参数被传递到模型中,它与模型中的Input Stops对应.参数准备完毕后,开始调用模型:

private function doShortestRoute():void{

if(plist.length==0){

Alert.show("请在地图上选择点!");}

else if(plist.length==1){

Alert.show("请在地图上再选择一个点!");}

else if(plist.length > 2){

clear();

plist=new Array();

Alert.show("只可以在地图上选择2个点进行分析!");}

else{

CursorManager.setBusyCursor();

//设置Geoprocessing服务的输入参数

var featureSet:FeatureSet=new FeatureSet(plist);

var params:Object={"Input_Stops":featureSet};

//进行分析成功调用onResult方法,失败调用onFault方法

gp.execute(params,new AsyncResponder(onResult,onFault));}

}

doShortestRoute()方法首先对参数设置情况进行检查,确保用户已经在地图上选择2个点,然后设置光标状态为“忙碌”,对模型进行异步调用,并设置了对调用结果的回调函数.当调用成功返回结果时,通过调用on-Result()方法,在地图上显示最短路径.

2.2.4 在线资源调度

该功能主要实现对移动设备的监控,将移动设备(车辆)在公路上的运行情况直观地反映到电子地图上,设备的位置信息流向如图6所示.通过安装在救援车辆上的GPS定位设备,向中转服务器发送数据,中转服务器可以将数据保存在数据库中,方便以后进行历史轨迹回放和信息的浏览,同时将数据转发Web页面,在地图上实时展示,方便领导及时了解当前救援队伍的前进情况.

为接收从移动设备上发送的GPS数据,需要建立单独的服务器,该服务器接收GPS数据后进行重新的解析、封装,封装得到的数据格式如表1所示:

图6 在线资源调度

表1 服务器接收并封装的数据格式

数据解析完成后保存到数据库中,同时通过ServerSocket向Web前台发送数据,ServerSocket用于服务器端,Socket是建立网络连接时使用的.在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话.在本系统中,服务器和客户端的会话内容就是传送移动设备的位置信息.

服务器端的核心代码如下:

public void sendData()

{

int PORT=8888;//侦听端口

ServerSocket serverSocket=new ServerSocket(PORT);while(true)

{

socket=serverSocket.accept();// 等待连接

OutputStream os=sockert.getOutputStream();// 获取输出流

os.write(data);// 写入数据

ServerThread st=new ServerThread(socket);//处理链接的线程类

new Thread(st).start();//启动线程处理

}

由于客户端采用FLEX技术,没办法直接使用JAVA中的Socket去接收数据,但FLEX所使用的脚本语言actionscript中提供了另一个对象XMLSocket,它可以接受字符或XML格式的数据,这样在前台就能通过绑定IP地址和端口号与服务器进行通信了.

客户端连接服务器的核心代码如下:

function conectServer():void

{

xmlsock=new XMLSocket();//声明一个XMLSocket连接

configureListeners(xmlsock);

StartButton.enabled=false;//连接到本机端口8800

StopButton.enabled=true;

xmlsock.connect("192.2.200.14",8800);

}

其中,configureListeners(xmlsock)是进行XMLSocket的事件监听设置,当服务器通过特定端口号对外发送数据时,就会触发在此处设置的DataEvent.data事件,客户端接受到数据后就会执行该事件对应的监听器dataHandler().dataHandler()方法解析获取的数据,提取其中的位置信息保存到数组中,调用AddPoints()方法,在地图上显示移动设备的位置.由于中转服务器会不断地向前台发送数据,移动设备的位置在不断地被刷新,就能在地图上模拟出车辆的移动过程.

3 结论和讨论

从功能上说,本系统可以帮助指挥员迅速查询发生事故的路线,根据路线桩号定位具体事故地点,借助GIS提供的缓冲区分析功能,指挥员可迅速查找事故发生地附近的救援物资和救援队伍,而系统提供的最短路径分析功能,则为救援物资和人员在第一时间流向事故现场提供了保障;从技术上说,本系统融ArcGIS Server、FLEX技术为一体,视图层采用FlexView框架,保证了程序的扩展性、灵活性和易维护性.

总体上说,系统可以在应急指挥业务流程中发挥一定作用,但也存在一定的问题,如对事故现场信息采集单一,只能查询救援物资和救援队伍的分布与数量,无法了解物资与人员的具体情况等,针对系统中存在的问题,在后续的系统维护阶段中,将完善以下功能:

1)添加视频监控功能,使指挥员可以更加清楚地了解事故现场的具体情况;

2)提供与公路管理系统的对接功能,保障指挥员对救援物资和人员情况的准确了解;

3)改进最短路径功能,在设置障碍点的情况下进行路径分析;

4)保存决策指挥过程,为事后分析决策过程提供依据.

[1]李卓君,吴金中.内蒙古公路交通应急指挥平台研究[J].公路交通科技:应用技术版,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]申稳稳,李华,俞书伟.突发事件应对的动态监测与预警系统[J].山东经济,2008(5):41-45.

[5]邬伦,刘瑜,张晶.地理信息系统原理、方法与应用[M].北京:科学出版社,2001:1-10.

[6]刘明洁.城市道路交通紧急事件应急指挥系统建设研究[J].江西公安专科学校学报,2008(1):115-117.

[7]左宏毅.包头市城市报警与监控系统建设与应用情况介绍[J].中国安防,2008(4):94-96.

[8]陈静,吴健华.交通应急通信系统设计方案探讨[J].中国交通信息产业,2008(3):72-75.

[9]钟开凯,彭宗超.突发事件与首都城市应急联动系统的构建[J].北京社会科学,2003(4):60-65.

猜你喜欢
调用救援服务器
紧急救援
3D打印大救援
核电项目物项调用管理的应用研究
通信控制服务器(CCS)维护终端的设计与实现
PowerTCP Server Tool
系统虚拟化环境下客户机系统调用信息捕获与分析①
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
救援行动
利用RFC技术实现SAP系统接口通信