首页 / 专利库 / 电子零件及设备 / 带通滤波器 / 地震数据处理方法及其系统

地震数据处理方法及其系统

阅读:1023发布:2020-06-01

专利汇可以提供地震数据处理方法及其系统专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种 地震 数据处理 方法及系统,包括,利用Kafka分布式高可用集群接收实时 波形 数据,获取预设时间内的与实时波形数据相对应的已存储的历史波形数据,基于Flink实时流计算 框架 ,确定实时波形数据与历史波形数据的关系,根据实时波形数据与历史波形数据的关系,检测实时波形数据是否为异常,若实时波形数据为异常,应用STA/LTA+AIC 算法 和/或FilterPicker算法计算震相数据,采用Spring Boot框架和/或Spring Cloud框架,对震相数据进行报送,以实现及时、准确地获取地震参数。,下面是地震数据处理方法及其系统专利的具体信息内容。

1.一种地震数据处理方法,其特征在于,包括:
利用Kafka分布式高可用集群接收实时波形数据;
获取预设时间内的与所述实时波形数据相对应的已存储的历史波形数据;
基于Flink实时流计算框架,确定所述实时波形数据与所述历史波形数据的关系;
根据所述实时波形数据与所述历史波形数据的关系,检测所述实时波形数据是否为异常;
若所述实时波形数据为异常,应用STA/LTA+AIC算法和/或FilterPicker算法计算震相数据;
采用Spring Boot框架和/或Spring Cloud框架,对所述震相数据进行报送。
2.根据权利要求1所述的方法,其特征在于,所述利用Kafka分布式高可用集群接收实时波形数据,包括:
基于预先构建的SeedLink的数据传输协议微服务,接收国外台网中心实时波形服务器上的实时波形数据;和/或;
基于预先构建的NetSeis/IP的数据传输协议微服务,接收国内台网中心的流服务器上的实时波形数据。
3.根据权利要求1所述的方法,其特征在于,所述利用Kafka分布式高可用集群接收实时波形数据之后,还包括:
读取所述实时波形数据;
按照预先设定的存储规则对所述实时波形数据进行分级存储。
4.根据权利要求3所述的方法,其特征在于,所述按照预先设定的存储规则对所述实时波形数据进行分级存储,包括:
基于预先构建的Kafka Stream在线微服务,将处于在线时间内的所述实时波形数据存储于Ignite分布式缓存中;
基于预先构建的Kafka Stream近线微服务,将处于近线时间内的所述历史波形数据存储于分布式数据库HBase中;
构建预先构建的独立离线微服务,将处于离线时间内的所述历史波形数据存储于分布式文件系统Hadoop中。
5.根据权利要求4所述的方法,其特征在于,所述获取预设时间内的与所述实时波形数据相对应的已存储的历史波形数据,包括:
若所述预设时间在所述近线时间内,根据所述实时波形数据和所述预设时间构建RowKey函数;
通过所述RowKey函数的二进制比较器生成RowFilter;
将所述RowFilter作为getScan方法参数输入Table对象,输出结果即为所述历史波形数据;
若所述预设时间在所述离线时间内,基于所述实时波形数据、所述预设时间生成索引文件和所述实时波形数据的文件路径列表;
根据所述预设时间和所述文件路径列表,利用所述索引文件检索所述实时波形数据对应的历史数据文件的位置
基于所述历史数据文件的位置,通过所述分布式文件系统Hadoop,从所述历史数据文件中获取历史数据包,即为所述历史波形数据。
6.根据权利要求1所述的方法,其特征在于,所述应用STA/LTA+AIC算法计算震相数据,包括:
采用巴特沃斯带通滤波器对所述实时波形数据进行预处理,生成震相拾取算法和振幅计算算法;
分析所述实时波形数据与所述历史波形数据的关系;
若所述实时波形数据异常,则触发所述震相拾取算法和所述振幅计算算法工作,以使计算所述震相数据。
7.根据权利要求6所述的方法,其特征在于,所述采用巴特沃斯带通滤波器对所述实时波形数据进行预处理,包括:
通过所述Flink实时流计算框架中的Kafka Connector Consumer API从所述Kafka分布式高可用集群中获取连续的所述实时波形数据,作为DataStream;
将所述DataStream作为Key,进行keyby算子运算,得到KeyedStream;
利用RichMapFunction作为处理函数,运用map算子对所述KeyedStream进行预处理。
8.根据权利要求7所述的方法,其特征在于,所述触发所述震相拾取算法和所述振幅计算算法工作,计算所述震相数据,包括:
对所述KeyedStream进行所述map算子运算,从所述Kafka分布式高可用集群中读取所述震相拾取算法和所述振幅计算算法;
以所述RichMapFunction作为处理函数遍历所述震相拾取算法的列表和所述振幅计算算法的列表,得到所述震相数据。
9.根据权利要求1所述的方法,其特征在于,所述应用FilterPicker算法计算震相数据,包括:
通过所述Flink实时流计算框架中的Kafka Connector Consumer API订阅所述Kafka分布式高可用集群中的SEED主题,获取连续的所述实时波形数据,作为DataStream;
将所述DataStream作为Key,进行keyby算子运算,得到KeyedStream;
调用FilterPicker滤波算法,运用map算子对所述KeyedStream进行处理,得到所述震相数据。
10.一种地震数据处理系统,其特征在于,包括:
消息交换模,用于利用Kafka分布式高可用集群接收实时波形数据;
处理加工模块,用于获取预设时间内的与所述实时波形数据相对应的已存储的历史波形数据;基于Flink实时流计算框架,确定所述实时波形数据与所述历史波形数据的关系;
根据所述实时波形数据与所述历史波形数据的关系,检测所述实时波形数据是否为异常;
若所述实时波形数据为异常,应用STA/LTA+AIC算法和/或FilterPicker算法计算震相数据;
数据共享模块,用于采用Spring Boot框架和/或Spring Cloud框架,对所述震相数据进行报送。

