基金项目:国家自然科学基金(40674019)和中国地震局地震研究所所基金(IS200856066)联合资助.
(1.中国地震局第二监测中心,西安 710054; 2.中国地震局地震研究所,武汉 430071)
(1.Second Crust Monitoring and Application Center,CEA,Xi'an 710054,Shaanxi,China)(2.Institute of Seismology,CEA,Wuhan 430071,Hubei,China)
备注
基金项目:国家自然科学基金(40674019)和中国地震局地震研究所所基金(IS200856066)联合资助.
在掌握数据源及相关数据格式的基础上,实现了读取SSS实时流数据、数据库连续波形、事件波形数据以及SEED文件的通用获取测震数据软件包。该软件包可使应用程序通过统一数据接口获得测震数据。经测试该软件包功能完整、高效易用,提高了地震科技人员的工作效率。
We develop a universal access to seismometric data-package which can read SSS real-time streaming data,database data including continuous waveform data and earthquake-event data and the SEED waveform files based on understanding the data sources and related data formats.Thus,other applications will be able to obtain seismic data through a unified data-interface.This package has full function and is efficient,which improves the efficiency of earthquake personnel.
引言
随着“九五”和“十五”项目的建设完成,中国地震局推广的地震监测系统JOPENS在地震日常工作及大震速报方面发挥了重要作用(孙学军,姚宏,2009; 李大辉等,2001; 胡星星等,2008; 胡华灯,黄文辉,2006; 金星等,2007; 卫爱民等,2005)。随着我国社会经济的发展,政府和民众对地震行业提出了更高的要求,快速、实时利用数字地震波形开展地震学相关学科的研究、地震预警、震源参数反演、“新参数地震目录”的产生(付虹等,2009; 万柯松等,2009; 陈运泰,吴忠良,1999)等工作已提上日程。但JOPENS没有提供二次开发的接口,地震科技工作者在获取地震数据时面临很多难题,尤其是测震数据存在多数据源的情况,如JOPENS/SSS实时测震流数据、来自JOPENS数据库的连续波形数据和事件波形数据、SEED波形文件等,并且这些数据的格式繁多复杂,需要了解这些数据的存储方式、格式等。针对这些问题,本研究开发的软件包将提供一个简单、可靠、统一的方案,可读取不同数据源的测震数据,从而方便后期数据的处理。
1 总体结构
本软件包的主要功能是为应用程序提供一个统一的获取测震数据的平台。根据数据源的不同,本软件包分为3个独立的模块,总体模块图如图1所示,分别为:SSS流数据处理模块、JOPENS数据库处理模块、SEED文件处理模块。SSS流数据处理模块用来读取SSS服务器的实时测震数据,JOPENS数据库处理模块用于处理JOPENS数据库中的连续波形和事件波形数据,SEED文件处理模块用于读取SEED波形文件。这些模块分别将不同的数据转换为统一数据格式,最终为应用程序提供指定台站、通道、采样率的测震数据。本软件包基于.NET3.0平台,采用C#语言开发,具有使用简单、完全面向对象、层次清晰、效率高等优点。
2 统一数据接口
为了能够提供统一的数据接口,本软件包自行定义了对外的统一数据接口S_data。三大模块将获取到的原始数据转换为统一的格式,最后由S_data统一提供给应用程序。下面是统一数据接口S_data相关数据结构的定义。图2为统一数据接口类的结构图。
类S_Sation_data用来存放单个台站数据。channels_name是存储该台站中所有通道名称的数组,channels是存放该台站所有通道原始数据的数组。
方法getData_Time()和getStreamData_Time()根据指定台站名、通道名和采样率获取测震数据。当前测震数据的采样率通常为100 Hz,数据量很大,同一台站同一通道一天记录的数据达到8 640 000个,存在计算量大的困难,用户可能需要不同采样率的数据来满足不同的需求,因此本软件包提供了自行设定采样率的功能。方法getStreamData_Time()用于获取流数据。方法getData_Time()应用于读取数据库和SEED文件数据。
3 流数据处理模块
3.1 NetSeis/IP流服务协议目前“十五”项目测震台网采用SSS流服务器来负责接收和分发近实时波形数据,该服务遵守NetSeis/IP流服务协议,默认采用5000端口提供实时地震数据流。NetSeis/IP协议类似FTP协议,主要参考了美国Albuquerque Seismological Laboratory(ASL)的LISS协议和TCP/IP协议,用于传送实时地震波形数据(李卫东,梁兆东,2008)。
3.2 设计思路本模块共有两个线程——控制线程和接收数据线程。控制线程负责初始化SSS服务器连接、获取数据端口和创建接收数据线程; 接收数据线程负责创建数据连接、接收数据、处理解压缩数据并将其转换为统一格式供应用程序使用。
当控制线程连接到SSS服务器时,服务器将验证用户名和密码,通过身份验证后控制线程发送PASV RT命令,SSS服务器收到命令后,动态分配一个数据端口。接收数据线程连接到此端口上,再发送RETR命令,SSS服务器收到命令后,验证请求的台站数据可被下载后,通过该数据端口将请求的台站波形数据发送给接收数据线程。本模块的程序流程图见图3。接收数据线程从SSS服务器上接收的数据实际上是大小为512字节的纯数据SEED卷(Mini-SEED数据)。该卷包含有固定头段部分(48字节)和数据部分,总长度512个字节,主要记录台站名、通道名、记录起始时间、样本数目、测震数据等(中国地震局,2003)。每次接收的纯数据SEED帧中的样本数目并不完全一
4 JOPENS数据库处理模块
JOPENS系统使用数据库存储系统接收和产出的各种数据。JOPENS系统使用的数据库为开源数据库MySQL,当前使用的版本为MySQL 5.1。
4.1 NET平台连接MySQLMySQL官方提供了MySQL Connector/NET数据库驱动(李波,2005),使得在.NET平台下连接MySQL数据库十分简便。本模块采用MySQL Connector/Net 6.1.3作为连接MySQL的驱动。Connector/NET是一个纯C#语言编写的全面托管的ADO.NET驱动程序,并实现了ADO.NET所有接口,给开发人员提供了一种安全、高性能的与MySQL数据连接的方案。
4.2 设计思路JOPENS数据库中有事件波形和连续波形数据,这两种数据存储结构略有不同,但主要的数据格式是相同的,所以把它们的处理整合在一个模块中。首先,根据数据库服务器相应参数创建连接。数据库连接创建成功以后,根据应用程序的不同要求来构建合适的查询语句,接着执行该查询语句。获得相应的数据以后,再进行解压缩并转换为统一的数据格式,最后关闭数据库连接。本模块的程序流程见图4。
5 SEED文件处理模块
SEED格式是一个针对数字地震波形数据交换的国际通用格式,它是为地震学界的应用而设计的,主要是用于各个机构之间交换未经处理的地面运动数据(中国地震局,2003)。
5.1 SEED结构分析以下仅以JOPENS-MSDP产出的2.3版SEED文件进行简单介绍。SEED格式文件包括SEEDVOLUME文件和Mini-SEED文件,SEEDVOLUME文件包括控制头段和波形数据两部分,Mini-SEED文件仅包括波形数据部分。在SEEDVOLUME文件中,控制头段部分以ASCII格式存储,波形数据以二进制格式存储。从物理上划分,文件由若干个逻辑卷组成,每卷为4 096字节。每个逻辑卷以一个8字节的ID子块开始,后跟4 088字节的不同类型的控制头段及其子块。存储时每个控制头段会根据其长度可能占一个或多个逻辑卷,当一个逻辑卷存放不下时,就开始一个新的逻辑卷存储。图5为完整SEED文件的存储结构。
5.2 设计思路SEED控制头段内容丰富、结构复杂,在实际应用中可按不同要求在需要的卷中根据子块类型读取所需要的内容。例如若需要台站列表,那么只需读取卷索引控制头段中的卷台站头段索引子块; 而台站的具体信息可以读取台站控制头段; 数据卷的存储采用了压缩策略,在使用数据时需要对数据进行解压缩,具体解压缩算法可参考《地震波形数据交换格式》附录B(中国地震局,2003)。图6是SEED文件处理模块的流程图,已
经有资料实现类Pascal编写读取SEED数据文件的程序(刘胜国,贾庆华,2004)。
6 应用实例
6.1 软件包中类及其主要成员介绍本研究中开发的测震数据获取软件包中有S_data、clsStreamReader、clsDatabaseReader、clsSeedReader 4个类,其中S_data为统一数据接口,在前面已经介绍过; clsStreamReader用来读取SSS流数据,clsDatabaseReader用来读取数据库中的连续和事件波形,clsSeedReader则是用于获取SEED文件数据。表1为软件包中类及其主要数据、函数成员介绍。
在.NET环境中使用本软件包,首先需要添加UDSDAP.DLL文件到C#工程中引用,使用using UDSDAP来引用UDSDAP命名空间。UDSDAP.DLL是本软件包生成的动态链接库的文件名。
6.2 读取实时测震流数据实例本例为读取湖北兴山台(XSH)和房县台(FXI)的实时测震流数据的过程。图7为本实例的流程图。
6.3 读取JOPENS数据库实例从JOPENS数据库中获取2010年3月4日兴山台和房县台一天的连续地震波形数据。图8为本实例的流程图。
从JOPENS数据库中获取事件编号为HB.201003091844.0002地震波形数据。图9为读取JOPENS数据库地震事件波形的流程图。
7 结语
本软件包完全实现了既定功能要求,能方便、准确地获取测震数据,让地震科研人员更方便地进行测震数据应用开发及分析处理工作。为了使它适用于更广泛的领域,应考虑进一步补充完善本软件,支持更多的数据源,如EVT格式的数据等。另外,在处理中国地震台网中心产出的SEED文件时,出现过台站索引与数据卷中的台站对应不上的问题,即数据卷中的台站数量比索引中的多,发生这种情况时,只能以索引中的台站为准。
衷心感谢中国地震局地震研究所李胜乐研究员对笔者的悉心指导和对本软件包及论文的宝贵意见。
- 陈运泰,吴忠良.1999.中国数字地震学的发展战略问题[J].国际地震动态,(5):1-5.
- 付虹,王绍晋,龙晓帆,等.2009.利用数字化速度波形和仿真位移波形资料求解震源机制解的比较[J].地震研究,32(1):18-24.
- 胡华灯,黄文辉.2006.广东地震台网测震数据库管理系统[J].地震地磁观测与研究,26(2):66-71.
- 胡星星,滕云田,王喜珍,等.2008.地震波形数据实时监控软件的实现[J].地震地磁观测与研究,29(1):104-108.
- 金星,陈绯雯,廖诗荣.2007.区域数字地震台网实时速度系统试运行情况分析[J].地震地磁观测与研究,28(2):50-54.
- 李波.2005.ASP.NET与SQL SERVER、ORACLE和Mysql数据库的连接[J].内蒙古科技与经济,(19):34-36.
- 李大辉,韩磊,王文辉.2001.LISS系统在中国数字地震台网的应用设想[J].地震地磁观测与研究,22(1):63-67.
- 李卫东,粱兆东.2008.使用Ultra-NMS监控软件扩展测震仪器监控功能的方法[J].震灾防御技术,3(2):204-207.
- 刘胜国,贾庆华.2004.首都圈遥测地震台网所采用的SEED格式及ASCII码格式的转换程序[J].华北地震科学,22(1),27-30.
- 孙学军,姚宏.2009.“十五”测震台网数据库的应用程序开发[J].地震地磁观测与研究,30(3):109-113.
- 万柯松,倪四道,曾祥方,等.2009.汶川大地震中的应急地震学[J].中国科学(D辑):地球科学,39(1):1-10.
- 卫爱民,何家斌,颜其中.2005.云南省区域数字地震遥测台网远震参数测定[J].地震研究,28(2):144-149.
- 中国地震局.2003.地震波形数据交换格式[M].北京:地震出版社.