基于Flex技术的辅助报修管理系统
2015-12-02李洋
李 洋
(哈尔滨师范大学)
0 引言
地理信息系统作为一种具有决策性的支持系统,经过近几年发展和研究已经从理论逐渐走向行业应用.与其他信息系统比较,它是以一种直观方式在地图上显示数据,同时也提供强大的空间分析功能,更有利于从空间关系和空间分布发现隐含的地理信息,为决策系统提供有力支撑[1].地理信息系统技术已经广泛应用到国土管理、城市规划、交通运输、军事公安、公共设施管理、农林牧业、商业金融等国民经济各个领域.
RIA(Rich Internet Application富互联网应用)的展示层利用客户端脚本和浏览器插件技术开始分担业务逻辑层的部分运算.传统桌面应用之间的交互都集中在服务器端,这样增加了服务器端的负担.而RIA技术应用程序与服务端的交互过程,是将大部分的业务逻辑从服务端移植到了客户端,仅仅只保留了一些很基础的业务逻辑在服务器端[2].这种新型的网络应用架构方式的关键机制在于客户端与服务端之间引入了一种被叫做是客户端引擎的中间层,该引擎常常作为应用程序初始化被下载,是浏览器端用户界面和服务器端的通信员[3].
基于RIA技术被广泛应用的是Flex技术.如今,大部分的计算机都安装了FlashPlayer插件,Flex编译后的P代码可以直接由FlashPlayer识别,所以采用Flex技术的RIA开发技术,既能提供丰富的客户端体验和交互能力,而且也无需再担心客户端的插件问题.Flex技术方便开发环境,同时也提高了执行的效率.
1 技术的研究
该文主要研究内容是一种基于Flex和Arc-GIS Server的辅助报修管理的地理信息系统技术的解决方案.鉴此,对涉及的相关技术概述如下.
1.1 Flex技术
Flex技术是Adobe公司推出的开发RIA的开源跨平台的框架,它是一种面向对象的开发语言,结合了用户界面和数据访问的组件.Flex开发是MXML标签语言和ActionScript语言相结合,其中MXML标签语言通过Flex SDK被转换成ActionScript代码,最终被编译为Flash Player可以识别的P代码.Flex之所以被广泛应用是因为它的表现力强、具有实时和数据通信功能、本地支持和脱机支持、简便的开发方式和丰富的用户体验[4-5].
Flex开发语言编写方式简便,开发工具为Flash Builder.该工具在开发过程中会根据键入首字母提示所需的标签组件,提高了开发的效率.Flex技术前端与后台java对象交互的核心标签组件是<RemoteObject>,它是Flex前端与后台java对象之间的传信员,实现了前端对后台方法的调用,对于返回的数据以字符串形式存在,Flex语言通过对字符串进行解析,将后台返回的结果可视化展示在浏览器端.
1.2 ArcGIS Server技术
ArcGIS Server是基于Web技术的企业级GIS解决方案,为创建和管理基于服务器的GIS提供了一个高效和便捷的平台,它支持的GIS软件可以集中管理并且支持多个用户[6].ArcGIS Server充分利用了ArcGIS的核心组件库ArcObjects,并且基于工业标准提供 WebGIS开发所需要的服务.ArcGIS Server发布地图服务后,通过Rest接口得到标准格式的URL,应用在后续的开发过程中.ESRI推出的 ArcGIS Server for Flex API是进行RIA开发的Flex工具库,基于该套API建立的WebGIS应用运行效率快,较传统基于网页的WebGIS具有更好的用户体验.使用ArcGIS Server for Flex API实现地图数据显示与交互、在服务器上执行空间分析模型、根据属性或者位置查找数据且显示结果、用创新的方式可视化分析结果.
1.3 J2EE 技术
Java 2平台有三个版本,分别是J2ME、J2SE和J2EE.J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关复杂问题的体系结构.J2EE平台是由一整套服务(Services)、应用程序接口(APIS)和协议构成,它对开发基于Web的多层应用提供功能支持.在该系统中主要应用Java中的三大开发框架,根据Hibernate框架中db.properties属性文件配置标准数据库信息,Hibernate连接数据库机制在于对JDBC封装,简便了对数据库操作.并且HQL语言是Hibernate框架特有的操作数据库语句.提高数据库数据查询效率和简便数据操作,为系统提供数据支持.
2 系统逻辑结构
辅助报修管理系统是基于Flex技术和Rest风格架构的WebGIS系统,只有客户端浏览器和ArcGIS Server服务器进行交互.Flex作为前端展现,后台直接访问ArcGIS Server Rest Services提供的资源,根据API提供的接口进行数据的分析和展示[7].系统架构由展示层、服务层、数据层三个部分组成.
2.1 展示层
展示层包括WebGIS和B/S客户端.WebGIS程序采用J2EE体系规范实现,开发语言为Java,开发框架包括 Struts、Spring、Hibernate和 Flex-Viewer,系统框架控制数据存储采用甲骨文公司的Oracle10g.Oracle数据库具有良好的稳定性以及足够的空间存储系统数据.B/S客户端通过ArcGIS SDE空间数据引擎访问数据库,通过ArcGIS Server访问基础地理信息数据.
2.2 服务层
服务层是整个框架的核心,提供GIS服务和Web服务.采用ArcGIS Server作为GIS服务器,通过ArcSDE与空间数据库连接,使用Rest接口发布各种GIS服务器如栅格地图服务、矢量地图服务和Geometry服务等,Rest最突出的特点是用URL来描述互联网上所有的资源,在ArcGIS Server Rest接口中,请求服务地址具有标准格式[8].Web 服务器中,采用 J2EE 和 Flex技术,通过Rest接口提供请求的访问地址,利用ArcGIS API For Flex访问GIS服务器中的服务,实现对地图的基本操作、空间和属性的查询、缓冲区分析以及地图的渲染功能.Flex提供的用户界面组件快速地构建了丰富的数据演示和高效的应用程序.
2.3 数据层
数据主要包括属性数据数和地理数据.属性数据主要是与地图无关的业务数据,该系统中主要是大用户信息,根据实际需求建立表结构,对属性数据存取采用Java的Hibernate框架与Oracle 数据库连接[9].
数据访问层通过 ArcGIS Server和 ArcGIS SDE实现对基础地理信息数据等的访问和管理,为空间数据服务层和WebGIS应用提供数据访问支撑.ArcGIS Server平台提供一系列基础服务组件,包括自动成图、拓扑管理、数据访问、数据维护等各类基础组件,提供空间数据基础服务和WebGIS程序支撑.ArcGIS SDE是空间数据引擎,为空间数据访问和管理提供支撑.
3 系统功能设计
3.1 图形浏览
图形浏览属于常用GIS功能,用户可以通过放大、缩小、拉框缩放、前一视图、后一视图、全图、漫游浏览地图.地图基本功能主要通过NavigationTool类实现,利用该类中的 activate(nav-Type,enableGraphicsLayerMouseEvents)方法接收浏览类型,其中参数navType为导航类型:ZOOM_IN,ZOOM_OUT,PAN 等.
3.2 面积和长度量测
ArcGIS Server发布的Geometry服务可以实现缓冲区分析、最短路径分析、面积和长度的量测.通过 Geometry服务中 areasAndLengths()方法实现面积计算和长度测量,返回计算结果高亮显示在地图上.
3.3 设备查询
设备查询包括拉框查询和设备综合查询,API中提供了多种查询方式如FindTask、IdentifyTask和 QueryTask.该系统中选择了 FindTask方法对电力设备图层进行属性查询,
使用FindTask时需要创建FindTask对象并且指定查询服务资源(通过ArcGIS Server发布服务后提供的标准URL).FindTask对象执行excute(findTaskParemeters)方法进行查询,find-TaskParemeters参数需要定义查询图层id,是否返回地物要素等.最后以异步的方式调用onSuccess()方法高亮显示地物要素和分析结果可视化.
拉框查询可以查询到拉框范围内的设备信息,这些信息以树形结构展示出来.当点击某一类别的设备时系统可查询到对应的详细信息并且在地图上以不同的渲染效果定位到此设备(如图1所示).
图1 拉框查询结果
设备综合查询通过筛选条件的设定,缩小设备范围进行查询及在地图上定位(如图2所示),提高了设备信息查询效率.
3.4 辅助报修
辅助报修功能包括定位故障点,取消故障点,定位维修车辆,完善任务单,查询任务单.定位故障点,根据现场电力设备具体情况设定模拟的故障维修点,定位该电力设备后会以紫色圆点显示在地图上.原理是对电力设备进行IdentifyTask查询并且将查询结果高亮显示在地图上.具体方法是当IdentifyTask对象执行 excute(identifyParameters)方法时,其中identifyParameters中给定点击地图位置时的一个容差值identifyP.tolerance=5.
图2 设备综合查询结果
然后满足容差范围内的设备改变其样式高亮显示在地图上作为模拟故障维修点.
取消故障点,选择取消故障点按钮,若紫色的圆点在地图上消失,则清除故障点成功,使用GraphicLayer.clear()方法清除故障点.
定位维修车辆,点击定位维修车辆,系统弹出一个窗口,在窗口内的编辑框中输入缓冲半径.若地图上只有一个故障点,则直接点击查询按钮,系统将会以此故障点为中心,以输入的数据为半径进行缓冲区分析,缓冲区分析功能是通过Geometry服务中的buffer(bufferparameters)方法实现,bufferparameters参数指定缓冲半径,坐标参考等信息.以异步方式将分析结果渲染在地图上,异步方式的本质是当缓冲区分析完成同时,通过bufferComplete()方法可视化分析结果.若缓冲区内包含维修车辆,则高亮显示维修车辆,若缓冲区内不包含维修车辆,则系统会给出一条请重新输入缓冲半径的提示信息;如果地图上有多个故障点,点击寻找中心故障点按钮,在地图上选择需要维修的故障点,此时故障点的样式变成蓝色方形小点,点击查询按钮,系统将会以此蓝色小点为中心,以输入的数据为半径进行缓冲区分析,分析结果同上.当分析成功之后,在地图上选中通过缓冲区分析后定位到的维修车辆,则弹出一个维修车辆任务单窗口,完善任务单后派发车辆进行维修.根据最短路径分析原理,在地图上查找出一条故障点到维修车辆的最短路径(如图3所示).
查询任务单,维修车辆每次执行任务后都会有相应的任务单信息存在数据库中,该信息便于查看维修车辆完成任务的具体状态.根据状态派发维修任务,只有在任务状态是完成时才会被派发任务,提高指挥人员的工作效率和保障维修车辆资源的可利用性.
图3 维修车辆报修示意图
3.5 大用户管理
从数据库查询大用户的信息,查询的结果以表单的形式展示出来,根据实际情况可以对大用户的信息进行增加、删除、修改、查询,管理和维护后的数据同步到数据库中.维护数据是通过后台 java类中 save(),delete(),findById(),findAll()四个方法对数据库操作,返回的结果通过前后台交互展现在浏览器的客户端.
3.6 维修车辆管理
从数据库中查询维修车辆的信息,信息主要包括车牌号,车型,司机,电话,日期,经度,纬度.便于系统快速确认故障维修车辆,及时对电力设备进行抢修.对信息的维护和管理与数据库同步.后台是通过java语言操作数据库,得到的结果以字符串类型返回给Flex,在前端通过解析字符串可视化查询结果.
4 结论与讨论
从功能上说,辅助报修系统可以帮助抢修指挥员及时确定事故发生故障点,通过以故障点为中心进行一定范围内的缓冲区分析,查找到缓冲距离范围内的维修车辆.根据维修车辆的运作状态来确认维修车辆的信息,通过最短路径分析原理,使得维修车辆快速到达事故发生地进行抢修,为救援物资和人员在第一时间到达事故现场提供了保障.同时也可以管理和维护电力设备的信息,同步更新数据库中的数据.
从技术上说,该系统是基于 FlexViewer框架、ArcGIS Server和J2EE技术的开发,保证了程序的可扩展性、灵活性和稳定性.技术发展趋于稳定为决策系统提供有力支撑.
从总体上说,该系统可以在辅助报修过程中发挥一定的作用,但由于维修车辆信息、交通路线信息采集量过于单一,以及未测试该系统实际应用的稳定性所以存在一定的问题.
随着对 ArcGIS API For Flex技术和 Flex-Viewer框架的进一步学习,将会完善该系统中的不足.补充大量的维修车辆信息和交通路线模拟数据验证系统的稳定性,保证系统的可行性.新增权限管理模块是主要研究方向,安全性对于系统来说存在很大的隐患,分配不同管理人员对系统的操作权限,保障系统的稳定性.
[1] 傅晓珊.地理信息系统的发展现状及趋势[J].安徽工程科技学院学报,2010,25(4):89-93.
[2] 陈谦,佘江峰,潘森,等.基于RIA方式的WebGIS构建[J].GIS 技术,2009(8):89-94.
[3] 张亚飞.精通Flex网络开发技术[M].北京:电子工业出版社,2009.
[4] 吴勇,曹林,代后建.基于FLEX技术的交通应急指挥系统[J].浙江师范大学学报:自然科学版,2011,34(3):356-360.
[5] 郭淑芬,于志刚,李成名,等.基于Flex开发综合市情系统的研究与应用[J].测绘通报,2012(10):88-91.
[6] 郭婧,张立朝,王科伟.基于ArcGIS Server构建地理信息服务[J].测绘科学,2007,32(3):91-93,195.
[7] 郎永刚.浅谈基于Flex RIA与REST的WebGIS研究[J].测绘与空间地理信息,2011,34(6).
[8] 贾静,耿衬.基于ArcGIS API for Flex的Web应用初探[J].地理空间信息,2012,10(3).
[9] 王新盟,苏厚勤.基于ArcGIS Server和Flex的城市服务信息系统研究与设计[J].计算机应用与设计,2011,28(9).