segy地震数据的读取python_Python-segy格式地震资料segyio读写包说明(二),pythonsegy,数据,学习,笔记...

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 16:46   11   0

python segy格式地震数据读写包segyio学习笔记(二)

最近大致搞明白了segyio读取叠后和叠前segy数据的方法,以及内部存储结构,以两段代码为例:

叠后数据读取。这是一个从给定时窗内提取每道的均方根振幅,然后进行拟合求取tar因子的简单代码:

import segyio

import numpy as np

import matplotlib.pyplot as plt

file = ‘/home/geou6/0922_j301_down_test.segy’

data =np.loadtxt(’/home/geou6/0922_j301_op_ampana.txt’

r = np.array([])

with segyio.open(file, iline=189, xline=21) as f:

for l in f.iline:

for t in l:

amp = np.sqrt(np.mean(t ** 2))

r = np.append(r, amp)

lnt = np.log(data[:, 2])

lnr = np.log

f_1 = np.polyfit(lnt, lnr, 1)

p_1 = np.poly1d(f_1)

print(f_1)

print(p_1)

plt.plot(data[:, 2], r)

plt.show()

plt.plot(lnt, lnr)

plt.show()

读取叠后数据时,第一个循环l in f.iline,这时l是一条illine线,第二重循环t in l中,t才是一个地震道,是一个一维的numpy数组。注意f.iline和并不是ndarray。他们的存储结构我还没有搞太明白,感觉是个类似生成器或者类的东西?

读取叠前数据时:

file = ‘/home/geou6/0922_j301_down_gather_test1.segy’

with segyio.open(file, iline=189, xline=21) as f:

print(f.gather[1 ,1][0:2]) #这时打印的1线1点的第一道

for m in f.gather[:, :]: #m是个道集和非一条illine线

for n in m: #n是地震道

print(n)

for k in f.gather[1, 1]:

for j in k: # k 是地震道, j 就是样点了

print(j)

注意f.gather[1, 1][0 :2]不能写成f.gather[1,1,1]或f.gather[1,1][0],f.gather[:, :]也不能写成f.gather,这个我还要继续去搞明白

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP