一种适于任何seg-y地震数据的i/o方法

文档序号:9564442阅读:535来源:国知局
一种适于任何seg-y地震数据的i/o方法
【技术领域】
[0001] 本发明属于地震勘探方法技术领域,具体涉及一种适于任何SEG-Y地震数据的1/ 〇方法,不仅可以供科研生产者学习使用,也可以运用于处理、解释软件系统中,甚至也可以 适于煤田、固体矿产等工程地质勘探领域软件中。
【背景技术】
[0002] SEG-Y地震数据的I/O方法是一种业已成熟的技术。当格式不同的地震数据I/O 时,一般会运用解析和转换方法。但是在应用中它通常只是两种类型之间的数据格式进行 转换。然而目前处理、解释商业软件都有自己内部的地震数据格式,如:PARADIGM、OMEGA等 处理软件都有各自内部使用的数据格式。国内大部分自主软件也都有内部使用的地震数据 格式。这些软件都是通过输入程序先把外界的SEG-Y数据转换成内部格式数据之后再做其 它工作,处理完后,再通过输出程序把内部格式数据输出成SEG-Y数据,以便日后使用。这 样在科研生产过程中,就经常面临地震数据格式之间的转换。当数据量比较大的时候,尤其 是海量数据,转换起来非常耗时,浪费了大量的人力物力,降低了工作效率。

【发明内容】

[0003] 本发明的目的在于解决上述现有技术中存在的难题,提供一种适于任何SEG-Y地 震数据的I/O方法,提高系统数据管理方面的效率,特别是对海量数据的处理,避免多次 进行数据格式转换。地震数据转换后,采用动态存储数据的方法,减少存储空间的占用,在 转换过程中,运用多种优化的程序编写算法,提高数据计算转换效率。
[0004] 本发明是通过以下技术方案实现的:
[0005] -种适于任何SEG-Y地震数据的I/O方法,包括:
[0006] 第一步,读取地震数据二进制文件头和道头信息获得关键信息;
[0007] 第二步,建立新文件,然后将第一步中读取到的关键信息以及原始SEG-Y文件存 储的路径写到新文件的数据结构体中,结构体内容根据实际情况选择,主要包括原始地震 数据类型和地震数据的关键信息等字段;如果以后用到地震数据的关键信息,直接读取新 文件即可;
[0008] 第三步,读取地震道数据,得到格式转换后的数据;
[0009] 第四步,输出地震数据。
[0010] 所述第一步中的关键信息包括:
[0011] 从地震数据二进制文件头读取到的SEG-Y文件的数据格式、采样点数、采样间隔, 测量单位,以及从地震数据道头信息读取到的记录号,cdp号,线号,偏移距,炮点坐标,检波 点坐标,检波点高程,炮点高程;
[0012] 所述第三步包括:
[0013] 判断运行程序的机器字节序:若是大端法,则其低地址端存放的是0x12,若是小 端法,则其低地址端存放的是0x34 ;
[0014] 其次是样点数据值格式转换:将新文件中记录的原始地震数据格式转换成机器数 据格式;
[0015] 定义全局动态数组,然后把格式转换后的每一道地震数据读出,并将所有地震数 据保存在全局动态数组中,完成整个地震数据读取。
[0016] 所述样点数据值格式转换包括以下五种:
[0017] 第一种UNIX的IEEE格式转换:原始数据是4个字节,小端法字节序,进行高低字 节逐一交换;
[0018] 第二种是UNIX的IBM格式转换:分为两步,首先进行高低字节交换,然后把IBM格 式转换为IEEE格式;
[0019] 第三种是PC机的IBM格式转换:把IBM格式转化为IEEE格式;
[0020] 第四种是长整型格式转化:字节高低调序;
[0021] 第五种是整型转换:字节高低调序。
[0022] 所述第四步是这样实现的:
[0023] 如果在全局动态数组生命周期内,则直接输出数据,如果不在全局动态数组生命 周期内,则输出独立的模块(独立的模块是指直接把原始地震数据输出,不存储在动态数 组中);
[0024] 若输出是独立的模块,则根据新文件中保存的地震数据格式,循环读取每一道地 震数据,直接转换成原始地震数据格式,输出地震数据。
[0025] 与现有技术相比,本发明的有益效果是:采取综合各种地震数据格式转化方法的 优点,并且创造性的把原始地震数据格式保存在新文件中,在地震数据I/O中,不需多次进 行数据转换。并且灵活运用c语言编程技巧,提高程序运行效率。把该方法集成在自主软 件中,结果表明,地震数据I/O正确。
【附图说明】
[0026] 图1本方法的步骤框图
[0027] 图2实施例中的地震道数据图。
【具体实施方式】
[0028] 下面结合附图对本发明作进一步详细描述:
[0029] SEG-Y文件一般包括三部分,第一部分是3200字节的EB⑶IC文件头,第二部分是 400字节的二进制文件头,用来存储SEG-Y文件的一些关键信息。第三部分是实际的地震 道,每条地震道包含240字节的道头信息和地震道数据。道头信息中一般保存该地震道对 应的线号、道号、采样点数、大地坐标等信息。地震数据格式共有6种类型。分别是pc机的 IEEE浮点型、Unix的IEEE浮点型、Unix的IBM浮点型、PC机的IBM浮点型,整型和长整型。
[0030] 如图1所示,针对C语言编程,I/O方法步骤如下:
[0031 ] 1)、跳过地震数据EB⑶IC文件头,读取地震数据二进制文件头,得到SEG-Y文件的 数据格式、采样点数、采样间隔,测量单位,然后读取地震数据道头信息。得到对应地震道常 用的属性值。它包括记录号,cdp号,线号,偏移距,炮点坐标,检波点坐标,检波点高程,炮 点高程。把从地震数据二进制文件头和道头读到的信息,作为常用的关键信息。
[0032] 2)、建立一个新文件。用struct语句定义新文件结构体。把第一步中原始SEG-Y 文件的关键信息读取出来,包括原始SEG-Y文件存储的路径和地震数据格式,这些信息用 fwrite函数写到新文件数据结构体中。如果以后用到地震数据的关键信息,直接读取新文 件,不用读原始地震数据。
[0033] 3)、读取地震道数据。
[0034] 首先判断运行程序的机器字节序。有两种:大端法和小端法。一般机器字节序都 是采用大端法。算法!Unsigned short数据,占2个字节,给它赋值0x1234,若是大端法, 则其低地址端应该放的是0x12,若采用小端法,则其低地址端存放的是0x34。
[0035] 其次是样点数据值格式转换。由于地震数据格式共有6种类型,一般机器格式是 PC机IEEE格式。根据新文件记录的原始地震数据格式转换成机器数据格式。程序中用 switch语句分成5种情况。
[0036] 第一种UNIX的IEEE格式转化。这种原始数据是4个字节,小端法字节序。要进 行高低字节逐一交换。旧有的编程方法是采用c语言移位符进行运算。现在利用IAR编译 器。在程序中引用头
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1