在实际环境中,地震勘探产生的都是三维数据。三维地震数据的读取一直是一个比较困难的课题,不仅因为数据容量较大,还有数据结构复杂,造成了参数设置复杂。
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开启地震深度学习科研之路