type
status
date
slug
summary
tags
category
password
icon
AI 摘要
本篇学习记录主要参考 ObsPy 官方文档及其中文翻译稿,另有参考其他个人资料站“地震学学习笔记”
前言
应《数字信号处理(地学)》课程的学习要求,结合研究地震学领域,需要对地震数据(波信号)的处理方法和流程做一个简单的期末实操汇报。故此,本次 ObsPy 实操使用 Jupyter Notebook 编辑运行,在线编辑可尝试使用官方 Try 。
0. ObsPy 是什么?
ObsPy 是一个开源的 Python 库,专门用于处理地震学数据。它提供了一套强大的工具,可以帮助用户读取、写入、处理、分析和可视化地震数据。ObsPy 的目标是提供一个易于使用、功能强大且可扩展的平台,用于地震学研究和应用。
- 数据读取和写入: 支持多种地震数据格式,如 SAC, MiniSEED, SEED, GeoJSON 等。
- 数据预处理: 包括滤波、去趋势、积分、微分、重采样等。
- 频谱分析: 包括快速傅里叶变换 (FFT)、功率谱密度 (PSD)、时频分析等。
- 地震事件处理: 包括震相拾取、事件定位、震级计算等。
- 仪器响应处理: 包括去除仪器响应、模拟仪器响应。
- 可视化: 包括波形图、频谱图、地震剖面图等。
- 数据访问: 通过 FDSN 客户端访问全球地震台网数据。
- 地理空间处理: 包括坐标转换、距离计算等。
General Packages: obspy.core、obspy.imaging、obspy.signal、obspy.geodetics、obspy.taup、obspy.realtime
Others: (Scripts)、(Clients)、(IO)
1. 世界标准时间
“时间问题”是申请地震数据最基本的问题,利用 ObsPy 申请数据时需要用
UTCDateTime
对象来控制发震时刻、申请波形数据的起始时间和结束时间等。2. 读写地震数据
ObsPy 利用
read()
函数将各种格式的地震数据(如 SAC、MiniSEED 等)读入 Stream
中。Stream
类似于列表对象,可以包含多个 Trace
。每个 Trace
都包含指向连续时间序列的 data
属性和指向所有元数据的 stats
属性。例如,starttime
和 endtime
等元数据都以字典形式储存在 Stats
对象中。经过处理后,可以用
write()
方法将数据保存到本地。3. 波形绘制
4. 从数据中心申请地震数据
通过
obspy.clients.fdsn
模块可以访问任何支持 FDSN Web Services 协议的网络服务器,功能强大,基本上可以满足科研需求,比如下载波形数据、地震目录和台站元数据等。如果想同时发送多个请求可以使用 get_waveforms_bulk()
方法通过
get_waveforms()
方法从服务器下载波形数据时,可以添加关键字参数自定义申请数据:- 添加参数
filename="1.mseed"
后将会把申请的数据保存在本地目录中的1.mseed
,返回对象的结果为None
;
- 设置
attach_response=True
将为波形数据添加仪器响应信息。
以下示例申请了美国 IU 台网 A* 台站 LHZ 分量从 2010-02-27 06:45 (UTC) 开始的 60 分钟连续波形数据,可使用通配符作为条件参数。
下载地震事件:通过 get_events 方法可以从服务器申请地震数据,申请结果返回 Catalog 对象:
下载台站数据:通过 get_stations 方法可以从服务器申请台站数据,申请结果返回 Inventory 对象:
5. obspy.signal - Signal processing routines for ObsPy
Capabilities include filtering, triggering, rotation, instrument correction and coordinate transformations.
5.1 Filter
The
filter
module provides various filters, including different bandpass, lowpass, highpass, bandstop and FIR filter.滤波器
模块提供各种滤波器,包括不同的带通、低通、高通、带阻和 FIR 滤波器。根据官方文档,ObsPy 有两种方法来调用 Filter 模块:
- The filter takes the data explicitly as argument (i.e. an
numpy.ndarray
) and therefore thesampling_rate
needs to be also specified. It returns the filtered data.
过滤器直接使用数据作为参数(即
numpy.ndarray
),因此 sampling_rate
也需要指定。这种调用方式直接返回滤波后的数据。- For
Stream
andTrace
objects simply use their respective filtering methodsStream.filter()
andTrace.filter()
.
第二种在原数据数组上就地执行,之后将无法再访问原始数据。一般需要保留原始数据,所以请使用
copy()
创建 Stream 或 Trace 对象的副本,再进行第二种调用滤波器。5.2 Instrument Correction
The response of the instrument can be removed by the
invsim
module. 仪器去响应可以通过
invsim
模块。The following example shows how to remove the the instrument response of a STS2 and simulate an instrument with 2Hz corner frequency.
以下示例说明如何删除 STS2 的仪器响应并模拟具有 2Hz 转折频率的仪器。
5.3 Trigger
The
trigger
module provides various triggering algorithms, including different STA/LTA routines, Z-Detector, AR picker and the P-picker by M. Bear. 触发
模块提供各种触发算法,包括不同的 STA/LTA 例程、Z 检测器、AR 选择器和 M. Bear 的 P 选择器。There is also a convenience method implemented on
Stream
/Trace
. It works on and overwrites the traces waveform data and is intended for batch processing rather than for interactive determination of triggering parameters. But it also means that the trace’s built-in methods can be used.5.4 Classes & Functions
2024年12月18日:还未仔细阅读及理解
5.5 Modules
2024年12月18日:还未仔细阅读及理解