怎样修改保存二维和三维地震数据?(附程序)

01 二维数据保存

1. 保存为SEGY数据

这次课程用的二维剖面数据还是Model94_shots.segy,这是1994年的加拿大逆掩岩综合数据集。具体数据情况见前面课程介绍。

原数据尺寸是(2000,123600)特别大,现在我们读取(500,500)的剖面来显示:

那么怎样将数据保存为SEGY格式呢?关键就是以下部分的程序了。

这里有几个关键点讲一下:

一是道的排序格式,选1或2区别不大。

二是编码格式最好选5,即IEEE浮点格式。

三是tracecount是道数。

四是np.arange()函数生成的是一个等差数列。其中的4是抽样频率,2000是采样点数500乘以4得来的。

这样就轻松生成了SEGY了数据。

使用程序来显示剖面,可以看到和原始数据看的剖面是一样的。

2.保存为二进制格式数据

保存为二进制文件的方法有两种。

第一种方法是tofile法,这种方法大家用得比较多。保存和读取数据的关键代码是这样的:

第二种方法是save法,保存和读取数据的关键代码是这样的:

这两种方法都是将数据保存为二进制数据,但是区别有哪些呢?

首先说说tofile法。

一是tofile函数只能将数组保存为二进制文件,文件后缀名没有固定要求。

二是这种保存方法对数据读取有要求,np.fromfile 需要手动指定读出来的数据的的dtype,如果指定的格式与保存时的不一致,则读出来的就是错误的数据。

三是tofile函数不能保存当前数据的行列信息,不管数组的排列顺序是C语言格式的还是Fortran语言格式,统一使用C语言格式输出。因此使用 np.fromfile 读出来的数据是一维数组,需要利用reshape指定行列信息。但是这也隐藏了一个很大的优势,就是可以保存任意维度的数据,这也是这种方法为大家青睐的原因。

再来说说save法。

一是save函数将数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,文件后缀名是固定的哦。

二是这种保存方法对二进制数据读取没有要求,np.load就可以直接读出数据,不用管数据的类型和维度。

三是使用 np.savetxt 和 np.loadtxt 只能读写 1 维和 2 维的数组,因此对于三维文本数据无能为力了。不过np.save保存三维数据毫无压力,大家可以放心使用。

02 三维数据保存

这次的三维数据同样是使用前面课程的Kerry3D.segy,用的是1996年新西兰塔拉纳基盆地叠前数据。这个数据概貌是这样的:

三维数据一般都比较大也比较复杂,普通软件打开SEGY三维数据非常困难,因此一般没有再考虑保存为三维的SEGY数据。作为数据处理来使用,我们一般考虑将三维数据保存为二进制数据。保存的方法和二维数据的原理是一样的。

第一种方法是tofile法,保存和读取数据的关键代码是这样的:

第二种方法是save法,保存和读取数据的关键代码是这样的:

今天的课程就到这里。这节课给大家讲解了怎样轻松保存二维和三维地震数据。详细程序可以联系我获取,欢迎关注我交流,再见。

扩展阅读:如何从0开启地震深度学习科研之路

你可能感兴趣的:(怎样修改保存二维和三维地震数据?(附程序))