「课程更新」——教你一种新的读取三维数据的方法

在实际环境中,地震勘探产生的都是三维数据。三维地震数据的读取一直是一个比较困难的课题,不仅因为数据容量较大,还有数据结构复杂,造成了参数设置复杂。

01 课程回顾

在课程《地震数据处理实战入门》的第二课《怎样读取二维和三维地震数据?》,我给大家讲解了怎样使用segyio软件包读取三维数据的方法。

这个方法的主要原理是:使用程序打印出地震道头的信息,从中找到inline和crossline的数据范围,然后手动计算数值。从而确定了三维数据中的x, y 两个维度的参数。

这个方法有个最大的问题是:每次要人为去寻找和计算参数,这样效率不是很低吗?

有没有程序自动查找参数,然后自动计算出来的方法呢?还真有。

02 全自动读取三维数据的方法

我们希望程序直接读出三维数据的x, y, z,这个想法怎样实现呢?

这里我们使用一个F3_seismic.sgy数据,这是一个比较规范的荷兰的数据。

首先是加载和读出整体的数据。

数据就是这样的:

这里data3D数组的第二维数值462就是三维数据体的z值。

然后需要读出inline和crossline的序列。

看起来像是这样的:

最后要计算出inline和crossline的跨度,即三维中最重要的x, y的数值。

这样就算出了x和y的结果:

这里有一个情况要特别说明,这个自动化计算三维体尺寸的方法局限性是比较大的。这里的关键就是三维体的道头数据要比较规范,程序能够正确地读出inline和crossline。否则,用程序读出的数值就会出错。这也是为啥上面例子要换一个数据体,而用Kerry3D.segy数据,程序就不能正确识别,读出的x和y都为1。

简单来总结,要获取三维体尺寸的方法可以使用以下几招:

首先,使用自动化程序读取尺寸。

其次,如果上述方法失败,可以考虑程序读出segy道头,人工进行分析和赋值。

再次,如果连segy道头信息也没有,可以考虑使用地震软件如petrel等进行扫描来识别尺寸。

03 其实还有其它读取SEGY的软件包

读取地震数据的软件包不只segyio一个,这里再给大家推出一个——obspy。

obspy是一个针对地震领域开发的python库。其目的是使地震学软件包和工作流程的发展更为便利,也利用这些功能为地震学进入更大的科学python生态系统建桥铺路。obspy对地震学界内通常使用的几乎所有文件格式提供读写支持,它取代了大量的文件格式转换工具;在这样广泛的输入/输出支持的基础上,在处理程序时使用地震学家之间交流的专业术语。obspy整合了获取世界范围内地震数据中心所发布数据的方法,集成了大量地震学界所用的专有库,并且使用一个简单易用的接口统一调用所有功能。

具体到读取三维地震数据的案例,我们怎样来操作呢?

直接给大家看看关键的代码:

其实原理和segyio是一样的。

相关的内容我已经更新到了《怎样读取二维和三维地震数据?》图文和《地震数据处理实战入门》内容,完整的程序可以查看对应的图文获取。今天的课程就到这里,以后会持续更新和完善课程内容,再见。

扩展阅读:

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

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

你可能感兴趣的:(「课程更新」——教你一种新的读取三维数据的方法)