简介
在Python中使用包实现SAC文件读取。有如下三个SAC读取相关的库:
pysmo
sacpy
pyrocko
注意:有些库不支持较高的Python版本。例如pyrocko只支持到3.6.*版本。使用conda创建环境较为方便,建议使用3.6版本的
python,在改版本下均可安装以下库及Obspy。
运行如果出现报错:
'version_info' object has no attribute '__version__'
试一下运行:
pip install pyparsing==2.4.7
pysmo
安装
pip install pysmo
pip install pysmo --pre
pip install git+https://github.com/pysmo/pysmo
使用
官方文档:https://pysmo.readthedocs.io/en/latest/sac.html
读取文件
1 | from pysmo import SacIO |
读取采样率
1 | delta = seismogram.delta |
修改采样率
1 | seismogram.delta = 0.05 |
读取IRIS的地震数据
1 | >>> from pysmo import SacIO |
sacpy
安装
使用pip即可
pip install sacpy
pyrocko
Obspy
Obspy也可以直接读取sac文件。如下:
1 | import obspy |
注意: 使用obspy读取得到的为stream格式,该格式是一个列表。需要使用st[0]
表示sac的图像数据。
获取基本信息
st[0].stats
1 | network: NA |
获取采样率
st[0].stats.delta
去趋势
使用:
st=obspy.read(filepath)
st[0].detrend('polynomial', order=3) # 进行去趋势,选择为多项式,阶数为3
去除线性或者多阶趋势。
选项1可选:
- simple
Subtracts a linear function defined by first/last sample of the trace (uses obspy.signal.detrend.simple()). - linear
Fitting a linear function to the trace with least squares and subtracting it (uses scipy.signal.detrend()). - constant or demean
Mean of data is subtracted (uses scipy.signal.detrend()). - polynomial
Subtracts a polynomial of a given order. (uses obspy.signal.detrend.polynomial()). - spline
Subtracts a spline of a given order with a given number of samples between spline nodes.(uses obspy.signal.detrend.spline()).
示例代码
使用方法
在最后两行:
第一行为图所在目录(文件夹),文件为SAC格式。如果不是SAC格式,将被忽略。
第二行为:
- path1 路径
- 2 图类型type
- type=1 速度图
- type=2 加速度图
均转换为位移图。
1 | import numpy |
归一化
安装 sklearn 库
conda 安装:
1 | conda install -c anaconda scikit-learn |