基于SOA的地质灾害实时监测预警平台设计

2018-09-27 07:22李忠权冷小鹏
关键词:监测数据浏览器灾害

李忠权,冷小鹏,梁 军

(1.构造成矿成藏国土资源部重点实验室(成都理工大学),成都 610059;2.成都理工大学 网络安全学院,成都 610059;3.深圳市地质局,广东 深圳 518023; 4.深圳地质建设工程公司,广东 深圳 518023)

中国是一个多山的国家,地貌、地形类型多样、地质环境复杂、灾害性天气频发,是世界上地质灾害广泛发育且致灾最为严重的国家之一。目前,中国大陆有上百万处的地质灾害点,重特大地质灾害点达34 000余处,地质灾害防治工作显得尤为重要。利用现代信息技术手段建立具有良好实用性与可扩展性的信息化集成平台,对灾害点监测数据进行自动化分析与预警,并进行数据可视化呈现,能够为防灾救灾提供辅助决策,对提升地质灾害防治工作的信息化水平具有积极意义[1-3]。

面向服务的架构(service oriented architecture,简称:SOA)是一种组件模型,利用服务接口可以将不同的业务功能模块进行封装与发布,并整合到最终应用中,具有可重复使用、松耦合、接口定义明确、无状态服务设计和开放标准的特征。接口采用标准的Web服务定义,不依赖于具体的软硬件环境,构建的接口可以利用通用规则进行交互,便于功能维护及扩展[4-5]。

本文设计的地质灾害实时监测预警平台以当前防灾减灾工作的信息化需求和发展趋势为目标,采用适应性更广的B/S结构,结合SOA服务架构以前、后端分离的方式构建平台,对地质灾害监测预警信息实施合理高效的组织管理、集成。同时,基于SOA架构的平台还具有通用性强、开放易扩展且数据标准易统一等优势,对丰富系统业务功能、提高灾害管理水平和增强数据共享度等方面都具有积极意义。

1 总体设计

1.1 系统架构

监测预警系统基于3S技术、计算机及物联网技术、灾害监测预警技术,以监测区域中的滑坡、泥石流、崩塌、边坡等地质或工程灾害隐患点为监测对象,对诸如变形、降雨量等致灾因素进行实时监测。通过对致灾因素相关数据的分析处理,对灾害点的稳定状态和变化趋势做出预测。基于物联网的实时监测预警服务平台网络组织如图 1所示,监测设备的实时数据在前端MCU处理后,利用无线传输模块基于运营商网络接入互联网,并利用云平台实现服务的部署与发布。

3S技术(RS,GIS,GNSS)是综合了遥感技术、地理信息技术及卫星定位计算的现代信息技术,而地质灾害信息管理的目标也包含了大量与地理信息相关的数据,与3S技术的结合不仅便于实现对空间信息的管理,与灾害相关的属性信息也能进行统一管理。同时,云计算、物联网、传感器技术的加入也使得灾害的实时监测、快速处理和信息传输等关键环节得到了保障[3,6-7]。为满足灾害实时监测与预警的需要,系统由多个层次构成(图 2)。

图1 基于物联网的网络组织结构Fig.1 Diagram showing network organization structure based on internet of things

采集层主要为现场采集部分,包括物理传感器以及传输媒体。物理传感器有雨量计、水位计、位移计、压力计等,分别负责采集监测区域的不同监测数据并记录下来。传输媒体为电缆或光纤,负责将记录下来的数据发送到下一层模块。

传输层采用TCP或UDP协议。传输层负责接收采集层的数据,并向它上面的存储层和应用层提供服务。其中UDP在传送数据之前不需要先建立连接,通常视频监测等常用UDP服务;而TCP则提供面向连接的服务,常用于各类低频率的数据采集。

图2 系统层次结构Fig.2 Schematic diagram showing the texture of system level

存储层为数据持久化部分,包括数据库和文件存储。本层接收传输层的数据,并将数据导入到数据库中,以便于应用层调用;同时,将各类数据文件存储起来。

应用层接收传输层的数据,并直接给用户提供服务。在这一层上,可以提供各种数据的直观显示,也可以提供地灾预警等更多复杂的功能。

1.2 服务框架

1.2.1 SOA架构

SOA是一种粗粒度、松耦合服务架构,它可对接口服务进行基于网络的分布式部署和应用。服务层是SOA的基础,可以直接被应用层调用。本平台设计中SOA的具体实现采用了Spring MVC框架。

MVC (模型-视图-控制器)模式是目前Web应用开发中广泛使用的一种三层架构,可以很好地分离用户界面层和业务逻辑层,便于实现代码模块化,降低功能模块之间的耦合度。Spring MVC更加便捷地实现了MVC模式的核心理念,通过配置文件实现组件配置[8-9]。Spring MVC框架的工作原理如图3所示,当 Dispatcher Servlet接到用户请求后,根据url查找 Handler Mapping 把请求分派给相应的Handler(Controller),Controller调用相应的业务逻辑对请求进行处理,如监测数据查询服务、预警信息读取服务等,处理完成后返回一个 ModelAndView给Dispatcher Servlet,最后由View Resolver把返回的 ModelAndView 渲染到对应的JSP。

图3 Spring MVC原理图Fig.3 The schematic diagram showing the principle of Spring MVC

1.2.2 数据持久化

(1)MyBatis框架

MyBatis 是持久层框架,它支持定制化 SQL、存储过程以及高级映射。它可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs (Plain Old Java Objects,普通的Java对象) 映射成数据库中的记录[10]。

MyBatis应用程序根据XML配置文件创建SQLSessionFactory,SQLSessionFactory根据配置获取SQLSession。SQLSession包含了执行SQL语句所需要的所有方法,可通过SQLSession实例直接运行映射的SQL语句,完成对数据的增删改查和事务提交等数据库操作。

(2)数据缓存EhCache

目前平台的相关业务流程都依附于对MySQL数据库的访问,高并发和大数据量的访问会给MySQL数据库带来非常大的压力,通过内存缓存机制,可以改进这一问题。EhCache 是一个纯Java的进程内缓存框架,是一种应用广泛的分布式缓存[11],可用于实现Java企业级应用中的轻量级缓存容器;同时,具有内存和磁盘存储、缓存加载器、缓存扩展、缓存异常处理、缓存过滤器、支持REST和SOAP API等特点。平台利用EhCache可较好地缓解数据库压力,减少服务器响应时间,提升用户使用体验。

2 监测与预警

2.1 数据集成与可视化

2.1.1 GIS数据集成

本项目GIS基础平台采用了国家测绘地理信息局监制的天地图,它是运行于互联网环境的国家地理信息公众服务平台,是中国数据资源最全的地理信息服务平台。天地图可通过二次开发API提供地理信息服务资源的增值应用,该API由JavaScript语言编写,用户可基于该API进行二次开发,开发定制化的Web地图应用[12-13]。

基于该API可实现将空间数据与地图数据的集成,并完成多种展示效果,基础地图数据通过Map类加载地图图层(Layer)对象实现地图展示,平台需在地图中集成展示的空间数据有矢量数据和栅格数据。

(1)矢量数据

包括灾害监测区域、行政区域等面数据,通过构建Polygon类实现地图上的面对象展示。路径、河流等线数据,可利用Polyline类在地图上进行折线线段展示。监测设备通常单个部署,体现在地图上是点数据类型,可通过Marker类实现在地图上的点标注。

(2)栅格数据

包括卫星影像数据、高清航拍数据、地形数据等,将数据发布成WMS服务后,利用API中的Tile.layer自定义图层类构造WMS图层,可实现栅格数据与地图数据的叠加展示。

GIS数据的集成流程如图 4所示,栅格数据可由GeoServer或者ArcGIS Server等第三方的GIS服务器将栅格数据文件发布为WMS服务,由API叠加到天地图的底图上展示。矢量数据通过Java服务端程序访问数据库,获取到点、线、面相关的坐标数据,用WebService方式提供给前端,API将坐标数据构建出相应的数据对象后加载到地图上完成绘制。

2.1.2 监测数据可视化

(1)数据获取

