地震数据处理系统Earthworm在福建地震预警系统项目中的应用1
2018-06-01方伟华周蓝捷李文惠
方伟华 周蓝捷 闫 培 李文惠 汪 豪
地震数据处理系统Earthworm在福建地震预警系统项目中的应用1
方伟华 周蓝捷 闫 培 李文惠 汪 豪
(厦门地震勘测研究中心,厦门 361021)
本文介绍了USGS(美国地质勘探局)开发的Earthworm系统在福建地震预警系统项目中的应用。该系统为开源软件,由C语言编写,由不同模块组建而成,每个模块实现不同的功能,主要包括数据接收模块、P波拾取模块、地震定位报告产出模块、地震事件图件绘制模块、地震波存储容器等。同时,用户可以根据自己的需求编写相应的功能模块。文章对该系统的应用进行了介绍,内容包括Earthworm系统的组织架构、业务流程、软件模块的主要功能搭建与配置及软件模块之间的逻辑关系等,目的在于介绍该系统的架构方法与使用心得,促进该系统在地震行业内得到应用与推广。
Earthworm USGS 简易烈度计 数据处理系统
引言
福建省地震预警项目简易烈度计台网系统用于评估地震对乡镇的影响,每个乡镇布置一个测站,按平均台间距10km左右设置,单台定位精度平均小于5km,最大不超过8km,运行维护率≥90%。目前福建省地震预警系统的总体规划分两期实施:一期在地震活动性较强或者地震影响较大的地区,选择人口较多和经济发达区域进行设备安装;二期在建设地区,如闽西与闽北农村山区等地稀疏布点。地震台网数据处理系统主要采用Earthworm进行搭建,拟在全省布设900台简易烈度计。该数据处理系统由C语言编写,由不同模块组建而成,每个模块实现不同的功能。该系统自从2015年6月正式运行以来,能够正常接收各地震台站的实时波形数据,从而实现地震台网中心地震速报、数据产出、数据管理等各项功能(王喆,2006)。
本文介绍了由美国地质勘探局开发的Earthworm系统的设计目标、思想和原则,重点介绍了Earthworm框架结构与各模块功能的搭建与配置、Earthworm系统的架构特点、主要工作原理和数据处理流程,以及其应用于福建省地震预警项目的相关情况(吴永权等,2010)。
1 Earthworm简介
Earthworm项目始于1993年,主要目的是为了解决美国地震区域台网出现的问题。当时,区域内的地震台网存在的主要问题有:观测设备陈旧,自动处理系统老化,维修费用逐年增长;仪器性能落后,地震研究的发展需要从精密传感器中获取研究数据;社会公众需要新的、显而易见的实时产品了解详情;最后,经费不足导致大多数台网不再支持区域系统的发展工作。
为了更好解决服务器老旧与新地震观测仪器相结合的问题,Earthworm项目应运而生。
1.1 Earthworm的特点
Earthworm系统是以避免早期地震处理系统的设计缺陷,保证地震预警的顺利实施为目标而建设的。系统具有以下5个方面的优点:
(1)模块化:在硬件以及软件方面,系统把所执行的每一个函数封装成一个模块,该模块能独立于其他模块运行。模块化使得系统内的任何一个关键性模块能与系统内的其他模块保持独立。因此,新的试验性需求模块可以在不破坏现有系统的基础上添加并保证良好的性能。
(2)系统独立性:由于不同的模块可独立运行在不同的计算机硬件和操作系统中,并作为一个系统运转,因此该系统可以无中断、在任意操作系统的计算机之间移植。在实际运用中,只使用各种计算机系统标准化的部分,而不使用任何无法规避的系统特殊功能。
(3)可扩展性:该系统提供较好的性价比以适应各种类型层次的网络需求。同时,用户可定制个性的需求,编写新的模块运行。
(4)连通性:该系统能够实现与其它自动实时系统、互动分析系统以及各种发布方式之间快速可靠地通信。其目标是在各层次提供自动和交互式的接口,使系统的配置范围可以从完全单机独立操作到分布式系统单个节点的运行。
(5)鲁棒性:在地震危机时刻,由于输入数据和电源可能中断、系统负荷急剧增加,只有高鲁棒性的地震报警系统才能向媒体和应急机构提供实时准确信息。该系统针对地震处理数据的错误检测及恢复、恢复时间、故障弱化和负荷控制等问题具有极好的可靠性(马强,2008)。
1.2 Earthworm框架的特点
Earthworm系统中每个模块都执行特定的任务,如数据采集,震相拾取等。模块之间通过广播和监听(如波形数据包和相位捡拾等)各种消息来通信。消息传递类似于无线电通讯:它由用于传递消息的“传输媒介”和一套标准模块程序组成。这些模块程序类似于运行在传输媒介中的多频率双向无线电设备。在传输媒介上模块可以使用这些标准程序广播并监听。
2 Earthworm地震数据处理系统的架构与功能模块
福建省简易烈度台网设备一期规模为300台左右,通过中国电信的MPLS VPN组网方式将数据传输至厦门地震勘测研究中心与福建省地震局。每个观测台站提供2M SDH链路带宽供烈度计上报数据使用,省局与厦门地震勘测研究中心分别采用一条10M光纤汇聚专线接入中国电信VPN平台,用于收集各观测台站数据。对于部分未铺设SDH链路的区域,采用3G信号进行辅助接入Earthworm的地震预警软件框架系统。
基于Earthworm地震数据处理系统的架构采用积木式组合的方式进行搭建(图1),主要包括:
第1部分,数据接收,通过MPLS VPN组网方式将各台网观测的烈度计产生的数据在数据中心进行汇聚,主要采用Paler2ew模块进行功能搭建;
第2部分,地震波形展示,主要采用wave_server模块进行功能搭建;
第3部分,地震数据处理,主要采用pick_eew、tcpd、ShakeMap的模块进行功能搭建,pick_eew模块负责自动震相拾取功能,tcpd模块负责地震定位与震级计算功能,ShakeMap模块负责烈度图绘制功能;
第4部分,地震数据存储,主要采用Tbuf2mseed、Ewmseed Archiver的模块进行功能搭建,Tbuf2mseed模块负责进行数据格式转换功能,Ewmseed Archiver模块负责进行数据文件存档的功能。
3 Earthworm的安装步骤与配置
3.1 Earthworm源码包的获取
可以通过网址http://folkworm.ceri.memphis.edu/ew-doc/#overview下载最新的Earthworm安装源码包进行安装。目前福建省烈度计系统采用的最新版已更新为v7.9版,版本之间的主要区别在于系统模块功能的差异(Earthworm官方网址,2015)。
3.2 Earthworm源码包目录结构说明
Earthworm源码包目录结构主要有bin,environment,ewdoc,include,include_app,params,src,lib等,下面分别对该源码目录功能进行解释:
(1)bin目录为系统可执行程序存放位置;
(2)environment目录为系统环境变量存放位置;
(3)include目录为系统文件存放位置;
(4)include_app目录为系统程序应用存放位置;
(5)params目录为各程序参数配置文件存放位置;
(6)src目录为软件源码存放位置,可单独重新编译;
(7)lib目录为程序执行所依赖库文件存放位置。
3.3 Earthworm的安装与调试
(1)安装Earthworm前的环境准备
在安装Earthworm前,系统需要先安装make、gcc、java这3个软件,用于对Earthworm的程序包进行编译,3个软件的安装均可以通过yum源进行安装,命令如下:
yum install –y make&& yum install –y gcc&& yum install–y java
(2)创建安装目录结构
当前系统采用的是CentOS 7,64位操作系统进行搭建,我们在根目录下创建一级目录xmzk,然后再创建二级目录earthworm,earthworm目录下分别创建run目录与earthworm_7.9源码包,然后在run目录下分别创建params目录与logs目录,目录结构如下所示:
/xmzk
/earthworm
/run
/params(各程序参数配置位置)
/logs(各程序日志文件存放位置)
/data(各台站接收数据存放位置)
/earthworm_v7.9(源码包)
(3)拷贝全局参数与环境变量至安装目录
将/xmzk/earthworm/earthworm_v7.9/environment目录中的earthworm_global.d、earthworm. d、ew_linux.bash这3个文件拷贝至/xmzk/earthwom/run/params中。
(4)修改安装环境配置文件
安装Earthworm需要变更第二步拷贝至/xmzk/earthwom/run/params中的ew_linux.bash这个环境配置文件中几处环境变量的值,以适应我们自己的安装环境与配置需求,主要有以下6处需要变更:
①export EW_HOME=/home/xmzk/earthworm #定义Earthworm安装位置的环境变量
②export EW_VERSION=earthworm_7.9 #定义Earthworm版本的环境变量
③export EW_RUN_DIR=/home/xmzk/earthworm/run #定义Earthworm运行位置的环境变量
④export EW_PARAMS=/home/xmzk/earthworm/run/params #定义Earthworm各模块参数档位置的环境变量
⑤export EW_LOG=/home/xmzk/earthworm/run/logs #定义Earthworm日志文件存放位置的环境变量
⑥export EW_DATA_DIR=/home/xmzk/earthworm/run/data #定义Earthworm波形数据文件存放位置的环境变量
(5)拷贝启动文件
拷贝Earthworm源码包里params文件夹中的“startstop_unix.d”启动程序至/home/xmzk/ earthworm/run/params中,并根据自己的环境在文件中增加与删除功能模块。
(6)Earthworm运行与开机自启动
打开终端命令行,键入“startstop”命令开启Earthworm,如果命令行中提示各模块为alive说明earthworm运行正常,如有些模块出现zoombi的字样说明该模块未正常工作,需单独检查该模块,逐一排错,对其重新加载或编译。
4 模块功能搭建与配置档案设置
4.1 单一模块功能在系统中的添加安装步骤
可以通过以下几个步骤添加任一模块功能:
第一步:编译该模块的源码,编译模块功能命令:make–f makefile name(模块名称),执行完可生成该模块的可执行程序;
第二步:将编译完成后的可执行程序拷贝至/xmzk/earthworm/earthworm_v7.9/bin目录下;
第三步:修改earthworm.d文件,在earthworm.d文档中新增写入该模块名称id与该模块数据类型,使得Earthworm系统可识别出该模块;
第四步:复制该模块的参数配置文件拷入/home/xmzk/earthworm/run/params中;
第五步:修改startstop.d文件,增加新的模块,在startstop.d文档中写入该模块的执行文件名称与配置文件名称。startstop.d参数档的作用主要是定义ring的个数与定义需要开启多少模块,需要开启的模块功能均需写入该文件中;
第六步:执行recon命令,重载startstop_unix.d文件,即可将该模块加载到现在运行的Earthworm环境中。
4.2 数据接收模块的关键参数配置与说明
该模块主要通过修改/home/xmzk/earthworm/run/params/palert2ew.d的参数文件进行配置,其主要参数设置说明如下:
# 参数设置 参数说明
01 MyModuleId MOD_PALERT2EW #该模板实例的模块ID号
02 RingName WAVE_RING #用于输入/输出的共享内存
03 ServerIP 127.0.0.1 #接收套接字的服务器IP地址
04 ServerPort 23000 #接收套接字的服务器端口
4.3 数据流服务模块的关键参数配置与说明
该模块主要通过修改/home/xmzk/earthworm/run/params/Wave_serverV.d的参数文件进行配置,其主要参数设置说明如下:
# 参数设置 参数说明
01 MyModuleId MOD_WAVESERVERV # wave_server的模块ID号
02 RingName WAVE_RING #定义从中获取数据的传输内存池的名称
03 ServerIPAdr 0.0.0.0 #定义运行wave_server的机器的IP地址
0.0.0.0绑定到所有本地可用的IP
04 ServerPort 16022 #配置用于接收请求和发送波的端口号
05 TankStructFile /home/xmzk/earthworm/run/data/p1000-1z.str
#定义tank格式数据结构
# SCNL Record Logo File Size Index Size File Name New
# names size(TYPE_TRACEBUF2 only) (megabytes) (max breaks) (full path) Tank
#EIZ SECTION
06 TankStructFile2 /home/xmzk/earthworm/run/data/p1000-2z.str
#定义tanks格式数据结构
07 Tank D2301 EIZ FJ 00 464 INST_WILDCARD MOD_WILDCARD 40 80 /home/xmzk/earthworm/run/data/D2301_EIZ_FJ_00.tnk
#定义各台站数据接收档位置与结构
08 Tank D2302 EIZ FJ 00 464 INST_WILDCARD MOD_WILDCARD 40 80 /home/xmzk/ earthworm/run/data/D2302_EIZ_FJ_00.tnk
09 InputQueueLen 400 #要缓冲的波形数值,一般设为通道数据的两倍以上
4.4 数据处理——P波拾取模块的关键参数配置与说明
该模块主要通过修改/home/xmzk/earthworm/run/params/pick_eew.d的参数文件进行配置,其主要参数设置说明如下:
# 参数设置 参数说明
01 MyModId MOD_PICK_EEW #定义模块名称
02 StaFile "pick_palert_Z" #定义站名信息的文件名称,该文件主要是用于定义测
站是否P波识取、STA短周期加速度平均值/LTA长周
期加速度平均值的设置、Pa/Pv门槛值的设置等
03 InRing WAVE_RING #定义从哪个内存池中接收数据
04 OutRing PICK_RING #定义接数据存放至哪个内存池
05 HeartbeatInt 30 #心跳间隔,以秒为单位
06 EEWFile sta_palert_Z #P波形识取参数档名,该文件主要是定义哪些台站参
与P波识取计算,每个测站换算成gal的换算关系值,
每个测站是计算加速度还是速度等
4.5 数据处理——地震报告生成的关键配置与说明
该模块主要通过修改/home/xmzk/earthworm/run/params/tcpd.d的参数文件进行配置,其主要参数设置说明如下:
# 参数设置 参数说明
01 MyModuleId MOD_TCPD #该模板实例的模块ID
02 RingName PICK_RING #定义读取哪个共享池数据
03 RingName_out EEW_RING #定义接处理数据存放至哪个共享池
04 MagMin 0.5 #地震规模大于0.5规模,产生报告
05 MagMax 10 #地震规模小于10规模,产生报告
#------------ For Small Event #地震报告触发条件
06 Trig_tm_win 30.0 #定义每个触发站之间的P波到达时间
07 Trig_dis_win 120.0 #定义每个触发的站之间的距离
08 Active_parr_win 60.0 #定义每个站的存活时间(秒),P波到达时间和
当前时间之间
09 GetEventsFrom INST_WILDCARD MOD_WILDCARD TYPE_EEW
#该模块新创建的数据类型,必须将该类型写入
earthworm.d文件中
4.6 数据处理——烈度图生成模块的关键配置与说明
该模块主要通过修改/home/xmzk/earthworm/run/params/shakemap.d的参数文件进行配置,其主要参数设置说明如下:
# 参数设置 参数说明
01 MyModuleId MOD_SHAKEMAP #该模板实例的模块ID
02 RingName WAVE_RING #用于输入/输出共享内存池
03 LogFile 0 #0关闭磁盘日志文件;1将其打开以记录到模块
日志,但不是stderr / stdout
04 HeartBeatInterval 15 #心跳之间的秒数
# Installation Module Message Types
05 GetEventsFrom INST_WILDCARD MOD_WILDCARD TYPE_TRACEBUF2 #该模块新创建的数据类型,必须将该类型写入earthworm.d文件中
06 Report_path /home/xmzk/shakemap/ #图件生成存储位置
# 将要计算的台站信息写入该配置文件中
07 SaveSCNL D2301 FJ 00 24.4646 117.9793 0.060427 0.060427 0.060427
08 SaveSCNL D2302 FJ 00 24.0000 117.0000 0.060427 0.060427 0.060427
09 SaveSCNL D2303 FJ 00 24.0000 117.0000 0.060427 0.060427 0.060427
10 SaveSCNL D2101 FJ 00 24.5384 118.1652 0.060427 0.060427 0.060427
11 SaveSCNL D2201 FJ 00 24.5706 117.9876 0.060427 0.060427 0.060427
12 SaveSCNL D2202 FJ 00 24.6308 118.0840 0.060427 0.060427 0.060427
13 SaveSCNL D2203 FJ 00 24.0000 117.0000 0.060427 0.060427 0.060427
14 SaveSCNL D2204 FJ 00 24.0000 117.0000 0.060427 0.060427 0.060427
4.7 数据存储模块的关键配置与说明
该模块的主要通过修改/home/xmzk/earthworm/run/params/ewmseed Archiver.d的参数文件进行配置,其主要参数设置说明如下:
# 参数设置 参数说明
01 MyModuleId MOD_EWMSEEDARCHIVER #该程序的模块ID
02 RingName MSEED_RING #用于输入共享池
03 MaxLatency 1 #假设此网络的最大延迟为1分钟
04 HeartBeatInt 30 #EW内部心跳间隔(秒)
05 LogFile 2 #如果为0,不要写logfile;如果1,写入
logfile,if 2,写入模块日志但不写到
stderr/stdout文件中
# Installation Module Message Type
06 GetMsgLogo INST_WILDCARD MOD_WILDCARD TYPE_MSEED
#该模块新创建的数据类型,必须将该类型
写入earthworm.d文件中
07 MaxMsgSize 4096 #输入/输出文件最大大小(字节)
08 QueueSize 2048 #消息在输出循环缓冲区
09 Send_scnl * * * * #存储所有通道资料
10 Archive /home/xmzk/data/mseed/%Y/%n/%s/%c.D/%n.%s.%l.%c.D.%Y.%j.mseed #存储位置与格式设置
5 Earthworm系统常用命令总结
在Earthworm应用的过程中,对一些常用命令进行了总结,如表1(Earthworm官方网址,2010)。
表1 Earthworm常用命令
序号命令作 用示例 10ms2tb将miniseed文档转成tank文档ms2tb [-n max-samples] infile >> outfile 11remux_tbu将地震观测数据资料按时间进行排序remux_tbuf
6 系统运行情况
6.1 波形数据接收展示
Earthworm地震数据处理系统可以通过swarm实时波形查看工具实时查看接收到的地震波(图2),下载地址:https://volcanoes.usgs.gov/software/swarm/download.php。
图2 地震波形实时查看
6.2 Earthworm系统的硬件资源使用
福建省地震局Earthworm系统硬件配置采用一台HP DL580 Gen9服务器,4颗Inter至强E7-4820v3型号CPU,内存128GB,从系统截图(图3)观察Earthworm各模块的资源利用率相对较低。
6.3 地震共享池数据结构
Earthworm数据录入规则是一秒钟一个封包,采样数据分别录入到各自的RING中,均可通过命令sniffwave查看获取的数据结构,通过sniffwave命令查得RING中每秒钟的数据结构如图4所示,主要包括台站名称、数据封包时间、封包序列号、包长度、波长电频信号等信息。
图3 Earthworm硬件资源使用情况
图4 PICK_RING数据结构信息
6.4 地震报告产出流程
Earthworm系统在地震到来时获取4个台站数据后就可以触发计算,但还需验算,通过pick_eew进行P波拾取,再通过tcpd模块产出地震报告,主要工作流程如下:
第一步:进行autopicking工作,若autopicking的pa及pv大于执行模块参数文件设定值,则将数据放进PICK_RING里。执行模块的参数文件中提到的其中一个档案就是设定picking条件的档案;
第二步:tcpd模块会先以PICK_RING的数据进行grouping。采用Geiger method,如果RMS太大,则剔除RMS最大的测站,若小于4个测站则停止计算,若是grouping的触发测站达到6站则继续执行计算;
第三步:计算震源坐标(,,)以及发震时间。利用(,,)计算到各个测站的理论走时;
第四步:发震时间加上理论走时,就是理论到时。如理论到时与autopicking的残差residual太大,则回到第三步,重新计算新的震源(',','),执行后续的步骤。如果residual一直无法收敛,则会将residual最大的测站剔除,再重新计算,若测站数小于4站,则停止计算。
通过该系统接收数据并进行分析,得到地震报告的产出如图5。
图5 地震事件报告
6.5 地震图件生成样式
通过系统中产生的数据得到的PGA地震加速度峰值分布图如图6所示。
图6 PGA加速度峰值分布图
7 结束语
Earthworm系统引进了搭积木式模块化架构理念,将地震数据处理功能需求整合为6个软件模块,即数据接收模块、实时波形查看、自动震相拾取、定位与震级计算、数据格式转换、数据文件存档,各模块各司其职又相互关联。各模块之间分工明确,结构简单,具有优秀系统架构的稳定性、跨平台性、安全性、可扩展性、可定制化等特点。Earthworm系统运行稳定,功能强大,深受用户好评。其模块化设计,将庞大的系统功能分布运行于多台服务器,降低软件系统对服务器的性能要求,且架构配置简单,适合在各种不同规模的地震台网进行部署,用户可以根据自己的需求采用不同方法组建系统。
马强,2008.地震预警技术研究及应用.哈尔滨:中国地震局工程力学研究所.
王喆,2006.高速铁路地震预警及快速反应系统研究.世界轨道交通,(6):44—46.
吴永权,黄文辉,2010.数据处理系统软件JOPENS的架构设计与实现.地震地磁观测与研究,31(6):59—63.
Earthworm官方网址,2015. Earthworm Documentation V7.9. (2015-04-24). http://folkworm.ceri.memphis.edu/ew-doc/.
Application of Earthworm on Earthquake Data Processing System in the Fujian Earthquake Early Warning System Project
Fang Weihua, Zhou Lanjie, Yan Pei, Li Wenhui and Wang Hao
(Xiamen Research Center of Seismic Exploration, Xiamen 361021, China)
This paper introduces the Earthworm system developed by USGS, which is an open source software and is written in C language. It consists of various modules and each module has different functions, including data receiving module, P-wave picking module, seismic positioning report output module, seismic event drawing module, and seismic wave storage module. The users can prepare the corresponding functional modules according to their own needs. In this paper we introduce the application of the system in the project of the earthquake early warning system in Fujian Province, including the organization of the Earthworm system, the business process, the main function of the software module and the logical relationship between different modules. The purpose of this paper is to provide the architecture and the application experience of the system, so that it can be applied and promoted in the earthquake study in future.
Earthworm; USGS; Facile seismic intensity meter; Data processing system
方伟华,周蓝捷,闫培,李文惠,汪豪,2018.地震数据处理系统Earthworm在福建地震预警系统项目中的应用.震灾防御技术,13(1):226—236.
10.11899/zzfy20180121
福建省简易烈度计项目(项目编号:2015DZLDY004)
2017-07-05
方伟华,男,生于1982年。工程师。主要从事地震业务系统运维工作。E-mail:258279496@qq.com