说明书全文

地震数据处理方法及其系统

技术领域

[0001] 本发明涉及地震数据处理技术领域,具体涉及一种地震数据处理方法及系统。

背景技术

[0002] 地震速报是中国地震台网中心的核心业务。在震后第一时间发布震中位置震级大小等地震参数,对于政府和社会公众判断灾情、启动应急处置,最大限度地减轻损失具有重要意义。目前,我国的地震速报采用“自动+正式(人工)”两次发布的方式。对于国内地震一般2分钟之内便可产出自动速报结果,10分钟左右产出人工速报结果,对于国外地震一般15分钟内产出自动速报结果,一小时内完成人工速报结果。
[0003] 目前,全国台站数量是一千五百余个,自动速报处理系统除有部分采用并行程序外,大部分还是采用常规程序完成处理过程,对现有台站个数能够满足要求,但如果台站数量扩充到一万个以上时,超出了现有的速报处理系统处理能的极限,则很难保证对地震参数的及时以及准确获取。

发明内容

[0004] 有鉴于此,本发明的目的在于克服现有技术的不足,提供一种地震数据处理方法及系统,以实现及时、准确地获取对地震参数。
[0005] 为实现以上目的,本发明采用如下技术方案:
[0006] 一种地震数据处理方法,包括:
[0007] 利用Kafka分布式高可用集群接收实时波形数据;
[0008] 获取预设时间内的与所述实时波形数据相对应的已存储的历史波形数据;
[0009] 基于Flink实时流计算框架,确定所述实时波形数据与所述历史波形数据的关系;
[0010] 根据所述实时波形数据与所述历史波形数据的关系,检测所述实时波形数据是否为异常;
[0011] 若所述实时波形数据为异常,应用STA/LTA+AIC算法和/或FilterPicker算法计算震相数据;
[0012] 采用Spring Boot框架和/或Spring Cloud框架,对所述震相数据进行报送。
[0013] 可选的,上述所述利用Kafka分布式高可用集群接收实时波形数据,包括:
[0014] 基于预先构建的SeedLink的数据传输协议微服务,接收国外台网中心实时波形服务器上的实时波形数据;和/或;
[0015] 基于预先构建的NetSeis/IP的数据传输协议微服务,接收国内台网中心的流服务器上的实时波形数据。
[0016] 可选的,上述所述利用Kafka分布式高可用集群接收实时波形数据之后,还包括:
[0017] 读取所述实时波形数据;
[0018] 按照预先设定的存储规则对所述实时波形数据进行分级存储。
[0019] 可选的,上述所述按照预先设定的存储规则对所述实时波形数据进行分级存储,包括:
[0020] 基于预先构建的Kafka Stream在线微服务,将处于在线时间内的所述实时波形数据存储于Ignite分布式缓存中;
[0021] 基于预先构建的Kafka Stream近线微服务,将处于近线时间内的所述历史波形数据存储于分布式数据库HBase中;
[0022] 构建预先构建的独立离线微服务,将处于离线时间内的所述历史波形数据存储于分布式文件系统Hadoop中。
[0023] 可选的,上述所述获取预设时间内的与所述实时波形数据相对应的已存储的历史波形数据,包括:
[0024] 若所述预设时间在所述近线时间内,根据所述实时波形数据和所述预设时间构建RowKey函数;
[0025] 通过所述RowKey函数的二进制比较器生成RowFilter;
[0026] 将所述RowFilter作为getScan方法参数输入Table对象,输出结果即为所述历史波形数据;
[0027] 若所述预设时间在所述离线时间内,基于所述实时波形数据、所述预设时间生成索引文件和所述实时波形数据的文件路径列表;
[0028] 根据所述预设时间和所述文件路径列表,利用所述索引文件检索所述实时波形数据对应的历史数据文件的位置;
[0029] 基于所述历史数据文件的位置,通过所述分布式文件系统Hadoop,从所述历史数据文件中获取历史数据包,即为所述历史波形数据。
[0030] 可选的,上述所述应用STA/LTA+AIC算法计算震相数据,包括:
[0031] 采用巴特沃斯带通滤波器对所述实时波形数据进行预处理,生成震相拾取算法和振幅计算算法;
[0032] 分析所述实时波形数据与所述历史波形数据的关系;
[0033] 若所述实时波形数据异常,则触发所述震相拾取算法和所述振幅计算算法工作,以使计算所述震相数据。
[0034] 可选的,上述所述采用巴特沃斯带通滤波器对所述实时波形数据进行预处理,包括:
[0035] 通过所述Flink实时流计算框架中的Kafka Connector Consumer API从所述Kafka分布式高可用集群中获取连续的所述实时波形数据,作为DataStream;
[0036] 将所述DataStream作为Key,进行keyby算子运算,得到KeyedStream;
[0037] 利用RichMapFunction作为处理函数,运用map算子对所述KeyedStream进行预处理。
[0038] 可选的,上述所述触发所述震相拾取算法和所述振幅计算算法工作,计算所述震相数据,包括:
[0039] 对所述KeyedStream进行所述map算子运算,从所述微系统中读取所述震相拾取算法和所述振幅计算算法;
[0040] 以所述RichMapFunction作为处理函数遍历所述震相拾取算法的列表和所述振幅计算算法的列表,得到所述震相数据。
[0041] 可选的,上述所述应用FilterPicker算法计算震相数据,包括:
[0042] 通过所述Flink实时流计算框架中的Kafka Connector Consumer API订阅所述Kafka分布式高可用集群中的SEED主题,获取连续的所述实时波形数据,作为DataStream;
[0043] 将所述DataStream作为Key,进行keyby算子运算,得到KeyedStream;
[0044] 调用FilterPicker滤波算法,运用map算子对所述KeyedStream进行处理,得到所述震相数据。
[0045] 一种地震数据处理系统,包括:
[0046] 消息交换模,用于利用Kafka分布式高可用集群接收实时波形数据;
[0047] 处理加工模块,用于获取预设时间内的与所述实时波形数据相对应的已存储的历史波形数据;基于Flink实时流计算框架,确定所述实时波形数据与所述历史波形数据的关系;根据所述实时波形数据与所述历史波形数据的关系,检测所述实时波形数据是否为异常;若所述实时波形数据为异常,应用STA/LTA+AIC算法和/或FilterPicker算法计算震相数据;
[0048] 数据共享模块,用于采用Spring Boot框架和/或Spring Cloud框架,对所述震相数据进行报送。
[0049] 本发明采用的一种地震数据处理方法及系统,通过利用Kafka分布式高可用集群接收实时波形数据,获取预设时间内的与实时波形数据相对应的已存储的历史波形数据,基于Flink实时流计算框架,确定实时波形数据与历史波形数据的关系,根据实时波形数据与历史波形数据的关系,检测实时波形数据是否为异常,若实时波形数据为异常,应用STA/LTA+AIC算法和/或FilterPicker算法计算震相数据,采用Spring Boot框架和/或Spring Cloud框架,对震相数据进行报送的方式,实现及时准确地获取对地震参数,利用分布式高可用集群、实时流计算框架,可以有效地增加吞吐量,降低时间延迟,通过分布式算法基于大数据流式计算的方式,能够保证数据处理的速度,缩短响应时间,使得当发生地震时,能够保证及时、准确且快速地将获取到地震参数并进行报送。附图说明
[0050] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0051] 图1是本发明实施例提供的地震数据处理方法的一种流程图
[0052] 图2是本发明实施例提供的地震数据处理系统的一种结构示意图。

