通过计算机编程快速读取地震数据的方法

2016-07-10 08:41胡斌
电子技术与软件工程 2016年8期
关键词:浮点数二进制微机

胡斌

摘 要:本文主要主要对地震数据对存储特点、存储数据对格式简要说明,提出了一种利用计算机编程快速读取地震数据的方法。

【关键词】计算机编程 读取 地震数据

油气资源的开发在国家发展中占有重要的地位,为了进一步的促进油田的生产稳定,往往需要在开采前进行地质情况探测。地震采集则是一种深入挖掘油田开采潜力的勘探手段,在地震勘探的过程中,往往会产生大量的采集数据,对于这些数据的存数方式十分重要的。本文主要主要对地震数据对存储特点、存储数据对格式简要说明,提出了一种利用计算机编程快速读取地震数据的方法。

1 地震数据的存储特点

地震数据的存储于我们一般所说的数据存储不同,一方面,地震采集过程中,会产生十分庞大的采集数据,在一个区块中采集数据就会产生上百个TB;另一方面,地震采集数据与油田开发有着极为紧密的联系,因此其对于数据精度的要求高,并且为了区分与其他数据,地震数据往往有行业独特的数据格式和标准。

1.1 地震数据的来源

地震数据主要来源于地震勘探过程,通常情况下,地震勘探主要包含了三个过程:野外采集过程、室内地震资料处理过程以及地震资料解释三个阶段。采集得到的是最为原始的地震数据,而资料处理过程中得到的是经过处理的地震数据,地震资料解释阶段往往数据较少。

野外采集过程中,勘探工作者往往会根据勘探计划,将地震仪器放置在野外进行数据采集勘探,这一时期产生的勘探数据是多种多样的,数量极为庞大,这些采集数据往往被存储在地震磁带之中,主要的地震数据包括有高程、坐标等。

在资料处理过程中,相关工作人员往往会根据计算机对原始的采集数据进行科学计算,继而产生一些结果性的地震数据。

1.2 地震数据的类型

在地震勘探的三个过程中,各自会产生不同类型的地震数据。在野外采集过程中,通常采用微测井方法进行地表调查,所产生的地震数据包含有:原始数据盘、低降速带解释成果、图形文件、施工设计、高程、坐标等不同的类型。在地震资料处理过程中,通常会根据不同的处理流程产生不同类型的数据类型,在地震资料的皆是过程中,解释人员根据地质任务以及设计要求进行地震数据解释,所产生的成果数据往往与上一个流程相差无几。

2 地震数据的格式

地震数据的格式往往以特定的记录方式记录在磁带上,地震数据的格式最初包括有十几种的格式,但随着计算机的迅速发展,现阶段用于地震数据存储的格式选择往往只有SEG-D格式和SEG-Y格式两种。通常情况下,SEG-D格式往往应用在野外数据采集过程,作为原始数据的格式,而SEG-Y格式则是地震资料处理过程中的特定存储格式,作为一种数据交换的标准。

SEG-Y格式分为四个部分:第一部分是以3200个字节组成的数据块,主要是有关磁带记录的辅助信息,第二部分是二进制文件头400个字节组成的数据块,记录有采样间隔、记录长度及格式码等重要参数,第三部分是地震道数据,在磁带上每一道表现为一个记录,第四部分是结束标记EOF或EOT。SEG-Y格式的道记录分为两部分,第一部分是地震道的道头字,记录了本道的有关信息、第二部分是地震道的样点值。

3 通过计算机编程快速读取地震数据的方法

SEG-Y文件通常由文件头文件和数据体两个部分组成,数据体是访问和读取的主体,其中包含了大量的地震数据,而头文件是对文件的一种参数说明,给文件的读取提供必要的信息。文件头总长度分为字符型文件头和二进制文件头,数据体则是由多个数据道组成。

3.1 读取文件头

字符型文件头的数据通常需要将其中的EBCDIC代码转换成ASCII代码后就能够正确显示,因此常用的读取方式就是建立两种代码的关系对应码。而对于二进制文件头的读取则相对的复杂一些,这是因为二进制文件头是由二进制数据构成,包括16位和32位两种数据形式,在读取的过程中要注意其存储格式,工作站与计算机对文件头的存储迅速存在相反的情况。

对于二进制文件头的读取流程如下:读取400个字节的文件信息进入内存——按照地址从低到高的顺序存放——数据的存数位数——转换字节数。例如读取一个16位的数据,读取第一个字节放入一个16位临时整型数中,将整型数据左移8位,然后,再读入下一字节, 将其放入另一个16位临时整型数中,最后,将临时 16位数按位或,得到16位微机格式的地震数据。

3.2 读取地震数据

通常情况下,数据体中的数据道都是以工作站的存储方式进行数据存储,与微机中的存储格式存在差异,因此,需要将导数据进行高地位转换。SEG-Y道数据的常用记录形式为IBM浮点型数据和IEEE浮点型两种。以下简要介绍IBM浮点型数据(32位)的存储格式和读取方法。

IBM浮点型数据分为三个部分:符号位占1位,指数部分占7位,尾数部分占24位。其读取方法为:顺序读入道数据——4字节数据——数据转换(同文件头的数据转换方式)——32位数右移31,得到符号位,读取出来保存。32位数与 0x7f000000按位与,获得浮点数指数部分,保存;将 32位数与0x00ffffff按位与,获得浮点数位数部分,保存。

其中格式转换可以通过类 conversion实现,conversion 的定义如下:

class conversion

{ short char2int( char * array) ; / /将工作站上的整型数转换为微机格式

void int2char( short dat, char * array) ; / /将微机上的整型数转换为工作站格式

float IBM2PC( char * array) ; / /将 IBM 浮点九转换为微机格式浮点数

void PC2IBM( float dat, char * array) ; / /将微机上的浮点数转换为 IBM 浮点数

}

参考文献

[1]于盛.高性能集群系统在野外现场地震资料处理中的应用明[J].软件导刊,2012,9(4):(73-75).

[2]王长国,俞华,周兴松。地震处理系统的现状及其发展[J].石油机械,2013,31(增刊):115-11.

[3]严哲,张学强,朱翔鹏.两种数据类型的存储特征分析及其转换[J].工程地球物理学报,2007,4(1):43-45.

作者单位

钦州市地震监测预报中心 广西壮族自治区钦州市 535000

猜你喜欢
浮点数二进制微机
用二进制解一道高中数学联赛数论题
四种Python均匀浮点数生成方法
有趣的进度
二进制在竞赛题中的应用
Fuzzy Search for Multiple Chinese Keywords in Cloud Environment
在C语言中双精度浮点数线性化相等比较的研究
非精确浮点数乘法器设计
电力系统微机保护装置的抗干扰措施
新型微机可控顶控制系统原理及现状
锁相环在微机保护中的应用