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

本文详细介绍了如何使用Python库Obspy修复segy文件中缺失的道头信息,并展示了如何通过`SEGYTraceHeader`对象操作,包括读取、设置参数和保存修改后的文件。同时,对比了与SeismicUnix快速修改道头的简洁方法。
摘要由CSDN通过智能技术生成

用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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值