🧠

Res SU (10)SU道头操作

SU道头数据

SU数据格式继承了SEGY的道头。如果你的数据不是SEGY,而是从其它格式转换得到的,就需要设置一些道头关键字,以使得数据与SU程序协调一致。
  • SUADDHEAD– 在裸数据中写道头,设置道头字
  • SUSTRIP– 把SU格式数据中的道头切除并存放在文件中,形成裸数据
  • SUPASTE–把道头文件再粘贴回来,把裸数据添加道头文件生成SU格式的数据文件
  • SUKEYWORD– 文件“segy.h”中SU的关键字指南
  • SURANGE– 获得非零道头输入值的范围(最大值和最小值)
  • SUSHW– 设置一个或多个道头字,利用道数、取余数(mod)或整除(integer divide)计算道头字的值,或从一个文件中输入道头字的值
  • SUCHW– 利用一个或两个已存在的道头字来计算新的道头字
  • SUGETHW– 获取SU数据中道头字的值
  • SUEDIT– 检查Segy磁盘文件并编辑道头
  • SUXEDIT– 检查Segy磁盘文件并编辑道头
  • SUSWAPBYTES– 把SU数据字节顺序从big endian 交换为 little endian,或者是相反。

suaddhead – 给二进制数据加SU道头

如果我们的数据由二进制C浮点型文件组成(例如每道1024个采样点),那么下面命令系列将产生SU数据文件“data.su”:
suaddhead < data.bin ns=1024 > data.su
对于其它类型(如整型)使用命令recast:
recast < data.ints in=int out=float | suaddhead ns=1024 > data.su
如果数据首先是从Fortran转换而来的整型,那么处理流程为:
ftnstrip < data.fortran | recast in=int out=float | suaddhead ns=1024 > data.su

sustrip – 将SU道头与SU数据分离

命令suaddhead的逆操作就是sustrip.下面的命令行将去掉文件SU道头,并把SU道头存到“data.headers”中,形成裸数据data.bin:
sustrip < data.su head=data.headers > data.bin

supaste–将SU道头与SU数据分离

对二进制数据完成处理后,我们可能需要把道头粘贴回去,这时用命令supaste。下面的命令行将把文件“data.headers”中的道头内容粘贴回数据中:
supaste < data.bin head=data.headers > data.su

sukeyword –查看SU关键字

sukeyword -o
将显示SU关键字的列表,SU道头中确定有80多个关键字,大多时候只使用其中相对很小的一部分。

surange –获得道头字值的范围

指定数据中道头字值得范围,对于道头字而言是非常有用的信息。键入:
surange < data.su
将返回所有非零SU道头字值得范围。
请注意,对于损坏的数据来说,很多道头字中可能出现非常奇怪的值,检测这种问题也是surange命令的主要用法之一。
notion image

sugethw – 获取SU道头字的值——查看道头字

surange命令可以查看整个数据道头字的范围(最大值和最小值)。但是,我们往往需要按一定的顺序一道一道地查看道头字的值。命令sugethw就是这样的一个工具。例如:
sugethw < data.su key=keyword1,keyword2,... | more # 例如 sugethw < data1.new.su key=tracl,tracr,offset,dt,ns | more sugethw < data.su key=tracl,tracr,offset,dt,ns,fldr,tracf,ep,cdp,cdpt
下面给出一个具体的例子:
suplane | sugethw key=tracl,tracr,offset,dt,ns | more
sugethw对于道头字的排列顺序和个数没有要求,但至少要指定一个道头字。
notion image
如果需要把道头字输出成二进制的文件,可用下面的命令:
suplane | sugethw key=tracl,tracr,offset,dt,ns output=binary > file.bin
对于观测系统,你可以使用下面的命令输出到文件中去:
suplane | sugethw key=tracl,tracr,offset,dt,ns output=geom > hdrfile

sushw – 在SU数据中设定道头字的值

sushw指定的可选参数有:
  • key=   要修改的关键字
  • a=     第一道的值
  • b=     组内增加量
  • c=     组间增加量
  • d=     道偏移量
  • j=      组内元素个数
这些额外的可选参数可用来做更加复杂的操作。这样做是非常重要的,因为道头字的值与道数据的位置常常有直接的关系。道头字的值用下面的公式计算:
  • i = itr + d
  • val(key) = a + b * (i % j) + c * (i / j)
这里itr是道号(注意:第一道是itr=0,而非1),%表示取余数,/表示除法。
例如,我们可以设定头五道的道头字sx=6400,第二个5道中sx=6300,依次类推,每5道递减100:
sushw < data1.su key=sx a=6400 c=-100 j=5 > data1.new.su
 
另一个例子,我们设置每5道的offset的值为200:200:1000,命令格式为:
sushw < data1.su key=offset a=200 b=200 j=5 > data.out.su
我们可以只使用一个sushw命令就可以完成上面3个操作:
sushw < data.su key=dt,sx,offset a=2000,6400,200 b=0,0,200 c=0,-100,0 j=0,5,5 > newdata.su
下面是一个实际的例子,tracl从1开始,每隔100道增加1;cdp从1开始,每道增加1,一直增加到100,然后重复从1开始;offset同tracl,只是从0开始;sx同cdp;sy同offset;ns全部设为495;dt全部设为1000:
sushw < filename.su key=tracl,cdp,offset,sx,sy,ns,dt a=1,1,0,1,0,495,1000 b=0,1,0,1,0,0,0 c=1,0,1,0,1,0,0 j=100,100,100,100,100,0,0 > filename_new.su
 

例子:向道头关键字设置参数

# 将data1.su的到头关键字grnors设置为8127,生成新文件 sushw < data1.su key=grnors a=8127 c=0 j=0 > data1.new.su # 查看 suplane | sugethw < data1.new.su key=tracl,tracr,offset,dt,ns,grnors | more suplane | sugethw < data-tm-flt-dec-bal-cdp.su key=tracl,tracr,offset,dt,ns,grnors | more
notion image
我这里用这三个关键字记录信息
  • grnors,grnofr,grnlof
  • tnmo、vnmo、cdp(这个关键字有,刚好记录)
notion image
具体命令
# 将data1.su的到头关键字grnors设置为8127,生成新文件 sushw < data1.su key=grnors,grnofr,cdp a=8127,8127,225 c=0,0,0 j=0,0,0 > data1.new.su # 查看 suplane | sugethw < data1.new.su key=tracl,tracr,offset,dt,ns,grnors,grnofr,cdp

suchw –在SU数据中改变(或计算)道头字的值

有些道头字(如cdp)可以从已有的道头字计算而来,程序suchw就提供了这种功能。
参数有:
  • key1   输出的关键字
  • key2   输入的关键字
  • key3   输入的关键字
  • a   偏移量
  • b   key2关键字的倍数
  • c   key3关键字的倍数
  • d   overall scales
我们可以使用两个道头字的值(key2 和key3),利用下面的方程式计算第三个道头字的值(key1):
  • val(key1) = (a + b * val(key2) + c * val(key3)) / d
例如:
suchw<indata key1=gx,cdp key2=offset,gx key3=sx,sx b=1,1 c=1,1 d=1,2 >outdata

suedit和suxedit – 编辑SU数据中道头字的值

  • 该程序让用户将数据采样值按表格形式浏览到数据,或者浏览或改变单个道头字的值
suplane > data.su suedit data.su
notion image