去仪器响应练习

用我的脚本下载了一堆的miniseed放在seed下,仪器响应文件放在resp文件夹下,利用obspy去除仪器响应,还保存为miniseed。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import os
from glob import glob
from obspy import read, read_inventory
# 设置路径
seed_folder = "seed"
resp_folder = "resp"
output_folder = "seed_corrected"
os.makedirs(output_folder, exist_ok=True)
seed_files = glob(os.path.join(seed_folder, "*.seed")) # 遍历所有 seed 文件
for seed_file in seed_files:
print(f"Processing {os.path.basename(seed_file)}")
try:
st = read(seed_file) # 读取 MiniSEED 数据
for tr in st:
net = tr.stats.network
sta = tr.stats.station
loc = tr.stats.location
cha = tr.stats.channel
resp_file = os.path.join(resp_folder, f"RESP.{net}.{sta}.{loc}.{cha}") # 构造 RESP 文件路径
if not os.path.exists(resp_file):
print(f"RESP file not found: {resp_file}, skipping trace.")
continue
inventory = read_inventory(resp_file) # 读取 RESP 文件作为 inventory
# 去除仪器响应
tr.remove_response(inventory=inventory, output="VEL", pre_filt=[0.001, 0.002, 0.3, 0.45 ], zero_mean=True, taper=True)
output_file = os.path.join(output_folder, os.path.basename(seed_file)) # 输出文件名
st.write(output_file, format="MSEED")
print(f"Saved corrected data to {output_file}\n")
except Exception as e:
print(f"Error processing {seed_file}: {e}")