把binary文件转为SU文件/SEGY文件

目录

把binary文件转为SU/SEGY文件

SEGY/SU文件转为binary 

其他常用的su小工具,


把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图

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值