把binary文件转为SU文件/SEGY文件
目录
把binary文件转为SU/SEGY文件
首先,确定好binary文件的快慢轴、大小端以及数据类型。
然后,给binary文件增加道头 suaddhead;
suaddhead < indata.bin ns=3001 > oudata.su
由于suaddhead可以增加的参数有限,在此基础上继续增加其他的道头参数 sushw。比如
sushw < indata.su key=dt a=2 > oudata.su
具体有哪些参数可以填写,查看sukeyword -o。
比如这个dt,单位是us,需要注意一下。2ms的数据要写成dt=2000.
int tracl; /* Trace sequence number within line
--numbers continue to increase if the
same line continues across multiple
SEG Y files.
byte# 1-4
*/int tracr; /* Trace sequence number within SEG Y file
---each file starts with trace sequence
one
byte# 5-8
*/int fldr; /* Original field record number
byte# 9-12
*/int tracf; /* Trace number within original field record
byte# 13-16
*/
sushw配置多个参数的时候可以叠用,这里设置了多个key
for ((mid=0; mid<70; mid++))
do
suaddhead < shot_gather.dat_${mid} ns=3001 | \
sushw key=fldr a=$((mid+1)) |\
sushw key=tracf a=$((mid*126+1)) b=1 |\
sushw key=dt a=2 | \
sushw key=sx a=$((mid*100+500)) | \
sushw key=sdepth a=50 | \
sushw key=gx a=3750 | \
sushw key=gelev a=-500 b=-20 | \
sushw key=counit a=1 \
> data_${mid}.su
done
最后,由于我的数据是单炮记录,方便传递的话,把他们用cat合成一个文件(也可以不合并)。
import os
# get name of all shots
name_list = ''
for i in range(70):
name_i = 'data_' + str(i) + '.su '
name_list += name_i
# name_list.append('data_' + str(i) + '.su')
#print(f"name list, {name_list}")
# cat data_1.su data_2.su ... > cat_all.su
#cwd = os.getcwd()
cwd = '/Users/weiyw/tmp/20220817/model_702/nocut/nocut/vz'
command = 'cd ' + str(cwd) + ' && cat ' + str(name_list) + '> VSP_shot70.su'
print(f"{command}")
os.system(command)
这样SU文件就生成好了,如果需要segy文件再转一次就可以了。
segyhdrs < in.su | segywrite tape=out.segy endian=0 conv=1
SEGY/SU文件转为binary
Seismic Unix里面的命令,与segy有关的,都是用tape=的方式给入文件。
segy转su文件使用segyread
segyread tape=in.sgy > ou.su
su转binary直接脱掉su道头即可
sustrip < in.su > ou.su
如果segy数据是合并在一起的,就用susplit把数据分离开。比如以炮为单位分离数据,
susplit < all.su key=fldr
其他常用的su小工具
- sushift tmin=0.1
给su文件的trace数据加一个整体的shift,这里是向上shift,即开始时间变成0.1s。
- suwind tmax=6
类似于madagascar里的sfwindow,cut掉一部分数据。
- sureamp rf=2
重采样,rf=2表示新的采样率是原来的2倍
- sufind -n name
尝试找到名字中含有‘name’的命令
- a2b,b2a
二进制文件和文本文件转化
- suxwigb
画wiggle图
- suximage
画image图