监测数据由部署在监测现场的传感器采集获得,经过MCU模块进行基本的转换处理与数据封装后,由传输模块通过TCP/IP协议发送到位于互联网上的服务器端,服务器端通过前端接收程序对数据进行解析和预处理后,存入数据库保存。在平台运行中,业务逻辑层根据Web端的应用服务请求,将数据库中数据进行筛选、处理后返回给Web端,从而实现基于监测数据的可视化、数据分析、报表操作等一系列面向最终用户的功能(图 5)。

(2)优化查询与数据可视化

监测预警的应用中,仅查看当前监测的实时值难以进行科学评估,因此,平台除了显示实时监测值以外,还需要以图形化方式对历史数据进行直观的动态分析对比,以了解灾害孕育过程、发展趋势,便于总结客观规律,提升防灾水平。常见的地质灾害监测包括雨量、深部位移、表面位移、裂缝、土体含水率等十余种数据类型,且平台运行将积累海量的数据,因此数据查询及图形化展示效率都需优化设计。

为提升数据查询效率,平台采用EhCache配合MySQL实现数据缓存,作为进程内的缓存框架,能够获得比磁盘数据库更高的访问效率,减少从数据库大量数据中检索的耗时。平台数据库中的监测数据将最近1个月内数据置入缓存以便快速检索,数据元素以K-V形式存放,采用LRU(Least Recently Used,最近最少使用)策略维护以提高命中率。即缓存元素带有时间戳属性,被访问后将更新该时间戳,当缓存容量不足需进行数据淘汰时,时间戳离当前时间最远的缓存元素将被清出;如果缓存中无所需数据,将直读数据库并写入缓存以提高下次访问命中概率。

图4 GIS数据集成Fig.4 GIS data integration

图5 监测数据应用流程Fig.5 The application flow chart for the monitoring data

数据动态图表展示可更直观地呈现灾害点监测项的变化情况,为在浏览器端实现良好的图表展示效果,平台采用了JavaScript技术实现的可视化库ECharts[14]。它可以流畅地运行在 PC 和移动设备上并兼容当前绝大部分浏览器,底层依赖轻量级的矢量图形库 ZRender,可提供直观、交互丰富、可高度个性化定制的数据可视化图表;同时,ECharts通过增量渲染技术,支持Canvas/SVG 双引擎渲染,能够实现千万级数据量的渲染[15]。平台基于ECharts库能够实现前端对大量监测数据的图表可视化渲染,并且具有流畅的动态效果。其应用流程如图 6所示。

图6 ECharts应用流程Fig.6 The process of ECharts application

服务端检索的数据将进行基本的封装,生成JSON数据对象作为图表曲线数据项,通过定义tooltip、toolbox、xAxis、yAxis等内容配置图表的展示选项,在创建ECharts实例后,加载数据及配置项即可在页面实现图表渲染。渲染效果如图 7所示,图中加载了小时雨量数据(柱状)以及地下深部3个位移量(曲线)。

2.2 风险预警处理

2.2.1 预警设置

地质灾害常见的监测内容包括地表变形、深部变形、地下水、气象监测等,不同的监测内容采用不同的监测方法(表 1)。

表 1 地灾预警中常见的监测方法Table 1 Some common monitoring methods in disaster warning

风险预警按国家标准划分为注意、警示、警戒、警报4个等级,平台预警方案设计中主要有传统的单体阈值预警及基于大数据的机器学习预警2种类型。

(1)阈值预警

通常一个灾害点会部署多种监测设备,对于一个灾害点开展监测工作时,需进行地质背景调查、灾害发育特征研究等前期工作,针对降雨、变形等因素确定主要灾害因子,并利用数值模拟等研究方法,针对诸如降雨量、变形量、地下水位等不同监测内容采用不同的定量值进行阈值划分,对应不同的预警级别。平台针对各监测设备设定不同级别的警报阈值,实时监测数据读入时将与该设备设定阈值进行对比,根据数值区间触发警报事件。

图7 ECharts数据加载Fig.7 Diagram showing the data load of ECharts

(2)机器学习预警

平台运行期将积累大量监测数据,也会产生一定量的具有风险级别的预警记录。对大量的监测预警数据进行挖掘,通过机器学习的方式对实时监测数据进行分析,构建监测预警模型算法,可丰富预警手段,并且与阈值预警互补,可获得更为准确的预警结果。

