前言:
最近遇到一份公开的数据,segy的道头里面缺失的信息特别多,导致使用 SeismicUnix没办法正常把数据分离出来。
于是,用Python中的Obspy处理segy文件包中的方法修改了segy文件的道头。随后,再对修改道头的文件做之前的处理流程。
后言:
SeismicUnix也可以修改道头。本文工作之前用Obspy读取道头信息并用Python绘制采集系统图像,所以顺势在Python的基础上修改了道头。
参考官方文件,用segy进行IO
参考官方文件,**SEGYTraceHeader
**对象有哪些可以调用的函数,其中包括了__setattr__
obspy.io.segy.segy.SEGYTraceHeader — ObsPy 1.3.1 documentation
# headings
# read in segy
filename = 'path.sgy';
segy = _read_segy(filename)
print(segy) # >> 16800 traces in the SEG Y structure.
# set parameters
NameOut = 'NameofField'
NTr = 16800
# change headers
for ii in range(NTr):
itic = ii % 3
segy.traces[ii].header.__setattr__('trace_identification_code', itic)
# save
segy.write(f'refine_tic_{NameOut}.sgy')
三句话搞定,也非常高效
#!/bin/bash
segyread tape=$1 > data.su
sushw < data.su key=trid a=0 b=1 j=3 > cdata.su
segyhdrs < cdata.su | segywrite tape=refine_trid_data.sgy endian=0 conv=1