一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

地震数据重复性检查的方法、装置、电子设备及存储介质与流程

2022-02-20 13:20:55 来源:中国专利 TAG:


1.本公开涉及地震勘探与开发技术领域,特别地涉及一种地震数据重复性检查的方法、装置、电子设备及存储介质。


背景技术:

2.地震勘探辅助数据(seismic processing support format for surveys,sps)文件是用于存储地震队采集的地震勘探辅助数据的文件。为了便于进行存储与交换,石油公司通常采用固定的格式标准来记录地震勘探辅助数据。目前国际上主要的油公司大多采用美国勘探地球物理家协会(society of exploration geophysicists,seg)推荐的格式标准。sps文件已被地震仪器、采集和处理软件广泛兼容,是标准化的公共数据交换格式。sps文件旨在将陆上三维地震队采集的物理点的位置数据和地球物理辅助数据,以一种通用的标准(格式)传送到处理中心。
3.在野外实际施工过程中,由于各种客观原因导致记录存在异常,如:记录重复、格式不统一、长度超限、顺序杂乱等问题。以重复记录检查为例,目前常用的方法是采用两层嵌套循环,将文件中每一条记录与其他所有记录进行字符串比较,其算法时间复杂度为o(n^2),当文件记录数达到一定数量后该方法所需计算时间非常大。
4.随着陆上三维地震勘探技术的发展和复杂程度的提高,野外队对这些数据实时质量控制效率要求越来越高,常规低效的处理手段已经无法满足现阶段高效的采集施工方式,需要提供高效准确的质控手段以保证地震勘探辅助数据送往处理中心之前正确无误。


技术实现要素:

