当前位置: 首页 > 工具软件 > ObsPy > 使用案例 >

用obspy修改segy文件道头并保存

范翰飞
2023-12-01

用obspy修改segy文件道头并保存

前言:
最近遇到一份公开的数据,segy的道头里面缺失的信息特别多,导致使用 SeismicUnix没办法正常把数据分离出来。
于是,用Python中的Obspy处理segy文件包中的方法修改了segy文件的道头。随后,再对修改道头的文件做之前的处理流程。

后言:
SeismicUnix也可以修改道头。本文工作之前用Obspy读取道头信息并用Python绘制采集系统图像,所以顺势在Python的基础上修改了道头。

用Obspy修改segy文件的道头

参考官方文件,用segy进行IO

obspy.io.segy - SEG Y and SU read and write support for ObsPy — ObsPy 1.3.1.post0+388.g0d77efd744.obspy.master documentation

参考官方文件,**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')

用SeismicUnix修改道头

三句话搞定,也非常高效

#!/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
 类似资料: