怎样保存SEGY数据供工程使用?(含程序)

在《地震数据处理实战入门》的第五课《怎样修改保存二维和三维地震数据?》中,给大家详细讲解了怎样保存SEGY数据。很多同学使用Python程序成功构建了新的SEGY数据,但是将数据投入工程项目使用时(如做高分辨率、断层识别等),出现了问题。

比如在商业地质勘探软件Petrel中,导入我们新建的数据资料,报了这样的错误:

这是什么原因呢?

01 从SEGY文件结构找原因。

SEGY地震数据一般以地震道为单位进行组织,采用SEG-Y文件格式存储。SEG-Y格式是由SEG (Society of Exploration Geophysicists)提出的标准磁带数据格式之一,它是石油勘探行业地震数据的最为普遍的格式之一。

SEGY的数据结构比较复杂,详细介绍可以参考另外一门课《深度学习地震去噪实战》的第4节课《地震仿真噪声实战》。这里简单介绍一下:标准SEG-Y文件一般包括三部分。第一部分是EBCDIC卷头说明。第二部分是二进制文件头。第三部分是实际的地震道。

回顾一下当时保存地震数据的程序:

可以看到,在上面的程序中,新保存的地震数据里面没有卷头说明和文件头的信息,只保存了地震道的数据。这样的数据使用简单的画图程序打开没有问题,但是用到专业的处理软件做后面复杂的工作就有问题了。

02 一种简单的解决方案。

找到了问题原因,要解决起来就有了思路,就是要构造新数据的卷头说明和文件头信息。

如果大家只是对原始数据做了数值上的处理,没有改变数据尺寸,这还比较好办。就是把原始数据的卷头说明和文件头传给新数据即可。主要程序可以这样写:

这里有几个点要说明:一是专业软件读取地震头时主要关注的是数据的尺寸,所以如果没有对数据尺寸进行修改,就可以直接复制原始数据的卷头说明和文件头信息。二是src.text[0]读出了原始数据的卷头说明。三是src.header读出了所有地震道的文件头信息。

03 更复杂的解决方案。

如果同学们对原始数据的尺寸也进行了改变(比如进行了切割),那就需要下一番功夫来修改卷头说明和文件头信息了。

首先是修改卷头说明。

我们可以把原始卷头下载到文本中进行修改,然后再传递给新的地震数据。

比如这里你可能改变了地震道的数量和抽样点数量,就可以自行修改。

其次是修改地震道的文件头。

红色框部分我们首先复制了对应地震道文件头的信息,然后修改了抽样点数值。这里的115对应了抽样点字段。

详细的操作和说明建议大家看看这个网站:

https://segyio.readthedocs.io/en/latest/segyio.html。

04 顺带讲解怎样将SEGY保存为MAT。

很多同学在问,想把SEGY数据保存为MAT格式,方便在Matlab中处理。这里直接给大家看程序。

使用scipy软件库,就可以把二进制数据保存为mat格式数据。这里要注意的是保存为字典的数据结构。

在matlab读取mat就用这样的程序:

以上就是今天的内容。今天深入讲解了SEGY数据的一些保存方法,掌握了这些知识,会非常有助于大家开展地震数据处理深入的研究。如果你有问题讨论或希望获取数据或程序都欢迎联系我交流。下节课再见。

扩展阅读:

怎样轻松入门地震勘探研究:先从地震数据处理开始

如何从0开启地震深度学习科研之路

你可能感兴趣的:(怎样保存SEGY数据供工程使用?(含程序))