LEX在水质监控与预警可视化中的应用
2010-09-07中国地质大学武汉信息工程学院张海明
◎ 中国地质大学(武汉)信息工程学院 张海明
【关键字】flex 水质监控预警 amChart ArcGIS API for Flex
1 引言
随着我国工业化、城镇化进程的加快,我国水环境及城市饮用水源污染状况日益严重,突发性水源污染事故频频发生。当前阶段普遍存在着水源水污染持续加重与净水工艺进步缓慢的矛盾,存在着城市供水管网材质不佳、腐蚀老化的问题,存在着政府监督指导与供水企业快速市场化的不协调现象。加强水质监管与预警的研究,提高各级政府部门对水质监管的能力建设,成为一项十分重要的工作。水质信息管理和监控预警方面存在着以下几个方面的问题,水质数据上传不及时;水质数据存在误差;水质数据管理困难;水质数据表现方法单一;水质数据缺乏分析手段。为了解决水质监测这一关系国计民生的问题,国家确定了水体污染与治理重大专项,即水专项。水质监控与可视化平台来源水专项的子项目二——饮用水水质监控预警及应急技术集成与示范项目,旨在有效解决水质监控预警中数据上传不及时、误差大、管理困难、表现方式单一、缺乏分析手段等问题提供了方法,并构建出一套从源头到龙头的水质监管体系,形成对城市饮用水水质进行管理、分析、监控、预警及相关技术研发的综合平台,为专家会商、各级政府进行及时的科学决策和日常政务管理提供技术支撑。
Flex 是一个富客户端的应用程序(Rich Internet Application,RIA)框架,拥有丰富的用户界面组件,数据的表现形式多样,如折线、曲线、饼图、直方图、雷达图、散点图等方式,完全能够满足在线监测系统对数据表现形式的要求。flex富客户端技术在客户端进行完整的数据处理,与用户的交互更加友好、更加迅速;界面交互不依赖页面,消息通过异步请求传递,面向用户界面中的各个小模块,客户端的模块之间关系清晰[1]。另外,很多公司提供的第三方控件更使flex控件在功能上有更高级的改进,其中最有代表性的事AmChart控件,它使Flex控件能够通过改变数据源生成动态曲线,并使相关数据集具有可比性,增强了数据的表现能力。ArcGIS API For Flex是ESRI针对Flex推出的二次开发包,为ArcGIS Server 9.3 提供了一套全新的开发方式,其优点是运行速度快,为用户提供优秀的用户体验。
图1 系统结构图
2 系统结构
水质监控与可视化平台是实时在线系统,数据实时写入并展现到前台,整个过程对系统的稳定性与数据实时传输与处理能力要求很高,因此,设计一个良好的系统结构是很重要的。(如图1)
2.1 数据层
数据由数采仪采集,并直接上传至数据库。以SQL2005数据库为例,数据库只有一个储存实时数据的主表WQ_Mon_T_OnlineData_XXXX(XXXX代表年份),以确保数据的写入与访问速度,同时通过对敏感数据建立索引,加快对海量数据的访问。服务层对数据的操作全部由存储过程完成。
2.2 服务层
服务层负责为业务逻辑层提供数据,服务层只暴露数据接口,降低了业务逻辑层与数据层的耦合性,同时使逻辑层与所选数据库无关,降低了系统对数据结构的依赖。服务层通过调用存储过程将数据组织起来,以JSON格式传递给业务逻辑层。
2.3 逻辑层
与传统不同的是,系统的逻辑层实现全部由Flex富客户端程序完成。Flex通过mxml文件和actionscript3.0文件实现业务逻辑,系统中Flex通过Web Service向服务端发送请求,接收服务层的JSON格式的数据,并最终以监测点为单位将所有相关数据组织成ArrayCollection数据格式,方便表现层对数据的调用。
2.4 表现层
ActionScript3通过对业务逻辑层的数据进行处理用于不同的显示目的,处理后的数据通过与相应显示控件的数据绑定实现数据的实时更新。系统通过定时器,每5秒向服务端请求一次,用自定义JSON格式通过服务层将数据传送到逻辑层,再在客户端重组数据,作为显示控件的数据源。
3 系统开发中的关键问题与解决方案
3.1 由业务逻辑生成JSON数据结构
为了解决客户端与服务器端数据传输问题,系统选用了结构清晰,传输速度更快的JSON。传递数据的数据格式是自定义的,以GetMonStation接口为例,格式片段如下:
图2 客户端与服务端交互示意图
3.2 Flex客户端与ASP服务端的交互(如图2)
Flex与服务端的交互有三种方式:HttpService、Web Service和RemoteObject[3],可根据服务器的不同技术应用而选择不同的组件,灵活而强大。由于服务接口使用了web服务描述语言(WSDL)预定义的web服务,故选用WebService来与服务器交互。以下代码为使用WebService方式访问服务的代码,其中GetSampleInfo函数建立服务名为WaterOnlineService的WebService,op变量直接对远程服务的GetMonStation接口进行访问,返回的结果由onStationSuccess函数处理,返回数据过程出现的错误则由onStationFault函数处理:
3.3 Flex数据分析技术
根据水质业务的特殊性,水质监控预警可视化平台必须实现数据的多种分析技术,包括单监测点多指标水质数据展现、多监测点单一指标数据对比和历史数据趋势分析等分析方法。
(1)单监测点多指标水质数据展现
该分析技术主要针对拥有多个监测项目的监测点,可以以监测时间和各个监测项目为两个维度,用曲线、表格等形式展示数据。
(2)多监测点单一指标数据对比
该分析技术主要针对具有现实对比意义的指标项,通过比较具有既定关系的监测点,比如上下游关系、同水源关系等,发现监测点异常。
(3)历史数据趋势分析
该分析技术主要针对时间维度上的水质数据指标,分析中需要显示数据的变化趋势,并从中提取有益于预警的信息。
4 Flex数据展示技术
(1)DataGrid显示:(如图3)
该界面每隔5秒会更新一次数据,并将超标数据以红色标记出来;通过勾选“按超标数据排序”选项还可以将超标数据的记录放在DataGrid控件的顶端,使监控人员对超标情况一目了然。该页面还可以根据水样类型进行分类显示监测点监测信息,如按水源水监测点、管网水监测点和出厂水监测点进行分类显示。
(2)地图显示:
图3 实时数据报表显示
图4 系统GIS显示模块
图5 系统GIS测量模块
ArGIS API For Flex通过访问ArcGIS Server发布的资源,能够高效地实现水质地图的浏览、监测点定位、监测点信息的多样化显示。地图中用于水质信息显示的Tip来源于ArGIS API For Flex的InfoSymbol组件,图中显示的Tip已经实现了Tip自动避让的算法,效果可以在图4显示。
ArcGIS API for Flex提供了强大的GIS功能实现接口,图6以图上标注与量算功能模块为例,显示了Flex在水质监控预警平台的GIS优势。图5红色直线为两个监测点间管网的实际长度值,红色多边形为居民区图斑的面积和周长值。(如图5)
(3)动态曲线:
图6中绿色直线为指标标准值,褐色曲线为真实值,曲线会随着时间的改变而变化,以此将后台的水质数据实时地显示到客户端。
4 结论
通过构建基于Flex富客户端的水质监控预警可视化平台,利用Flex面向对象的编程特性,将业务逻辑与数据处理放到客户端进行,减轻了服务器的压力并极大地丰富了系统的展示效果。本系统使用GIS技术显示水质监测点的空间信息和水质信息,同时采用表格、动态曲线、地图等形式显示水质信息的做法可以对日后水质监测系统的开发起到一定的借鉴作用。系统仍处于开发的初级阶段,flex可视化显示仍需改善。值得关注的是,以上解决方案不只一种,如可以采用FluorineFx网关在客户端与服务器端传递字节数据来提高数据的传输效率和显示质量,需要根据需求在日后的研发实践中不断地验证[4][5]。
图6 单监测点多指标动态曲线显示