平台利用机器学习算法中基于KD树的K最近邻分类算法(kNN),通过对历史监测预警数据进行训练,进行有监督的机器学习,构建训练模型,利用该模型对实时监测数据进行分类,得出对应的预警等级。kNN算法的核心思想是根据一个样本的特征空间中k个最相邻样本大多数所属的类别,来判定该样本的类别[16]。在平台设计中,将监测数据进行预处理后,如将单位时间累积变形量、变形速率、24小时降雨量、当前地下水位等数据作为计算属性,根据当前预警级别作为分类结果进行训练,当有新的监测数据读入后,根据当前训练模型进行计算,得出分类结果并存入数据库。机器学习预警流程如图 8所示。

图8 机器学习预警流程Fig.8 The process of machine learning warning

2.2.2 警情推送

根据阈值或者机器学习模型判断出的预警级别将存至数据库,并将预警结果进行推送提醒。从服务器到浏览器端的预警推送采用WebSocket实现,它是HTML5提供的一种在单个 TCP 连接上进行全双工通信的协议[17]。在其API中,浏览器和服务器只需进行握手即可形成数据通道,实现数据通信。

平台浏览器端采用了SockJS库,它提供了一个连贯的、跨浏览器的JavaScript API,可创建一个低延迟、全双工、跨域的WebSocket通道,且具有良好的浏览器兼容性,优先使用原生WebSocket,在不支持WebSocket的浏览器中,会自动降为轮询的方式。平台服务端架构中的Spring4可直接实现对WebSocket协议的支持。浏览器端只需要利用SockJS库中的WebSocket类建立起与服务端的连接后,即可接收服务端发送的实时消息推送。

预警信息以上述方式由服务端将封装了预警内容的JSON数据发送到浏览器端,浏览器端解析后在页面呈现报警信息(图9)。

3 应用实例

为验证系统设计的可行性与稳定性,将该平台在深圳市盐田区、宝安区等80多个监测对象进行了集成应用,共计接入了180余台各种类型的监测设备。通过一年多的运行测试,系统达到了预期的设计目标,在SOA的设计框架下实现对监测对象及实时监测数据的管理,能够根据监测数据情况推送预警信息,并正常完成了其他业务系统功能。系统的应用,验证了系统可实现实时的监测,为系统在地质灾害监测与预警方面的应用提供了一定的经验。

实现SOA架构的平台运行效果如图 10所示,平台基于WebGIS实现,可基于地理坐标在地图上显示接入灾害监测点,界面左侧是功能列表,右侧地图区域为综合业务展示区,可集成地图展示数据及进行所需业务操作:图10-A加载了视图区域内的灾害监测点,并对位置接近的点进行了聚合展示处理;监测数据可动态绘图,图10-B是选择了监测对象中的雨量计设备后,对选定时间段日降雨量和累计雨量的图形化展示;图10-C是设备的业务操作界面,可对监测设备多条件检索进行状态维护,以及设定预警阈值等相关操作;图10-D为机器学习预警设置界面,可进行相关参数设定,并显示当前风险状态,当达到风险级别时后台会进行推送。

图9 预警推送显示Fig.9 Display of warning information pushing

图10 平台运行效果Fig.10 Diagram showing the platform operation effect(A)灾害点分布与地理信息; (B)监测数据接入与图表展示;(C)监测设备查询管理; (D)机器学习预警设置与展示

4 结论

监测预警平台的建设涉及多类异构数据的集成与展示,采用SOA架构将数据作为数据服务进行发布,能更好地实现系统业务功能的集成,及更好的可扩展性与兼容性;同时,便于实现前端展示与后台业务逻辑的分离,充分体现了低耦合、高内聚的软件设计思想,可较好地满足地质灾害监测与预警平台建设的需求。

猜你喜欢
监测数据浏览器灾害
河南郑州“7·20”特大暴雨灾害的警示及应对
推动灾害防治工作实现新跨越
反浏览器指纹追踪
GSM-R接口监测数据精确地理化方法及应用
地球变暖——最大的气象灾害
环球浏览器
环评中引用大气现状监测数据的研究
GPS异常监测数据的关联负选择分步识别算法
基于小波函数对GNSS监测数据降噪的应用研究
《灾害来临怎么办?》