Collectors强震动台网数据处理系统的设计及实现*
2020-05-02吴华灯卢大伟廖一帆丁莉莎叶世山陈建涛
吴华灯,卢大伟,廖一帆,丁莉莎,叶世山,劳 谦,陈建涛,
黄 晖1,赵贤任1,王力伟1,卢子晋1,吕仲杭1
(1.广东省地震局,广东 广州 510070;2.中国地震局地球物理研究所,北京 100081;3.中国地震局地震监测与减灾技术重点实验室,广东 广州 510070)
0 引言
“十五”期间,国家在21个地震重点监视防御区建设了1 154个自由场固定强震动观测台、310个烈度速报子台和13个强震动观测专用台阵,建成了由一个国家强震动台网中心,东南、西南、西北3个区域强震动台网中心以及北京、天津、昆明、乌鲁木齐、兰州5个大城市地震动强度(烈度)速报中心构成的中国强震动观测台网(周雍年,2006)。在随后的“十一五”“十二五”期间,各省(市)、自治区和地方政府又投资建设了一大批强震动观测台站,台网规模不断扩大(吴华灯,叶春明,2011)。“十五”期间建成的强震动观测台网主要观测目的是获取近场强地面运动加速度记录,为工程抗震、场地效应、地震动衰减等研究提供基础数据(徐钦等,2019;王文才等,2019),台网技术系统基于触发式事件记录,兼具部分城市地震烈度速报功能(卢大伟,李小军,2010)。“十一五”“十二五”期间建成的强震动观测台站,已经向地震动强度(烈度)速报、地震预警等应用领域拓展,具备实时和触发式事件记录的功能。
但是我国建成的强震动观测台网,长期缺乏一套具备数据汇集、监控及自动处理功能于一体的强震动台网数据处理软件,大部分省(市)、自治区地震局只能利用各厂商记录器配套的上位机软件,手动收集、处理分布在辖区内的各个强震动台站的观测数据,少数几个省局主自研发或使用了第三方开发的简易版台网管理软件,半自动地实现了数据的收集和处理(刘琼仙等,2008)。总体上强震动台网数据收集和处理以人工为主,存在速度慢、效率低、工作负荷重等问题,远远满足不了日常业务工作的需要,满足不了政府、社会公众对强震发生时快速获知强震动关键参数的需求。立足强震动台网日常业务和不断拓宽的应用领域的需求,在“十二五”期间,上级主管部门大力推进强震动观测技术支撑系统的建设,笔者负责开发了一套适用于“十五”“十一五”“十二五”期间强震动观测台站的具备强震动数据采集器接口集成、数据快速汇集、数据自动处理、状态准实时监控、仪器双向命令控制、日常业务图表生成等功能的“Collectors强震动台网数据处理系统软件”。本文就该软件的整体设计思路、功能模块的实现及应用情况等方面展开介绍。
1 整体设计思路
为了更好地实现系统软件的各项功能及可跨平台、大规模分布式部署,采用JAVA SE(JAVA开发工具包)、Eclipse Java EE IDE(JAVA集成开发环境)、MySQL(数据库)、Navicat和MySQL Workbench(数据库管理工具)等工具包搭建了软件开发及运行环境。软件采用模块化设计,各模块可独立运行,软件系统技术路线如图1所示,设计思路如下:
(1)使用Navicat和MySQL Workbench设计出由15个数据表组成的底层数据库,包括台网信息表、台站信息表、设备信息表、仪器字典表、通道方向极性表、仪器参数表、地震事件波形表、功能测试波形表、台站状态表、链路状态表、远程通讯检查表、台站连通及功能测试情况上报表、地震信息表、用户信息表(受篇幅所限,数据库设计另行文介绍)(Akkaretal,2014)。系统软件在初始化时,将从系统配置表中读取相关配置信息,从台网信息表、台站信息表和设备信息表中提取台网、台站、设备等元数据信息,用于标识身份、匹配仪器接口、绘制台站位置、网络连接建立、属性信息提示。
图1 系统软件技术路线Fig.1 Technical route of the Collectors system software
(2)用Eclipse Java EE IDE开发包括ETNA,K2,GDQJ,MR-2002,GSR-18,GSMA-2400IP,ETNA2,Basalt,MR-3000,EDAS-24IP,EDAS-24GN,130REN和TDE-CA 等强震动记录器的数据接口和通信控制接口,集成到强震动台网数据处理系统上,以客户端套接字的方式连接台站的设备,实现地震事件数据的自动汇集;实现台站运行状态的多指标、精细化的监控和设备的远程控制;驱动存储机制实现有关报表信息的自动生成和运行率统计等。
(3)在汇集地震事件时,由解码模块解码三分向数据,然后驱动强震动参数计算模块,按照基线校正、计算主要频率、积分速度和位移时程、数字滤波、记录合成的数据处理流程计算PGA,PGV,PGD,IPGA和IPGV等强震动参数(1)中国地震局.2015.仪器地震烈度计算暂行规程.,再经地震消息匹配出对应台站的台站信息、地震信息、记录处理结果信息,生成强震动观测记录报告单和产出仪器烈度分布图件,进行地震烈度速报。与此同时,驱动数据同步模块,通过数据库或基于文件传输协议的方式,实现各省、自治区、直辖市强震动台网中心到各区域分中心,再到国家强震动台网中心的分级数据同步。
2 功能模块的实现
“Collectors强震动台网数据处理系统软件”是一套基于地震事件传输的强震动台网专业数据处理软件,较好地满足了当前强震动观测台网的日常业务需求。具体功能包括了强震动记录器的接口适配、全网台站运行状态准实时监控、地震事件数据自动汇集、强震动事件参数(PGA,PGV,PGD,IPGA,IPGV,反应谱)自动处理、设备远程控制、报表自动生成(远程通讯检查表、强震动记录报告单、强震动记录分析结果表、强震动观测简报)等,以下分别介绍各核心功能模块的具体实现。
2.1 强震动记录器接口适配模块
“强震动记录器的接口适配模块”是“Collectors强震动台网数据处理系统软件”的核心模块之一,数据流、状态流和控制流的适配及流向由该模块驱动实现。由于强震动记录器的种类繁多,不同类型的仪器有不同的命令集、不同的通信协议和数据格式,特别是基于事件传输的记录器(吴华灯等,2012),要实现数据流、状态流和控制流的三流汇集及分发,处理上比较复杂和繁琐,因此该模块采用了任务队列管理和线程池的技术,使复杂的问题简单化。具体操作为,在该模块中,定义了ETNA,K2,GDQJ,MR-2002,GSR-18,GSMA-2400IP,ETNA2,Basalt,MR-3000,EDAS-24IP,EDAS-24GN,130REN,TDE-CA等型号设备及与之对应的任务类别和通信命令;根据设备型号和特定的任务,建立了相应的线程池;最后,以DAO作为入口,从数据库中加载台站设备信息,匹配设备型号,建立通信连接池,驱动获取事件数据、获取状态数据和通信控制等任务,实现数据流、状态流和控制流的汇集及分发(叶世山等,2019)。程序设计的核心是,创建一个任务包task实现接口适配,包括2个枚举变量DevType和TaskType,3个类TaskBeanFactory、TaskManager和TaskExecutor:设备型号DevType用于指定需要适配接口的强震动记录器类型,任务类别TaskType定义接口适配时需要执行的诸如获取状态流、获取事件数据流、功能测试等任务;TaskBeanFactory和TaskExecutor类的作用是获取要执行的任务,TaskManager类用于建立线程、加载设备类型、执行队列中的任务。核心源代码如下:
public enum DevType {
ETNA,K2,GDQJ,MR2002,GSR18,GSMA2400IP,ETNA2,Basalt,MR3000,EDAS24IP,EDAS24GN,130REN,TDE-CA
} /*强震动记录器类型*/
public enum TaskType{
STA,EVENT,CONTROL,FT
}/*定义任务类型*/
public class TaskBeanFactory implements ApplicationContextAware {
public TaskExecutor getTask(String devType,String taskName){
return(TaskExecutor);
}
}/*获取要执行的任务*/
public class TaskManager {
protected TaskBeanFactory taskBeanFactory;
threads = Executors.newFixedThreadPool(thread Num);/*建立线程池*/
public void execute(TaskType type){
equipmentInfoDAO.loadEquipments(dev_type,starIndex,pageSize);
}/*加载指定的设备类型,准备执行任务*/
private void todo(EquipmentInfo eq,TaskType type){
TaskExecutor taskExecutor = taskBeanFactory.getTask();
pool.getConnect();/*建立连接*/
taskExecutor.execute(terminal,eq);/*执行任务,匹配设备类型,调用接口*/
pool.recycle(terminal);/*资源回收*/
}
}
2.2 台站运行状态准实时监控模块
强震动台网监控平台是“Collectors强震动台网数据处理系统软件”的一个重要组成部分,具体由“台站运行状态准实时监控模块”实现。其主要功能是实现台站运行状态的多指标、精细化监控显示和设备的远程控制,便于工作人员了解台网的整体运行情况和开展台网的日常运维管理工作。出于使用方便及技术更新的需要,该模块摒弃了笔者早期基于C/S结构的强震动台网监控平台的设计思想(叶春明等,2011),采用MVC(Model View Controller,一种软件设计模式)框架重新进行了设计,以求做到软件前后端分离,易于分布式部署。
该模块在MVC框架下,结合“强震动记录器的接口适配模块”和底层数据库,基于电子地图实现前端展示和交互操作,如图2所示。具体是以电子地图展示台站的位置分布和台站的关键信息,并用黑、橙、红、绿4种颜色分别标示台站通信中断、通信告警、设备告警和正常工作4种状态。主控台的状态告示栏,及时显示各种状态下台站的数量及告警的具体原因(如链路告警、电池电压过低告警、磁盘空间告警、GPS授时告警、零点电压告警等),维护人员能针对已知的具体原因开展台站的维护工作。交互操作方面,通过DAO及API,实现前端台站状态的多指标查询、台站信息查询、设备信息查询、台站触发参数查询、功能测试等远程操控。后端则按照设定的任务,周期性自动地完成每月2次的功能测试及远程通讯检查,并把测试的结果写入远程通讯检查数据表。前端的所有操作,通过图2的人机交互界面便能轻松完成。该模块的核心实现过程如下:
(1)加载电子地图。在html页面中指定地图数据源,并在javascript代码中创建地图实例,通过API接口,调用地图数据源,实现地图的加载。
/*在html页面中指定地图数据源*/
>script type="text/javascript"src="http://api.map.baidu.com/api?v=2.0&ak=NU..">
>/script>
/*在javascript代码中创建地图实例*/
map = new BMap.Map("map");
(2)展示台站信息及状态。通过前端的接口类MapDao和javascript代码中的getTitle,getMsg和statusInfo方法,在地图上实现台站信息提示及设备状态的准实时告警,代码如下:
/*用javascript代码实现台站信息提示*/
function getTitle(eq){
return eq.sta_code+" "+eq.sta_cname+"["+eq.recorder_model+"](经度:"+eq.lon+",纬度:"+eq.lat+")IP/port:"+eq.ip+":"+eq.port+" "
+getMsg(eq,eq.status)
}
/*用javascript代码展示设备状态告警信息*/
function statusInfo(status){
var title = "";
var img = "";
if(status==1){
title = "通信中断";
img = "";
}else if(status==2){
title = "通信告警";
img = "";
}else if(status==3){
title = "告警";
img = ""
}else if(status==0){
title = "正常"
img = "";
}
for(var i=0;i>length;i++){
html+=′>li>′
html+=′>span>>/span>′
html+=′>a href="javascript:;" class="ellipsis" >>span >′
+datas[i].sta_code+′>/span>′+getMsg(datas[i],status)+′>i>>/i>>/a>′
html+=′>label>′+ new
Date(datas[i].lastUpdateTime*1000).toLocaleTimeString()+">/label>"
html+=′>/li>′
}
……
}
(3)人机交互。通过前端的html页面、InfoDAO接口类、InfoMapper类和后端的API相互结合,实现从监控平台的电子地图上控制设备。
图2 Collectors强震动台网监控平台Fig.2 Collectors monitoring platform for strong motion observation network
2.3 事件数据自动汇集模块
事件数据自动快速汇集是进行地震烈度速报的先决条件。在业务逻辑层,该模块依托“强震动记录器的接口模块”,联合“强震动事件参数自动处理模块”,解码并计算出入库的参数,按照数据库和文件存储方式(Anchetaetal,2014),实现对各个台站的事件数据流归档存储。存储的内容包括地震事件ID、台站事件名、台网代码、台站代码、台站名称、采样率、采样点个数、记录长度、记录开始时间、记录结束时间、三通道的PGA和PGV、仪器烈度、事件类型、提交时间、操作者等,存储的结果信息,如图3所示。存储过程的核心程序如下:
WaveformEvent w = new WaveformEvent();
w.setEvent_id(String.valueOf(TimeUtil.date2 YMDHMS(sDate)));/*置地震事件ID*/
w.setSta_Event_name(eq.getSta_code()+w.getEvent_id());/*置台站事件名*/
w.setNet_code(eq.getNet_code());/*置台网代码*/
w.setSta_code(eq.getSta_code());/*置台站代码*/
w.setNsamples((int)event.getFileHead().getRoParams().getStream().getNscans());/*置采样点个数*/
w.setSamp_rate(event.getFileHead().getRwParams().getStream().getSps());/*置采样率*/
w.setStart_time(sDate);/*置记录开始时间*/
w.setEnd_time(eDate);/*置记录结束时间*/
w.setRec_lenth((int)duration);/*置记录长度*/
w.setEW_PGA((float)result.getEwPGA());/*置东西向PGA*/
w.setNS_PGA((float)result.getNsPGA());/*置北南向PGA*/
w.setUD_PGA((float)result.getUdPGA());/*置垂直向PGA*/
w.setEW_PGV((float)result.getEwPGV());/*置东西向PGV*/
w.setNS_PGV((float)result.getNsPGV());/*置北南向PGV*/
w.setUD_PGV((float)result.getUdPGV());/*置垂直向PGV*/
w.setIntensity((float)result.getIntensity());/*置烈度*/
w.setSub_time(new Date());/*置提交时间*/
w.setOperator("sys");/*置操作者,缺省为sys*/
w.setFlag(event.getFlags());/*置事件类型*/
w.setWaveform(event.getBs());/*存储波形文件*/
图3 事件数据展示页Fig.3 Display page of event data
2.4 强震动事件参数自动处理模块
当“强震动记录器的接口模块”驱动事件数据流接收任务时,直接解码三分向数据,并根据通道位置和极性确定正确的三分向数据。然后按照事件前20 s的样本对三分向数据进行基线校正,积分出速度和位移时程,结合仪器参数进行单位换算后,求取峰值加速度PGA、峰值速度PGV和峰值位移PGD。最后,按照“〔2015〕18号《仪器地震烈度计算暂行规程》”的烈度算法(2)中国地震局.2015.仪器地震烈度计算暂行规程.(金星等,2013),计算仪器地震烈度I。“强震动事件参数自动处理模块”实现了强震动参数的自动计算和存储入库,为强震动记录报告单、强震动记录分析结果、强震动观测简报、峰值加速度、峰值速度和仪器烈度等报表及分布图件的生成提供了可调用的结果数据(Worden,Wald,ORDEN2010),如图4所示。该模块的核心实现过程如下:
(1)解码三分向数据,从数据库中匹配通道位置和极性,确定正确的三分向数据。
(2)取事件前20 s的样本均值进行零线校正,用线性加速度法积分出速度和位移时程,求PGA,PGV值。即在程序中,按照下面的式(1)和(2),在t=0时,取Vt=0,Dt=0,逐次计算出速度和位移时程,并分别取其最大值,最后合成三分向的PGA和PGV,具体算式如下:
(1)
(2)
式中:V为速度值;A为加速度值;D为位移值;Δt为一个采样点的时间间隔;t为某个采样点的时间。
(3)计算由峰值加速度得到的仪器烈度IPGA或由峰值速度得到的IPGV:
IPGA=3.20lg(PGA)+6.59
(3)
IPGV=2.96lg(PGV)+9.78
(4)
当IPGA和IPGV均大于等于6.0时,则仪器地震烈度I取IPGV,如式(5)所示;否则取IPGA和IPGV的算术平均值,如式(6)所示:
I=IPGV(IPGV≧6.0且IPGA≧6.0)
(5)
I=(IPGV+IPGA)/2 (IPGV>6.0且IPGA>6.0)
(6)
图4 强震动参数展示页Fig.4 Display page of strong motion parameters
2.5 强震动台网交互分析数据处理模块
为方便强震动台网工作人员交互分析、校核强震动事件参数及提交事件入库,该系统软件还专门设计了桌面版的“强震动台网交互分析数据处理模块”,如图5所示。该模块的开发,力求
界面简洁、友好、易用、通用,除沿用“强震动事件参数自动处理模块”的大部分功能外,还扩充了部分常用的功能。具体包括基线校正、仿真速度、仿真位移、反应谱计算、仪器烈度计算、傅立叶谱计算、功率谱计算、自相关系数计算、波形显示、反应谱曲线显、傅立叶谱曲线显示和功率谱曲线显示、ASCII格式,MiniSEED格式和SEED格式转换、事件文件及结果参数入库等。该模块用Java SE 8实现上述数据处理方法,用JFreeChart和JCommon类库来实现波形及其他曲线图的绘制及显示。本模块的具体实现所占篇幅较大,将另外行文介绍。
图5 强震动台网交互分析数据处理软件Fig.5 Data processing software of mutual analysis for strong motion network
2.6 报表自动生成模块
因日常业务的需要,根据《强震动台网运行维护与管理细则》的规定,该模块设计了远程通讯检查报表、远程通讯及功能测试结果上报表的自动生成模板。按照选定的某个台网或某个台站的条件,由相应的模板批量自动生成指定时间内的报表,取代传统手工填报的方式,减轻了台网工作人员的劳动强度。“台站运行状态准实时监控模块”为远程通讯检查报表、远程通讯及功能测试结果上报表提供了必要的结果信息,“报表自动生成模块”仅仅需要通过DAO,从底层数据库的远程通讯检查数据表中提取信息,生成相应的报表。
3 实际应用
在可跨平台部署的新版本强震动台网数据处理系统推出之前,由笔者开发的基于C/S结构的旧版本软件已经在全国20多个省、自治区、直辖市地震局推广应用,取得了一定的效果。以地震多发区为重点服务对象,新版本“Collectors强震动台网数据处理系统”于2017年6月在云南省地震局优先升级部署,随后陆续对四川省地震局、新疆维吾尔自治区地震局、青海省地震局等10多家单位的系统软件进行了更新。截至2019年6月30日,新版本系统软件7×24 h连续、稳定、可靠、高效地运行了2年整,共记录到仪器状态数据36 441 002条,记录天然地震事件、功能测试事件和误触发事件共计1 118 669组。系统软件全流程自动化处理,除自动完成日常的智能化监控和常规标定外,在处置地震事件时,一般能在2~10 min内陆续完成地震事件的自动回收和强震动参数的自动产出,速报能力由软件推广前的小时级别跃升到分钟级别,较大程度提高了地震事件汇集与处理的速度。
以地震频度高、强度大的云南、四川、新疆3个省份的统计为例,在云南省地震局的软件系统中,入库的仪器状态记录13 690 804条,事件记录78 890组(含天然地震事件、功能测试事件和误触发事件),事件记录自动回收的平均用时为震后5分49秒,最快的回收时间为震后1分28秒,详见表1。自2017年6月至2019年6月,云南辖区内记录的3次5.0级以上地震中,剔除网络不稳定及设备故障等因素的影响,震后7分钟内,地震事件便能陆续自动完成入库并自动产出PGA,PGV,IPGA和IPGV等强震动参数结果。其中最短用时是震后1分30秒,最长用时为震后5分38秒,最大仪器地震烈度为高大台记录的6.3度,详见表2。四川省地震局入库的仪器状态记录10 431 910条,事件记录860 336组,全部事件记录自动回收的平均用时为7分38秒,最快的回收时间为1分18秒。四川省地震局事件记录回收的平均用时超出5 min,主要受台站的网络环境、MR-2002仪器设备的事件存储参数设置及MR-2002仪器设备老化等影响所致。自2017年8月7日至2019年6月17日,四川辖区内记录的5次5.0级以上地震中,地震事件记录回收及强震动参数产出最短用时为震后1分18秒,最长用时为震后8分54秒,记录得的最大仪器地震烈度为珙县中学的8.2度,详见表2。新疆维吾尔自治区地震局入库的仪器状态记录5 784 696条,事件记录26 317组,事件记录自动回收的平均用时为4分15秒,最快的回收时间为1分09秒。新版系统软件更新以来,新疆辖区内记录的4次5.0级以上地震中,地震事件记录回收及强震动参数产出最短用时为震后2分40秒,最长用时为震后4分56秒,录得的最大仪器地震烈度为卧里托乎拉格台的6.0度,具体数据见表2。
表1 数据汇集情况统计Tab.1 Statistics of data collection
表2 地震事件记录回收及强震动参数产出用时Tab.2 Time-consuming of record recycling and output of strong motion parameters
4 结论和讨论
“Collectors强震动台网数据处理系统软件”在全国推广应用以来,已经接入了近千个强震动台站的观测数据,解决了中国强震动观测台网数据汇集、监控、自动处理及日常业务处理等方面的迫切需求。系统软件全流程自动化处理,其所具备的多指标、精细化的台站状态监控及强震动参数分钟级别产出等能力,使得其在日常的台网运行维护管理和地震应急工作上,发挥了实效,用户满意度较高。同时,也存在一些值得探讨的问题:
(1)在“Collectors强震动台网数据处理系统软件”推广之际,上层业务体制发生了重大改革,一定程度上影响了该系统软件可持续的升级开发。如强震动参数产出方面,图形及图表的多样性展示是否继续投入力度;新的强震动数据采集器的接口是否还接入系统;前期基于相关管理规定定义的报表模板是否沿用,等等。而这些功能,恰恰是用户最迫切需要的,也是影响系统软件生命周期的关键所在。
(2)该系统软件的升级开发虽然受到业务体制改革的影响,但笔者认为,该系统软件无论是对于地震动衰减规律统计、场地土层反应研究、结构抗震性能分析、地震危险性分析或地震区划的数据收集方面,还是在地震烈度速报、震害快速评估等应用领域依然能发挥较大的作用。因此,该系统软件应借助数据自动汇集的优势,循序渐进地构建相应的自动处理算法模型,继续完善和拓展新功能,开展相关的应用研发。
本文及有关研究得到了中国地震局强震动观测学科组各位专家的指导以及国家强震动台网中心、云南、四川、新疆等地震局同事们的帮助和支持,在此一并致谢。