5.针对上述问题,本公开提供一种地震数据重复性检查的方法、装置、电子设备及存储介质,解决了现有技术中在超万道的地震辅助数据整理与质量监控过程中,无法高效地实现地震辅助数据的重复性检查的问题。
6.第一方面,本公开提供了一种地震数据重复性检查的方法,所述方法包括:
7.获取目标地区的地震勘探辅助数据的记录文件;
8.对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组;
9.通过md5信息摘要算法,计算每条记录的散列值;
10.依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;其中,所述平衡二叉树的每个结点的键值为对应记录的散列值,所述平衡二叉树的每个结点的实值为对应记录的行号;
11.输出所述记录文件中的重复记录及其行号。
12.根据本公开的实施例,可选的,上述地震数据重复性检查的方法中,对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组,包括以下步骤:
13.读取所述记录文件中的每条记录以及每条记录在所述记录文件中的行号;
14.对每条记录进行格式约束,以去除每条记录中的冗余字符并将每条记录的格式转换成列对齐格式,从而得到整理后的每条记录;
15.根据每条记录在所述记录文件中的行号,将整理后的每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组。
16.根据本公开的实施例,可选的,上述地震数据重复性检查的方法中,所述记录文件包括炮点记录和检波点记录,每条炮点记录和每条检波点记录分别包括两个字段;通过md5信息摘要算法,计算每条记录的散列值,包括以下步骤:
17.将每条炮点记录中的两个字段组合为第一预设长度的字符串,并将每条检波点记录中的两个字段组合为所述第一预设长度的字符串;
18.通过md5信息摘要算法计算每条炮点记录对应的字符串和每条检波点记录对应的字符串,以得到每条炮点记录的散列值和每条检波点记录的散列值。
19.根据本公开的实施例,可选的,上述地震数据重复性检查的方法中,所述记录文件包括关系记录,每条关系记录包括五个字段;通过md5信息摘要算法,计算每条记录的散列值,包括以下步骤:
20.将每条关系记录中的五个字段组合为第二预设长度的字符串;
21.通过md5信息摘要算法计算每条关系记录对应的字符串,以得到每条关系记录的散列值。
22.根据本公开的实施例,可选的,上述地震数据重复性检查的方法中,所述平衡二叉树为红黑树;依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号,包括以下步骤:
23.依次将每条记录对应的数组插入平衡二叉树,并根据当前记录对应的数组的插入是否成功判断当前平衡二叉树中是否存在与当前记录对应的数组相同的重复数组;
24.当当前记录对应的数组插入成功时,当前平衡二叉树中不存在与当前记录对应的数组相同的重复数组;
25.当当前记录对应的数组插入不成功时,当前平衡二叉树中存在与当前记录对应的数组相同的重复数组;
26.获取当前平衡二叉树中的重复数组对应的重复记录及其行号。
27.根据本公开的实施例,可选的,上述地震数据重复性检查的方法中,6.根据权利要求5所述的方法,其特征在于,依次将每条记录对应的数组插入平衡二叉树,包括以下步骤:
28.在当前平衡二叉树中查找当前记录对应的数组的插入位置;
29.在查找到的插入位置中插入当前记录对应的数组,以保持当前平衡二叉树的平衡性。
30.根据本公开的实施例,可选的,上述地震数据重复性检查的方法中,在当前平衡二叉树中查找当前记录对应的数组的插入位置,包括以下步骤:
31.从当前平衡二叉树的根结点出发,开始查找;
32.将当前结点的键值与当前记录的散列值进行比较;
33.当当前结点为空时,当前结点为当前记录对应的数组的插入位置;
34.当当前结点的键值等于当前记录的散列值时,当前平衡二叉树中没有当前记录对
应的数组的插入位置,且当前结点为当前记录对应的数组的重复数组;
35.当当前结点的键值大于当前记录的散列值时,将当前结点的左子结点设置为新的当前结点,并返回至所述将当前结点的键值与当前记录的散列值进行比较的步骤,以将新的当前结点的键值与当前记录的散列值进行比较;
36.当当前结点的键值小于当前记录的散列值时,将当前结点的右子结点设置为新的当前结点,并返回至所述将当前结点的键值与当前记录的散列值进行比较的步骤,以将新的当前结点的键值与当前记录的散列值进行比较。
37.第二方面,本公开提供了一种地震数据重复性检查的装置,所述装置包括:
38.记录文件获取模块,用于获取目标地区的地震勘探辅助数据的记录文件;
39.记录文件预处理模块,用于对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组;
40.记录散列值计算模块,用于通过md5信息摘要算法,计算每条记录的散列值;
41.重复记录获取模块,用于依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;其中,所述平衡二叉树的每个结点的键值为对应记录的散列值,所述平衡二叉树的每个结点的实值为对应记录的行号;
42.重复记录输出模块,用于输出所述记录文件中的重复记录及其行号。
43.第三方面,本公开提供一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,该计算机程序被所述处理器执行时,执行如第一方面中任意一项所述的地震数据重复性检查的方法。
44.第四方面,本公开提供一种存储介质,该存储介质存储的计算机程序,可被一个或多个处理器执行,可用来实现如第一方面中任意一项所述的地震数据重复性检查的方法。
45.与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:
46.本公开提供的一种地震数据重复性检查的方法、装置、电子设备及存储介质,所述方法包括获取目标地区的地震勘探辅助数据的记录文件;对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组;通过md5信息摘要算法,计算每条记录的散列值;依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;其中,所述平衡二叉树的每个结点的键值为对应记录的散列值,所述平衡二叉树的每个结点的实值为对应记录的行号;输出所述记录文件中的重复记录及其行号。该方法基于平衡二叉树,实现了快速地进行震勘探辅助数据记录重复性检查,较常规的地震勘探辅助数据记录重复性检查效率提高了一个数量级,时间复杂度可达o(log n),明显提高了sps文件处理效率,减少施工现场时间成本。
附图说明
47.在下文中将基于实施例并参考附图来对本公开进行更详细的描述:
48.图1为本公开实施例提供的一种地震数据重复性检查的方法的流程示意图;
49.图2为本公开实施例提供的一种平衡二叉树插入方法的流程示意图;
50.图3为本公开实施例提供的一种地震数据重复性检查的装置的结构示意图;
51.在附图中,相同的部件使用相同的附图标记,附图并未按照实际的比例绘制。
具体实施方式
52.以下将结合附图及实施例来详细说明本公开的实施方式,借此对本公开如何应用技术手段来解决技术问题,并达到相应技术效果的实现过程能充分理解并据以实施。本公开实施例以及实施例中的各个特征,在不相冲突前提下可以相互结合,所形成的技术方案均在本公开的保护范围之内。
53.同时,在以下说明中,出于解释的目的而阐述了许多具体细节,以提供对本发明实施例的彻底理解。然而,对本领域的技术人员来说显而易见的是,本发明可以不用这里的具体细节或者所描述的特定方式来实施。
54.实施例一
55.图1为本公开实施例提供的一种地震数据重复性检查的方法的流程示意图,请参阅图1,本实施例提供一种地震数据重复性检查的方法,包括:
56.步骤s101:获取目标地区的地震勘探辅助数据(seismic processing support format for surveys,sps)的记录文件。
57.其中,所述记录文件包括炮点记录、检波点记录及关系记录。
58.炮点记录和检波点记录在sps文件标准中均是由两个字段的数据表示,即“线号”、“点号”两个字段。
59.关系记录在sps文件标准中由五个字段的数据表示,即“炮线号”、“激发点号”、“接收线号”、“起始接收点号”、“终止接收点号”五个字段。
60.步骤s102:对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组。
61.具体的,步骤s102包括以下步骤:
62.步骤s102a:读取所述记录文件中的每条记录以及每条记录在所述记录文件中的行号;
63.步骤s102b:对每条记录进行格式约束,以去除每条记录中的冗余字符并将每条记录的格式转换成列对齐格式,从而得到整理后的每条记录;
64.步骤s102c:根据每条记录在所述记录文件中的行号,将整理后的每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组。
65.需要说明的是,本实施例中,所述记录文件的预处理,是指按照seg标准(sps1.0标准或sps2.1标准)来对所述记录文件中的每条记录进行规范化处理。
66.首先,加载生成sps炮点、检波点及关系数据。对获取到的文本数据进行编辑,选择不同列号对应的数据,可以按特征字符过滤字符串,也可以插入指定的数据,数据可以进行列对齐操作(如左对齐或右对齐)。选定上述文本数据中的某一字段(此参数所占的最大长度)。示例性的,转入炮点记录的三维数据时,要求转入数据的个数最少为两个,即线号、点号(这是一条炮点记录最基本的标识字段)。
67.然后,对导入的每行记录进行字段内容格式的约束。如果数据量非常大,实际使用的数据只是一部分,可以选择只保留需要的数据段,方法是确定保留数据的起始行号和终止行号,并选取数据的行间隔数就可以只保留定义的起止行号的数据,其他数据均被过滤
掉;如果每行数据中都带有特定的标识,那么可以把不需要的行标识数据过滤掉,方法是在滤掉保留数据行中的行标识符中填入标识符,滤掉行的标识符位置(列号),滤掉行的标识符长度(位数),将编辑区中指定此标识符的行数据滤掉。
68.反复操作即可不需要的标识符行数据过滤掉;如果数据不是列对齐的,而是以某种分隔符进行分隔数据的,如“,”、“;”、“:”等字符作为分隔(分隔符是自动识别的,不须用户自己定义),前提是每一行由分隔符分隔的数据个数是相同的,如果个数不相等,不进行识别,此时应修改成个数是相等的;选择分隔符转成列对齐的对齐方式(左对齐或右对齐),然后就可以用分隔符分隔的数据转换成列对齐数据。
69.最后,将整理后的每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组。每条记录对应的数组通过下标区分。
70.步骤s103:通过md5信息摘要算法,计算每条记录的散列值。
71.md5信息摘要算法是哈希算法(hash algorithm)的一种,哈希算法又称散列算法、散列函数、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。哈希算法将数据重新打乱混合,重新创建一个哈希值。
72.哈希算法通常有以下几个特点:
73.(1)正像快速:原始数据可以快速计算出哈希值;
74.(2)逆向困难:通过哈希值基本不可能推导出原始数据;
75.(3)输入敏感:原始数据只要有一点变动,得到的哈希值差别很大;
76.(4)冲突避免:很难找到不同的原始数据得到相同的哈希值。
77.哈希算法主要用来保障数据真实性(即完整性),即发信人将原始消息和哈希值一起发送,收信人通过相同的哈希函数来校验原始数据是否真实。
78.哈希算法主要有md4、md5、sha。
79.md5信息摘要算法(message-digest algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(即哈希值),用于确保信息传输完整一致。
80.md5信息摘要算法的原理为:以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位的散列值。
81.md5信息摘要算法不基于任何假设和密码体制,它采用了直接构造的办法,速度很快、非常实用。因此md5信息摘要算法曾是使用最为广泛的安全散列算法。md5信息摘要算法实现共需要五个步骤。
82.第一步,附加填充位。首先填充消息,使其长度为一个比512的倍数小64位的数。填充方法:在消息后面填充一位1,然后填充所需数量的0。填充位的位数为1~512。
83.第二步,附加长度。将原消息长度的64位表示附加在填充后的消息后面。当原消息长度大于2
64
时,用消息长度mod 2
64
填充(即仅取最低64bit)。消息长度恰好是512的整数倍。可以表示为l个512bit的数据块。
84.第三步,初始化信息摘要缓冲区。一个128bit缓冲区用以保存中间和最终哈希函数的结果。它可以表示为4个32bit的寄存器(a、b、c、d)。寄存器初始化为以下的十六进制值:a=67452301;b=efcdab89;c=98badcfe;d=10325476。
85.第四步,按512位的分组处理输入消息。处理每个消息块,每个消息块可分为16个
字,记为m[0],m[1],

,m[15]。这一步为md5的主循环,包括四轮。每个循环都以当前的正在处理的512bit分组和128bit缓冲值abcd为输入,然后更新缓冲内容。四轮的操作类似,每一轮进行16次操作,但每轮访问的数据的次序有所变动。每次操作对a、b、c和d中的其中三个做一次非线性函数运算,然后将所得结果加上第四个变量,再将所得结果向右位移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。每次使用的不同的基本逻辑函数,记为f、g、h、i。其中:
[0086][0087][0088]
h(b,c,d)=b
⊕c⊕
d;
[0089][0090]
第五步,输出结果。所有l个512bit数据块处理完毕后,由a、b、c、d四个寄存器的输出按低位字节在前的顺序得到128位的消息摘要。
[0091]
对于每条炮点记录和每条检波点记录的散列值计算步骤如下:
[0092]
(a)将每条炮点记录中的两个字段组合为第一预设长度的字符串,并将每条检波点记录中的两个字段组合为所述第一预设长度的字符串。
[0093]
(b)通过md5信息摘要算法计算每条炮点记录和每条检波点记录对应的字符串,以得到每条炮点记录的散列值和每条检波点记录的散列值。
[0094]
具体的,在通常情况下,我们是通过炮点和检波点的桩号来确定两条记录是否重复,体现在sps标准中是有两个字段的数据表示,即“线号”、“点号”两个字段。将每条记录的线号与点号组合为一个固定长度的字符串,使用md5信息摘要算法计算该字符串转换成一个128位(16字节)的md5散列值。
[0095]
对于每条关系记录的散列值计算步骤如下:
[0096]
(a)将每条关系记录中的五个字段组合为第二预设长度的字符串;
[0097]
(b)通过md5信息摘要算法计算每条关系记录对应的字符串,以得到每条关系记录的散列值。
[0098]
具体的,区别于炮点及检波点记录的散列值计算,将每条关系记录中的“炮线号”、“激发点号”、“接收线号”、“起始接收点号”、“终止接收点号”组合为一个字符串,使用md5信息摘要算法计算该字符串转换成一个128位(16字节)的md5散列值。
[0099]
步骤s104:依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;其中,所述平衡二叉树的每个结点的键值为对应记录的散列值,所述平衡二叉树的每个结点的实值为对应记录的行号。
[0100]
平衡二叉树中所有结点的键值均不同,即在由每条记录对应的数组构成的平衡二叉树中,不能有重复数组。如果待插入的当前记录的散列值与位于当前平衡二叉树中某个结点的键值相同,那么当前记录对应的数组将会插入失败,返回值为false。如果待插入的当前记录的散列值与当前平衡二叉树中的所有结点的键值都不相同,那么当前记录对应的数组将会插入成功,返回值为true。所以将每条记录对应的数组依次插入平衡二叉树,就可以获取所述记录文件中的重复记录及其行号。
[0101]
本实施例中,采用md5散列值作为二叉树结点的键值,可以大大减低不相等的数据
记录的碰撞几率。平衡二叉树可以满足在进行插入操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。
[0102]
步骤s105:输出所述记录文件中的重复记录及其行号。
[0103]
具体的,将所有重复记录行号及对应的记录信息返回给野外质控技术人员。
[0104]
与常规重复性检查方法相比,本实施例提供的基于平衡二叉树的检查方法可将检查效率大大提升,检查所需时间大大减少。
[0105]
本公开实施例提供一种地震数据重复性检查的方法,所述方法包括获取目标地区的地震勘探辅助数据的记录文件;对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组;通过md5信息摘要算法,计算每条记录的散列值;依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;其中,所述平衡二叉树的每个结点的键值为对应记录的散列值,所述平衡二叉树的每个结点的实值为对应记录的行号;输出所述记录文件中的重复记录及其行号。该方法基于平衡二叉树,实现了快速地进行震勘探辅助数据记录重复性检查,较常规的地震勘探辅助数据记录重复性检查效率提高了一个数量级,时间复杂度可达o(log n),明显提高了sps文件处理效率,减少施工现场时间成本。
[0106]
实施例二
[0107]
在实施例一的基础上,本实施例提供另外一种地震数据重复性检查的方法,包括:
[0108]
步骤s201:获取目标地区的地震勘探辅助数据(seismic processing support format for surveys,sps)的记录文件。
[0109]
其中,所述记录文件包括炮点记录、检波点记录及关系记录。
[0110]
炮点记录和检波点记录在sps文件标准中均是由两个字段的数据表示,即“线号”、“点号”两个字段。
[0111]
关系记录在sps文件标准中由五个字段的数据表示,即“炮线号”、“激发点号”、“接收线号”、“起始接收点号”、“终止接收点号”五个字段。
[0112]
步骤s202:对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组。
[0113]
具体的,步骤s202包括以下步骤:
[0114]
步骤s202a:读取所述记录文件中的每条记录以及每条记录在所述记录文件中的行号;
[0115]
步骤s202b:对每条记录进行格式约束,以去除每条记录中的冗余字符并将每条记录的格式转换成列对齐格式,从而得到整理后的每条记录;
[0116]
步骤s202c:根据每条记录在所述记录文件中的行号,将整理后的每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组。
[0117]
需要说明的是,本实施例中,所述记录文件的预处理,是指按照seg标准(sps1.0标准或sps2.1标准)来对所述记录文件中的每条记录进行规范化处理。
[0118]
首先,加载生成sps炮点、检波点及关系数据。对获取到的文本数据进行编辑,选择不同列号对应的数据,可以按特征字符过滤字符串,也可以插入指定的数据,数据可以进行列对齐操作(如左对齐或右对齐)。选定上述文本数据中的某一字段(此参数所占的最大长度)。示例性的,转入炮点记录的三维数据时,要求转入数据的个数最少为两个,即线号、点
号(这是一条炮点记录最基本的标识字段)。
[0119]
然后,对导入的每行记录进行字段内容格式的约束。如果数据量非常大,实际使用的数据只是一部分,可以选择只保留需要的数据段,方法是确定保留数据的起始行号和终止行号,并选取数据的行间隔数就可以只保留定义的起止行号的数据,其他数据均被过滤掉;如果每行数据中都带有特定的标识,那么可以把不需要的行标识数据过滤掉,方法是在滤掉保留数据行中的行标识符中填入标识符,滤掉行的标识符位置(列号),滤掉行的标识符长度(位数),将编辑区中指定此标识符的行数据滤掉。
[0120]
反复操作即可不需要的标识符行数据过滤掉;如果数据不是列对齐的,而是以某种分隔符进行分隔数据的,如“,”、“;”、“:”等字符作为分隔(分隔符是自动识别的,不须用户自己定义),前提是每一行由分隔符分隔的数据个数是相同的,如果个数不相等,不进行识别,此时应修改成个数是相等的;选择分隔符转成列对齐的对齐方式(左对齐或右对齐),然后就可以用分隔符分隔的数据转换成列对齐数据。
[0121]
最后,将整理后的每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组。每条记录对应的数组通过下标区分。
[0122]
步骤s203:通过md5信息摘要算法,计算每条记录的散列值。
[0123]
md5信息摘要算法是哈希算法(hash algorithm)的一种,哈希算法又称散列算法、散列函数、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。哈希算法将数据重新打乱混合,重新创建一个哈希值。
[0124]
哈希算法通常有以下几个特点:
[0125]
(1)正像快速:原始数据可以快速计算出哈希值;
[0126]
(2)逆向困难:通过哈希值基本不可能推导出原始数据;
[0127]
(3)输入敏感:原始数据只要有一点变动,得到的哈希值差别很大;
[0128]
(4)冲突避免:很难找到不同的原始数据得到相同的哈希值。
[0129]
哈希算法主要用来保障数据真实性(即完整性),即发信人将原始消息和哈希值一起发送,收信人通过相同的哈希函数来校验原始数据是否真实。
[0130]
哈希算法主要有md4、md5、sha。
[0131]
md5信息摘要算法(message-digest algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(即哈希值),用于确保信息传输完整一致。
[0132]
md5信息摘要算法的原理为:以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位的散列值。
[0133]
md5信息摘要算法不基于任何假设和密码体制,它采用了直接构造的办法,速度很快、非常实用。因此md5信息摘要算法曾是使用最为广泛的安全散列算法。md5信息摘要算法实现共需要五个步骤。
[0134]
第一步,附加填充位。首先填充消息,使其长度为一个比512的倍数小64位的数。填充方法:在消息后面填充一位1,然后填充所需数量的0。填充位的位数为1~512。
[0135]
第二步,附加长度。将原消息长度的64位表示附加在填充后的消息后面。当原消息长度大于2
64
时,用消息长度mod 2
64
填充(即仅取最低64bit)。消息长度恰好是512的整数倍。可以表示为l个512bit的数据块。
[0136]
第三步,初始化信息摘要缓冲区。一个128bit缓冲区用以保存中间和最终hash函数的结果。它可以表示为4个32bit的寄存器(a、b、c、d)。寄存器初始化为以下的十六进制值:a=67452301;b=efcdab89;c=98badcfe;d=10325476。
[0137]
第四步,按512位的分组处理输入消息。处理每个消息块,每个消息块可分为16个字,记为m[0],m[1],

,m[15]。这一步为md5的主循环,包括四轮。每个循环都以当前的正在处理的512bit分组和128bit缓冲值abcd为输入,然后更新缓冲内容。四轮的操作类似,每一轮进行16次操作,但每轮访问的数据的次序有所变动。每次操作对a、b、c和d中的其中三个做一次非线性函数运算,然后将所得结果加上第四个变量,再将所得结果向右位移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。每次使用的不同的基本逻辑函数,记为f、g、h、i。其中:
[0138][0139][0140]
h(b,c,d)=b
⊕c⊕
d;
[0141][0142]
第五步,输出结果。所有l个512bit数据块处理完毕后,由a、b、c、d四个寄存器的输出按低位字节在前的顺序得到128位的消息摘要。
[0143]
对于每条炮点记录和每条检波点记录的散列值计算步骤如下:
[0144]
(a)将每条炮点记录中的两个字段组合为第一预设长度的字符串,并将每条检波点记录中的两个字段组合为所述第一预设长度的字符串。
[0145]
(b)通过md5信息摘要算法计算每条炮点记录和每条检波点记录对应的字符串,以得到每条炮点记录的散列值和每条检波点记录的散列值。
[0146]
具体的,在通常情况下,我们是通过炮点和检波点的桩号来确定两条记录是否重复,体现在sps标准中是有两个字段的数据表示,即“线号”、“点号”两个字段。将每条记录的线号与点号组合为一个固定长度的字符串,使用md5信息摘要算法计算该字符串转换成一个128位(16字节)的md5散列值。
[0147]
对于每条关系记录的散列值计算步骤如下:
[0148]
(a)将每条关系记录中的五个字段组合为第二预设长度的字符串;
[0149]
(b)通过md5信息摘要算法计算每条关系记录对应的字符串,以得到每条关系记录的散列值。
[0150]
具体的,区别于炮点及检波点记录的散列值计算,将每条关系记录中的“炮线号”、“激发点号”、“接收线号”、“起始接收点号”、“终止接收点号”组合为一个字符串,使用md5信息摘要算法计算该字符串转换成一个128位(16字节)的md5散列值。
[0151]
步骤s204:依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;其中,所述平衡二叉树的每个结点的键值为对应记录的散列值,所述平衡二叉树的每个结点的实值为对应记录的行号。
[0152]
平衡二叉树中所有结点的键值均不同,即在由每条记录对应的数组构成的平衡二叉树中,不能有重复数组。如果待插入的当前记录的散列值与位于当前平衡二叉树中某个结点的键值相同,那么当前记录对应的数组将会插入失败,返回值为false。如果待插入的
当前记录的散列值与当前平衡二叉树中的所有结点的键值都不相同,那么当前记录对应的数组将会插入成功,返回值为true。所以将每条记录对应的数组依次插入平衡二叉树,就可以获取所述记录文件中的重复记录及其行号。
[0153]
本实施例中,采用md5散列值作为二叉树结点的键值,可以大大减低不相等的数据记录的碰撞几率。平衡二叉树可以满足在进行插入操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。
[0154]
本实施例中,采用一种平衡二叉查找树的变体形式——红黑树,红黑树是一种含有红黑结点并能自平衡的二叉查找树。红黑树具有以下性质:
[0155]
(1)每个结点要么是黑色,要么是红色;
[0156]
(2)根结点是黑色;
[0157]
(3)所有叶子都是黑色,叶子是空(nuil)结点;
[0158]
(4)每个红色结点的两个子结点一定都是黑色(从每个叶子到根的所有路径上不能有两个连续的红色结点);
[0159]
(5)任意一结点到每个叶子结点的路径都包含数量相同的黑结点。
[0160]
这些约束强制了红黑树的关键性质:从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。结果是这个树大致上是平衡的。因为操作比如插入、删除和查找某个值的最坏情况时间都要求与树的高度成比例,这个在高度上的理论上限允许红黑树在最坏情况下都是高效的,而不同于普通的二叉查找树。
[0161]
步骤s204,包括以下步骤:
[0162]
步骤s204a:依次将每条记录对应的数组插入平衡二叉树,并根据当前记录对应的数组的插入是否成功判断当前平衡二叉树中是否存在与当前记录对应的数组相同的重复数组;
[0163]
步骤s204b:当当前记录对应的数组插入成功时,当前平衡二叉树中不存在与当前记录对应的数组相同的重复数组;
[0164]
步骤s204c:当当前记录对应的数组插入不成功时,当前平衡二叉树中存在与当前记录对应的数组相同的重复数组;
[0165]
步骤s204d:获取当前平衡二叉树中的重复数组对应的重复记录及其行号。
[0166]
其中,步骤s204a中,依次将每条记录的散列值插入平衡二叉树,包括以下步骤:
[0167]
(a)在当前平衡二叉树中查找当前记录对应的数组的插入位置;
[0168]
(b)在查找到的插入位置中插入当前记录对应的数组,以保持当前平衡二叉树的平衡性。
[0169]
具体的,在当前平衡二叉树中查找当前记录对应的数组的插入位置,包括以下步骤:
[0170]
(a)从当前平衡二叉树的根结点出发,开始查找;
[0171]
(b)将当前结点的键值与当前记录的散列值进行比较;
[0172]
(c)当当前结点为空时,当前结点为当前记录对应的数组的插入位置;
[0173]
(d)当当前结点的键值等于当前记录的散列值时,当前平衡二叉树中没有当前记录对应的数组的插入位置,且当前结点为当前记录对应的数组的重复数组;
[0174]
(e)当当前结点的键值大于当前记录的散列值时,将当前结点的左子结点设置为
新的当前结点,并返回至所述将当前结点的键值与当前记录的散列值进行比较的步骤,以将新的当前结点的键值与当前记录的散列值进行比较;
[0175]
(f)当当前结点的键值小于当前记录的散列值时,将当前结点的右子结点设置为新的当前结点,并返回至所述将当前结点的键值与当前记录的散列值进行比较的步骤,以将新的当前结点的键值与当前记录的散列值进行比较。
[0176]
如图2所示,上述步骤也可以理解为:
[0177]
(1)从根结点开始查找;
[0178]
(2)若根结点为空,那么将根结点作为插入结点,结束;
[0179]
(3)若根结点不为空,那么把根结点设置为新的当前结点(即插入位置),继续查找;
[0180]
(4)若当前结点为空,那么把当前结点作为插入结点(即插入位置),结束;
[0181]
(5)若当前结点的键值等于当前记录的散列值,插入失败,当前结点为当前记录对应的数组的重复数组,结束;
[0182]
(6)若当前结点的键值大于当前记录的散列值,把当前结点的左子结点设置为新的当前结点,返回步骤(4);
[0183]
(7)若当前结点的键值小于当前记录的散列值,把当前结点的右子结点设置为新的当前结点,返回步骤(4)。
[0184]
按照同样的方法,将步骤s202中得到的数组按照数组下标迭代插入到平衡二叉树结构(插入过程也是平衡二叉树的构建过程)中,如果返回值为true(插入成功),则代表当前平衡二叉树中不存在与之相等的重复数组,如果返回为false(插入不成功),则代表当前平衡二叉树中存在与之相等的重复数组,对应结点的实值为重复记录的行号。
[0185]
步骤s205:输出所述记录文件中的重复记录及其行号。
[0186]
与常规重复性检查方法相比,本实施例提供的基于平衡二叉树的检查方法可将检查效率提高了一个数量级,时间复杂度达o(log n),检查所需时间大大减少。表1为本实施例提供的基于平衡二叉树的检查方法与常规方法的检查时间和时间复杂度比较结果统计表。
[0187]
表1
[0188][0189][0190]
具体的,将所有重复记录行号及对应的记录信息返回给野外质控技术人员。
[0191]
本公开实施例提供一种地震数据重复性检查的方法,所述方法包括获取目标地区的地震勘探辅助数据的记录文件;对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组;通
过md5信息摘要算法,计算每条记录的散列值;依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;其中,所述平衡二叉树的每个结点的键值为对应记录的散列值,所述平衡二叉树的每个结点的实值为对应记录的行号;输出所述记录文件中的重复记录及其行号。该方法基于平衡二叉树,实现了快速地进行震勘探辅助数据记录重复性检查,较常规的地震勘探辅助数据记录重复性检查效率提高了一个数量级,时间复杂度可达o(log n),明显提高了sps文件处理效率,减少施工现场时间成本。
[0192]
实施例三
[0193]
图3为本公开实施例提供的一种地震数据重复性检查的装置的结构示意图,请参阅图3,本实施例提供一种地震数据重复性检查的装置100,包括记录文件获取模块101、记录文件预处理模块102、记录散列值计算模块103、重复记录获取模块104和重复记录输出模块105。
[0194]
其中,记录文件获取模块101,用于获取目标地区的地震勘探辅助数据的记录文件。
[0195]
记录文件预处理模块102,用于对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组。
[0196]
记录散列值计算模块103,用于通过md5信息摘要算法,计算每条记录的散列值。
[0197]
重复记录获取模块104,用于依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;其中,所述平衡二叉树的每个结点的键值为对应记录的散列值,所述平衡二叉树的每个结点的实值为对应记录的行号。
[0198]
重复记录输出模块105,用于输出所述记录文件中的重复记录及其行号。
[0199]
记录文件获取模块101获取目标地区的地震勘探辅助数据的记录文件;记录文件预处理模块102对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组;记录散列值计算模块103通过md5信息摘要算法,计算每条记录的散列值;重复记录获取模块104依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;重复记录输出模块105输出所述记录文件中的重复记录及其行号。
[0200]
基于上述各模块执行地震数据重复性检查的方法的具体实施例已在实施例一中详述,此处不再赘述。
[0201]
实施例四
[0202]
本实施例提供了一种电子设备,该电子设备可以是手机、电脑或平板电脑等,包括存储器和处理器,所述存储器上存储有计算器程序,该计算机程序被处理器执行时实现如实施例一中所述的地震数据重复性检查的方法。可以理解,电子设备还可以包括,输入/输出(i/o)接口,以及通信组件。
[0203]
其中,处理器用于执行如实施例一中的地震数据重复性检查的方法中的全部或部分步骤。存储器用于存储各种类型的数据,这些数据例如可以包括电子设备中的任何应用程序或方法的指令,以及应用程序相关的数据。
[0204]
所述处理器可以是专用集成电路(application specific integrated circuit,简称asic)、数字信号处理器(digital signal processor,简称dsp)、数字信号处理设备
(digital signal processing device,简称dspd)、可编程逻辑器件(programmable logic device,简称pld)、现场可编程门阵列(field programmable gate array,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例一中的地震数据重复性检查的方法。
[0205]
所述存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(static random access memory,简称sram),电可擦除可编程只读存储器(electrically erasable programmable read-only memory,简称eeprom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),可编程只读存储器(programmable read-only memory,简称prom),只读存储器(read-only memory,简称rom),磁存储器,快闪存储器,磁盘或光盘。
[0206]
实施例五
[0207]
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,所述计算机程序被处理器执行时可以实现如下方法步骤:
[0208]
步骤s101:获取目标地区的地震勘探辅助数据的记录文件;
[0209]
步骤s102:对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组;
[0210]
步骤s103:通过md5信息摘要算法,计算每条记录的散列值;
[0211]
步骤s104:依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;其中,所述平衡二叉树的每个结点的键值为对应记录的散列值,所述平衡二叉树的每个结点的实值为对应记录的行号;
[0212]
步骤s105:输出所述记录文件中的重复记录及其行号。
[0213]
可选的,步骤s102包括以下步骤:
[0214]
读取所述记录文件中的每条记录以及每条记录在所述记录文件中的行号;
[0215]
对每条记录进行格式约束,以去除每条记录中的冗余字符并将每条记录的格式转换成列对齐格式,从而得到整理后的每条记录;
[0216]
根据每条记录在所述记录文件中的行号,将整理后的每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组。
[0217]
可选的,所述记录文件包括炮点记录和检波点记录,每条炮点记录和每条检波点记录分别包括两个字段;步骤s103包括以下步骤:
[0218]
将每条炮点记录中的两个字段组合为第一预设长度的字符串,并将每条检波点记录中的两个字段组合为所述第一预设长度的字符串;
[0219]
通过md5信息摘要算法计算每条炮点记录对应的字符串和每条检波点记录对应的字符串,以得到每条炮点记录的散列值和每条检波点记录的散列值。
[0220]
可选的,所述记录文件包括关系记录,每条关系记录包括五个字段;步骤s103包括以下步骤:
[0221]
将每条关系记录中的五个字段组合为第二预设长度的字符串;
[0222]
通过md5信息摘要算法计算每条关系记录对应的字符串,以得到每条关系记录的散列值。
[0223]
可选的,所述平衡二叉树为红黑树;步骤s104包括以下步骤:
[0224]
依次将每条记录对应的数组插入平衡二叉树,并根据当前记录对应的数组的插入是否成功判断当前平衡二叉树中是否存在与当前记录对应的数组相同的重复数组;
[0225]
当当前记录对应的数组插入成功时,当前平衡二叉树中不存在与当前记录对应的数组相同的重复数组;
[0226]
当当前记录对应的数组插入不成功时,当前平衡二叉树中存在与当前记录对应的数组相同的重复数组;
[0227]
获取当前平衡二叉树中的重复数组对应的重复记录及其行号。
[0228]
可选的,依次将每条记录对应的数组插入平衡二叉树,包括以下步骤:
[0229]
在当前平衡二叉树中查找当前记录对应的数组的插入位置;
[0230]
在查找到的插入位置中插入当前记录对应的数组,以保持当前平衡二叉树的平衡性。
[0231]
可选的,在当前平衡二叉树中查找当前记录对应的数组的插入位置,包括以下步骤:
[0232]
从当前平衡二叉树的根结点出发,开始查找;
[0233]
将当前结点的键值与当前记录的散列值进行比较;
[0234]
当当前结点为空时,当前结点为当前记录对应的数组的插入位置;
[0235]
当当前结点的键值等于当前记录的散列值时,当前平衡二叉树中没有当前记录对应的数组的插入位置,且当前结点为当前记录对应的数组的重复数组;
[0236]
当当前结点的键值大于当前记录的散列值时,将当前结点的左子结点设置为新的当前结点,并返回至所述将当前结点的键值与当前记录的散列值进行比较的步骤,以将新的当前结点的键值与当前记录的散列值进行比较;
[0237]
当当前结点的键值小于当前记录的散列值时,将当前结点的右子结点设置为新的当前结点,并返回至所述将当前结点的键值与当前记录的散列值进行比较的步骤,以将新的当前结点的键值与当前记录的散列值进行比较。
[0238]
上述方法步骤的具体实施例过程可参见实施例一,本实施例在此不再重复赘述。
[0239]
综上,本公开提供的一种地震数据重复性检查的方法、装置、电子设备及存储介质,所述方法包括获取目标地区的地震勘探辅助数据的记录文件;对所述记录文件进行预处理,以读取所述记录文件中的每条记录并将每条记录转换成以每条记录在所述记录文件中的行号为索引的一维数组;通过md5信息摘要算法,计算每条记录的散列值;依次将每条记录对应的数组插入平衡二叉树,以获取所述记录文件中的重复记录及其行号;其中,所述平衡二叉树的每个结点的键值为对应记录的散列值,所述平衡二叉树的每个结点的实值为对应记录的行号;输出所述记录文件中的重复记录及其行号。该方法基于平衡二叉树,实现了快速地进行震勘探辅助数据记录重复性检查,较常规的地震勘探辅助数据记录重复性检查效率提高了一个数量级,时间复杂度可达o(log n),明显提高了sps文件处理效率,减少施工现场时间成本。
[0240]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排
他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0241]
虽然本公开所揭露的实施方式如上,但所述的内容只是为了便于理解本公开而采用的实施方式,并非用以限定本公开。任何本公开所属技术领域内的技术人员,在不脱离本公开所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本公开的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献