具体实施方式

[0053] 为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
[0054] 图1是本发明实施例提供的地震数据处理方法的一种流程图。
[0055] 如图1所示,本实施例提供的一种地震数据处理方法,包括以下步骤:
[0056] S11、利用Kafka分布式高可用集群接收实时波形数据。
[0057] 实时波形数据接入是地震速报的第一步,从数据接入看,通常需要同时满足基于预先构建的SeedLink的数据传输协议微服务,接收国外台网中心实时波形服务器上的实时波形数据和基于预先构建的NetSeis/IP的数据传输协议微服务,接收国内台网中心的流服务器上的实时波形数据。接收到实时波形数据的格式为miniSEED。
[0058] Kafka分布式高可用集群是为了解决对业务系统的需求分析和开源框架的性能对比问题,主要用于支撑实时业务层各功能模块间的消息传递。Kafka是分布式发布-订阅消息系统,是一个分布式的,可划分的,冗余备份的持久性的日志服务。其广泛地应用于构建实时数据管道和流应用的场景中,具有横向扩展,容错,快等优点,而且Kafka具有极高的吞吐率,在普通廉价的虚拟机器上,每天可处理超过一万亿条消息,在峰值时每秒钟会发布超过百万余条消息,就算是在内存和CPU都不高的情况下,Kafka的速度也可以可以达到每秒十万条数据。
[0059] 消息交换子系统主要的模块的主题Topic和分区主键Key的设计如下:
[0060] 连续波形数据:使用NetSeis/IP和SeedLink两种不同协议得到的数据均是连续波形数据,不再另做区分。
[0061] Topic:SEED
[0062] Key:Stream ID
[0063] 震相拾取:震相自动拾取的结果。
[0064] Topic:PICK
[0065] Key:Stream ID
[0066] 振幅:Topic:AMPLITUDE
[0067] Key:Stream ID
[0068] 震源:Topic:ORIGIN
[0069] Key:Origin ID
[0070] 震级:Topic:MAGNITUDE
[0071] Key:Origin ID
[0072] 地震事件:Topic:EVENT
[0073] Key:Event ID
[0074] 波形质量监控:不同的指标计算结果发布到不同的主题,用后缀进行区分。
[0075] Topic:QC_{TYPE}
[0076] Key:Stream ID
[0077] 进一步地,在接收到实时波形数据以后,还包括:读取实时波形数据,其中,读取波形数据包括摘要信息和附加信息,而摘要信息主要包括数据包大小、台网、台站、位置、通道、采样起始时间、采样结束时间、采样频率、采样点数等,附加信息包括数据包到达时间等;将摘要信息和附加信息作为数据包的元数据,同数据包一起作为Value,以Stream ID作为Key,发布到Kafka的SEED主题中。
[0078] 按照预先设定的存储规则对实时波形数据进行分级存储,其中,预设规则通常为:基于预先构建的Kafka Stream在线微服务,将处于在线时间内的实时波形数据存储于Ignite分布式缓存中,基于预先构建的Kafka Stream近线微服务,将处于近线时间内的历史波形数据存储于分布式数据库HBase中,构建预先构建的独立离线微服务,将处于离线时间内的历史波形数据存储于分布式文件系统Hadoop中,对波形数据进行分级存储能够保证存储的效率,同时也能够保证后续对数据检索获取时的速度。
[0079] 分级存储是根据数据的重要性、访问频率、保留时间、容量、性能等指标,将数据采取不同的存储方式分别存储在不同性能的存储系统上,数据分级存储的工作原理是基于数据访问的局部性。通过将不经常访问的数据自动移到存储层次中较低的层次,释放出较高成本的存储空间给更频繁访问的数据,可以获得更好的性价比,加快整个系统的存储性能。
[0080] 对于连续波形数据来说,按15000个台站设计估算,每天产生的波形数据量在300—400G。为了同时满足实时计算、快速检索和海量数据存储的要求,选择采用在线、近线、离线三级存储。近1个小时的波形数据存储在Ignite分布式缓存中,用于高并发、实时检索。近30天的波形数据存储在HBase分布式数据库中,用于数据的秒级检索,在创建HBase表时,指定TTL为30天(默认为69年),超过30天的数据会自动清除。长期存档的波形数据存储在HDFS分布式文件系统中,定期(1~n天,根据日均波形数据大小)从HBase中检索数据(包括元数据和数据包),通过元数据生成索引文件,并将归档后数据文件和索引文件同时存入Hadoop分布式文件系统(HDFS)的指定目录中,通过基于目录规则和SQLite数据库索引规则,实现数据的快速检索,通过构建独立的客户端,实现数据的自动流转和自动分类检索。
[0081] 为了保证配置信息的管理能够满足快速查询和持久化的要求,同时需要设计更新通知机制,在不停机的情况下使用最新配置,Ignite的内存数据网格组件是一个完整的事务型分布式键值Key-Value存储,它可以在有几百台服务器的集群上进行平扩展,同时,Ignite提供了完整的SQL、DDL和DML的支持,可以使用纯SQL而不用写代码与Ignite进行交互。系统启动时,Ignite从MariaDB/MySQL数据库中读取所有配置信息,并缓存在内存中;各个业务模块通过Key-Value或SQL方式从Ignite中快速检索数据,更新配置信息,先将配置信息更新到MariaDB/MySQL数据库中,同时更新Ignite中的缓存,再通过Kafka消息交换系统发布配置更新的通知,业务模块收到更新通知后从Ignite中读取最新的配置信息。
[0082] 各个微服务产生的中间结果,首先会发布到Kafka中,分别基于Kafka Stream构建独立的微服务用于中间结果的内存缓存和持久化,中间结果写入Ignite分布式缓存中,通过设置过期时间,避免大量无用中间结果影响性能。中间结果还需持久化到MariaDB/MySQL数据库中,对于数据量很大的中间结果可以使用Sharding-JDBC按时间分表存储。
[0083] S12、获取预设时间内的与实时波形数据相对应的已存储的历史波形数据。
[0084] 获取波形数据时,首先确定获取时间范围,如果时间范围全部在最近30天内即为近线时间,则从HBase中检索数据,否则为离线时间,从HDFS中检索数据。预设时间为用户自行进行设定的,获取波形数据的方式采用分布式获取,通过Long.MAX-StartTimestamp对波形数据按时间倒排序,可以加快获取最新数据的速度,创建表时设置TTL为30天,HBase可以自动清除到期数据。以RowKey示例:某一连续波形的Network Code为IU,Station Code为ANMO,Location Code为OO,Channel为0BHZ,数据包Start Time为2018年10月10日10时24分30秒256毫秒,即时间戳1539138270256,则其RowKey为:00IUANMO00OO0BHZ:
1539138270256。
[0085] 若预设时间在近线时间内,根据实时波形数据和预设时间构建RowKey函数,通过RowKey函数的二进制比较器生成RowFilter,将RowFilter作为getScan方法参数输入Table对象,输出结果即为历史波形数据。具体的,基于HBase的Java SDK,使用Spring Boot构建微服务,用于数据检索服务。该服务提供RESTful格的API,API设计符合FDSN Web Service国际标准,检索业务量增加时,可以运行多个客户端,通过负载均衡提供服务。当检索某一Stream ID在指定时间范围内的波形数据即历史波形数据的步骤如下:分别用Stream ID和时间构建RowKey函数,通过BinaryComparator生成RowFilter,将两个RowFilter对象放入List中,将List作为Scan对象的setFilter方法参数进行计算,并将Scan对象的计算将结果作为Table对象的getScan方法参数,返回的对象即为历史波形数据,从HBase中检索波形数据,可以到秒级响应,通常在HBase中存储的数据为30天内的数据。
[0086] 若预设时间在离线时间内,基于实时波形数据、预设时间生成索引文件和实时波形数据的文件路径列表,根据预设时间和文件路径列表,利用索引文件检索实时波形数据对应的历史数据文件的位置,基于历史数据文件的位置,通过分布式文件系统Hadoop,从历史数据文件中获取历史数据包,即为历史波形数据。
[0087] 关于分布式文件系统Hadoop的设计,以SeisComP3中的slarchive模块的目录设计规则,命名波形数据文件和索引文件,具体规则如下:
[0088] 目录命名:/{Year}/{NET}/{STA}/{CHAN}.{TYPE}/
[0089] 文件命名:索引文件:{NET}.{STA}.{LOC}.{CHAN}.{TYPE}.{DAY}.index数据文件:{NET}.{STA}.{LOC}.{CHAN}.{TYPE}.{DAY}.mseed
[0090] 示例:
[0091] /2018/HE/HNS/BHZ.D/HE.HNS.00.BHZ.D.2018.001.index表示河北红山地震台2018年1月1日垂直方向波形数据的索引文件。
[0092] /2018/HE/HNS/BHZ.D/HE.HNS.00.BHZ.D.2018.004.mseed表示河北红山地震台2018年1月4日垂直方向波形数据的数据文件。
[0093] 多于一天的波形数据归档时,文件命名采用第一个数据包的日期。
[0094] 索引文件:索引文件采用SQLite数据库存储数据。
[0095] 基于分布式文件系统Hadoop的Java SDK,使用Spring Boot构建微服务,用于数据检索服务,该服务提供RESTful风格的API,API设计符合FDSN Web Service国际标准,检索业务量增加时,可以运行多个客户端,通过负载均衡提供服务。当检索某一Stream ID在指定预设内的波形数据的步骤如下:根据Stream ID和时间生成索引文件和数据文件的路径列表,遍历路径列表,根据查询时间范围,从索引文件中检索数据包的位置,使用HDFS(分布式文件系统Hadoop)的随机读方式从数据文件中获取数据包,所得数据包列表即为历史波形数据,采用目录规则和SQLite索引文件的方案,从HDFS中检索数据,可以实现分钟级响应。
[0096] S13、基于Flink实时流计算框架,确定实时波形数据述历史波形数据的关系。
[0097] Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink Runtime,提供支持流处理和批处理两种类型应用的功能。基于Flink的大规模并行计算,可以显著提高系统的处理能力,增加吞吐量(Throughput),降低时间延迟(Latency)。基于Flink分布式高可用集群构建加工处理子系统基础平台,以地震学开源软件构建业务算法为基础,通过重构和整合,实现基于大数据的大规模分布式并行计算。使得可以快速的确定实时波形数据述历史波形数据的关系。
[0098] S14、根据实时波形数据与历史波形数据的关系,检测实时波形数据是否为异常。
[0099] 波形数据正常情况下为平缓的,类似于心电图,当出现波动较大的波形数据时,表明此时的波形数据异常,通常会设置一波动范围,当波动处于范围之内时,处于正常状态,当波形数据处于波动范围以外时,表明处于异常状态,当然也包括着获取一段时间内的平均值等,具体的在本实施例中不再进行强制限定。
[0100] S15、若实时波形数据为异常,应用STA/LTA+AIC算法和/或FilterPicker算法计算震相数据。
[0101] 其中,应用STA/LTA+AIC算法计算震相数据,包括:采用巴特沃斯带通滤波器对实时波形数据进行预处理,生成震相拾取算法和振幅计算算法,分析实时波形数据与历史波形数据的关系,若实时波形数据异常,则触发震相拾取算法和振幅计算算法工作,以使计算震相数据。其中,采用巴特沃斯带通滤波器对实时波形数据进行预处理,包括:通过Flink实时流计算框架中的Kafka Connector Consumer API从Kafka分布式高可用集群中获取连续的实时波形数据,作为DataStream,将DataStream作为Key,进行keyby算子运算,得到KeyedStream;利用RichMapFunction作为处理函数,运用map算子对KeyedStream进行预处理。而触发所述震相拾取算法和所述振幅计算算法工作,计算震相数据,包括:对KeyedStream进行所述map算子运算,从Kafka分布式高可用集群中读取震相拾取算法和振幅计算算法,以RichMapFunction作为处理函数遍历震相拾取算法的列表和振幅计算算法的列表,得到震相数据。
[0102] 波形预处理的具体过程为通过Flink提供的Kafka Connector Consumer API从Kafka分布式高可用集群中获取连续波形数据,作为DataStream;以Stream ID作为Key进行keyby算子运算,得到KeyedStream;对KeyedStream进行map算子运算,以RichMapFunction作为处理函数进行计算;在open方法里,通过运行时上下文,以状态方式获取中间计算结果;在map方法里,调用相应的波形预处理,当出现波形异常时,生成震相拾取处理器和振幅计算处理器,并将其作为函数结果返回;在close方法里,以状态方式保存中间计算结果,通过Ignite提供的Flink Sink API,将震相拾取处理器和振幅计算处理器更新到Ignite分布式缓存子系统中。
[0103] 震相拾取的具体过程为通过Flink提供的Kafka Connector Consumer API从Kafka分布式高可用集群中获取连续波形数据,作为DataStream;以Stream ID作为Key进行keyby算子运算,得到KeyedStream;对KeyedStream运进行map算子运算,从Ignite分布式缓存中读取震相拾取处理器列表、振幅计算列表和连续波形缓存;对KeyedStream运用map算子运算,以RichMapFunction作为处理函数进行计算:在open方法里,通过运行时上下文,以状态方式获取中间计算结果;在map方法里,遍历震相拾取处理器列表,进行震相拾取。将满足条件的震相处理算法及其计算结果作为函数结果返回;在map方法里,遍历幅度计算处理器列表,进行幅度计算,将满足条件的振幅处理算法及其计算结果作为函数结果返回;在close方法里,以状态方式保存中间计算结果。通过Ignite提供的Flink Sink API,将返回的震相拾取算法和振幅计算算法从Ignite分布式缓存子系统中删除,将预处理计算的结果以Stream ID作为Key,发布到Kafka分布式高可用集群。
[0104] 通过SeisComP3中的scautopick模块实现了震相的自动拾取,该模块默认采用3阶0.7~2.0Hz巴特沃斯带通滤波器,对实时波形进行滤波处理,通过抽取SeisComP3的scautopick模块中相关算法,进行重构和封装后,整合到实时流并行计算架构中,由于SeisComP3中相关算法是C++编写的,而实时流计算均采用Java编写,所以需要对各种算法进行跨语言封装,首先抽取相关的C++算法,然后封装成动态链接库,最后通过JNI/JNA方式封装成Jar包。
[0105] 震相自动拾取包含波形数据预处理、震相拾取、振幅计算三个业务流程,从数据源上看,波形数据预处理的数据源是一个一个的波形数据包,而震相拾取和振幅计算的处理对象不仅仅包含当前波形数据包,还需要之前和之后一段时间窗口内的连续波形数据。从业务流程上看,波形预处理是震相拾取和振幅计算的前提条件,震相拾取和振幅计算的算法列表是波形预处理生成的,连续波形首先经过波形预处理检查,只有当波形数据异常时,才触发震相拾取和振幅计算,但此时满足震相拾取和振幅计算所需的波形数据尚未到达,这就需要同时缓存震相拾取和振幅计算的算法和数据,等待新的波形数据到来并满足计算条件时,才能进行震相拾取和振幅计算。震相拾取的结果和振幅计算的结果输出之后,将算法从缓存中删除。从一个波形数据包看,这三个业务流程是有先后顺序的;但从连续波形看,这三个业务路程没有必然的先后顺序,借助集中缓存可以进行并行化计算。即波形预处理读取波形数据,将计算结果写入缓存;震相拾取和振幅计算同时读取连续波形和算法缓存,当满足计算条件时,将同时更新缓存和输出计算结果。
[0106] 将波形预处理、震相拾取、振幅计算三个业务流程进行,各业务流程均以独立的Flink Job运行。波形预处理从Kafka消息子系统中读取连续波形数据,检查波形数据异常后,生成震相拾取算法和振幅计算算法,并将其以返回结果方式更新到Ignite分布式缓存中。震相拾取时同时在Kafka读取连续波形数据,从Ignite分布式缓存中读取处理器列表,遍历处理器进行计算,将计算结果发布到Kafka中,同时将已处理的处理器从Ignite分布式缓存中删除。
[0107] 通过对数据流和业务流程的分析,将数万个台站的连续波形按数据流进行并行计算,通过并行化计算设计,可以同时满足业务增长的高吞吐,低延迟的要求。Flink实时流计算框架和Ignite分布式缓存天然的内存计算可显著提高处理性能,通过震相自动拾取业务流程各阶段的独立设计,不仅使每个阶段可配置、可定制、可替代;而且通过流程重组、合并和拆分,使整个业务流程也可配置、可定制,从而可同时满足当前和未来业务发展需要。
[0108] 本方案运行在分布式高可用集群,采用先进的大规模实时流并行计算,保证大规模台网速报业务的时延要求,其时间延迟随着台站数量的增加线性增长,有效避免避免单点故障。实时流计算框架,其成熟、稳定、可靠的超高性能,除提供可视化运维管理工具外,也提供管理集成API,提高自动化管理工具,其实施、运维、扩容、升级操作简洁,出错率低,系统稳定性高,当某一实例崩溃时,不会影响其他部分台站数据的正常处理,有效解决单点故障问题;
[0109] 而应用FilterPicker算法计算震相数据,包括:通过Flink实时流计算框架中的Kafka Connector Consumer API订阅Kafka分布式高可用集群中的SEED主题,获取连续的实时波形数据,作为DataStream,将DataStream作为Key,进行keyby算子运算,得到KeyedStream,调用FilterPicker滤波算法,运用map算子对KeyedStream进行处理,得到震相数据。其中,FilterPicker算法的基本原理是:设特征函数为FC(i),监视每一个时间区间长度为Tup,定义两个阈值S1和S2分别用于判断信号是否被触发或被识别,FilterPicker算法的效率极高,几乎全使用逻辑和算术运算,FilterPicker采用Java语言编写,可以直接整合到Flink实时流处理平台。
[0110] 具体过程大致分为:通过Flink提供的Kafka Connector Consumer API订阅Kafka消息交换子系统的SEED主题,获取连续波形数据,即DataStream,以Stream ID作为Key进行keyby算子运算,得到KeyedStream;对KeyedStream进行map算子运算,以RichMapFunction作为处理函数进行计算;在open方法里,通过运行时上下文,以状态方式获取中间计算结果;在map方法里,调用FilterPicker滤波算法,当检测出异常时,将震相拾取结果作为函数结果返回,在close方法里,以状态方式更新中间计算结果,通过Flink提供的Kafka Connector Producer API,将震相拾取的结果以Stream ID作为Key,发布到Kafka分布式高可用集群的PICK主题中。
[0111] S16、采用Spring Boot框架和/或Spring Cloud框架,对震相数据进行报送。
[0112] 基于Spring Boot和Spring Cloud微服务框架,以FDSN Web Services国际标准构建共享服务平台。Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
[0113] 而基于Spring Boot和Spring Cloud的数据传输与报送,按照业务来划分服务,单个服务代码量小,业务单一,易于维护,提供RESTful风格的HTTP API,可同时满足以xml、json、text或文件等不同方式返回结果,微服务有一套服务治理的解决方案,服务之间不耦合,可以随时加入和剔除服务,单个微服务能够集群化部署,并且有负载均衡的能力,采用容器部署可以实现自动重启、滚动升级,有完整的实时日志系统,有可视化Web管理工具,可方便监控各微服务的运行状态,业务需求增加时,只需要构建新的业务模块即可,不影响已有业务的运行,同时业务可重用已有业务接口
[0114] 本实施例提供的一种地震数据处理方法,通过利用Kafka分布式高可用集群接收实时波形数据,获取预设时间内的与实时波形数据相对应的已存储的历史波形数据,基于Flink实时流计算框架,确定实时波形数据与历史波形数据的关系,根据实时波形数据与历史波形数据的关系,检测实时波形数据是否为异常,若实时波形数据为异常,应用STA/LTA+AIC算法和/或FilterPicker算法计算震相数据,采用Spring Boot框架和/或Spring Cloud框架,对震相数据进行报送的方式,实现及时准确地获取对地震参数,利用分布式高可用集群、实时流计算框架,可以有效地增加吞吐量,降低时间延迟,通过分布式算法基于大数据流式计算的方式,能够保证数据处理的速度,缩短响应时间,使得当发生地震时,能够保证及时、准确且快速地将获取到地震参数并进行报送。
[0115] 图2是本发明实施例提供的地震数据处理系统的一种结构示意图。
[0116] 如图2所示,本实施例的一种地震数据处理系统,包括:
[0117] 消息交换模块10,用于利用Kafka分布式高可用集群接收实时波形数据;
[0118] 处理加工模块20,用于获取预设时间内的与实时波形数据相对应的已存储的历史波形数据;基于Flink实时流计算框架,确定实时波形数据与历史波形数据的关系;根据实时波形数据与历史波形数据的关系,检测实时波形数据是否为异常;若实时波形数据为异常,应用STA/LTA+AIC算法和/或FilterPicker算法计算震相数据;
[0119] 数据共享模块30,用于采用Spring Boot框架和/或Spring Cloud框架,对所述震相数据进行报送。
[0120] 进一步地,本实施例的一种地震数据处理系统,消息交换模块10具体用于:
[0121] 基于预先构建的SeedLink的数据传输协议微服务,接收国外台网中心实时波形服务器上的实时波形数据;和/或;基于预先构建的NetSeis/IP的数据传输协议微服务,接收国内台网中心的流服务器上的实时波形数据。
[0122] 进一步地,本实施例的一种地震数据处理系统,还包括:
[0123] 分级存储模块40,用于读取实时波形数据,按照预先设定的存储规则对实时波形数据进行分级存储。其中,分级存储模块40具体用于基于预先构建的Kafka Stream在线微服务,将处于在线时间内的实时波形数据存储于Ignite分布式缓存中,基于预先构建的Kafka Stream近线微服务,将处于近线时间内的历史波形数据存储于分布式数据库HBase中,构建预先构建的独立离线微服务,将处于离线时间内的历史波形数据存储于分布式文件系统Hadoop中。
[0124] 进一步地,本实施例的一种地震数据处理系统,处理加工模块20具体用于:
[0125] 若预设时间在所述近线时间内,根据实时波形数据和预设时间构建RowKey函数,通过RowKey函数的二进制比较器生成RowFilter;将RowFilter作为getScan方法参数输入Table对象,输出结果即为历史波形数据,若预设时间在离线时间内,基于实时波形数据、预设时间生成索引文件和实时波形数据的文件路径列表,根据预设时间和文件路径列表,利用索引文件检索实时波形数据对应的历史数据文件的位置,基于历史数据文件的位置,通过分布式文件系统Hadoop,从历史数据文件中获取历史数据包,即为历史波形数据。
[0126] 进一步地,本实施例的一种地震数据处理系统,应用STA/LTA+AIC算法计算震相数据,包括:采用巴特沃斯带通滤波器对实时波形数据进行预处理,生成震相拾取算法和振幅计算算法,分析实时波形数据与历史波形数据的关系,若实时波形数据异常,则触发震相拾取算法和振幅计算算法工作,以使计算震相数据。预处理具体为:通过Flink实时流计算框架中的Kafka Connector Consumer API从Kafka分布式高可用集群中获取连续的实时波形数据,作为DataStream;将DataStream作为Key,进行keyby算子运算,得到KeyedStream;利用RichMapFunction作为处理函数,运用map算子对KeyedStream进行预处理。计算震相数据具体位置:对KeyedStream进行map算子运算,从Kafka分布式高可用集群中读取震相拾取算法和振幅计算算法,以RichMapFunction作为处理函数遍历震相拾取算法的列表和振幅计算算法的列表,得到震相数据。
[0127] 应用FilterPicker算法计算震相数据,包括:通过Flink实时流计算框架中的Kafka Connector Consumer API订阅Kafka分布式高可用集群中的SEED主题,获取连续的实时波形数据,作为DataStream,将DataStream作为Key,进行keyby算子运算,得到KeyedStream,调用FilterPicker滤波算法,运用map算子对KeyedStream进行处理,得到所述震相数据。
[0128] 其中,关于上述系统的实施例,在对应方法的实施例中已经做了详细的描述说明,因此不再于系统中对其进行具体阐述。
[0129] 本实施例还提供一种地震数据处理装置,包括:处理器,以及与处理器相连接的存储器;存储器用于存储计算机程序,计算机程序至少用于执行上述任一实施例的地震数据处理方法;处理器用于调用并执行存储器中的计算机程序。
[0130] 可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
[0131] 需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。
[0132] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
[0133] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0134] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0135] 此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0136] 上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0137] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0138] 尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