参考
https://seismology.gitee.io/seisnote/obspydoc/plot_3_read_and_write/
https://seisman.github.io/SAC_Docs_zh/fileformat/header-variables/
读写波形数据
根据台网寻找台站相关内容
1 | from obspy.clients.fdsn import Client as fdsnclient |
可以使用下述命令将台站信息保存为pz文件。
fdsnstations.write('fdsnstations.pz', format='sacpz')
但是运行的时候出现如下情况,但是文件却能够正常保存。
UserWarning: IU.ADK.00.VM2 2009-07-19T00:00:00.000000Z has no paz. Skipping.warnings.warn(msg)
也可以通过复制台站信息到文本编辑器保存,进行查找比对。但是通过write得到的信息更丰富。
文件内容为每个台站各个通道的信息:
1 | * ************************************************** |
通过台站具体信息申请数据
IUdata = fdsnclient().get_waveforms(network='IU', station= 'ADK', location='00', channel='*', starttime=t1, endtime=t2, attach_response=True) # 申请具有仪器响应的地震数据
将数据写入到文件中
IUdata.write("test.mseed", format="mseed")
可以选择mseed、sac等格式。
注意!!!
选择mseed格式时,所有波形保存在一个文件里。而sac格式文件会单独保存,每一个
波形文件将单独保存。其中三通道是分离的,但是文件名称保存需要注意。
可以通过Python循环命名,但是需要获取的均为三分量数据,否则会出现顺序错误。
读写地震目录
catalogs = fdsnclient().get_events(starttime=t1, endtime=t2, minmagnitude=4,
catalog="ISC") # 获取数据
保存到本地,为kml格式:(谷歌地球专属格式)
catalogs.write('catalogs', format='kml')
或者直接从服务器读取
cat = obspy.read_events() # 从服务器读取
数据信息
以数据IU_ADK_10_B01.sac的头段信息为例:
NPTS = 3456000
数据点数
B = 5.000000e-04
文件起始时间
E = 8.639998e+04
文件结束时间
IFTYPE = TIME SERIES FILE
sac文件类型
LEVEN = TRUE
等时间间隔为True
DELTA = 2.500000e-02
等间隔数据的数据点采样周期
DEPMIN = -4.688610e+05
因变量Y的最小值
DEPMAX = 4.731680e+05
因变量Y的最大值
DEPMEN = 8.591051e+01
因变量Y的均值
KZDATE = OCT 28 (301), 2014
字符数字格式的参考日期,由nzyear、nzjday(一年的第几天)导出
KZTIME = 00:00:00.019
字符数字格式参考时间,由nzhour(时)、nzmin(分)、nzsec(秒)、nzmsec(毫秒)导出
IZTYPE = BEGIN TIME
等效参考时刻
KSTNM = ADK
台站名
KEVNM = -12345 -12345
事件名,长度为16个字节
KHOLE = 10
如果是核爆事件,则是孔眼标识;如果是其它时间,则是位置标识。
LOVROK = TRUE
若为 TRUE,则磁盘里的原始数据可被覆盖,否则不可被覆盖。
NVHDR = 6
SAC头段版本号。目前最新版本为6
SCALE = 1.000000e+00
因变量比例因子,即真实物理场被乘以该比例因子而得到现有数据。
LPSPOL = TRUE
在左手坐标系下,若三通道都是正极性则为真,否则为假。
LCALDA = FALSE
全称为 Calculate Distance and Azimuth。
若为 TRUE,则当事件和台站的坐标被写入或被修改时,
头段变量 dist、gcarc、az、 baz 将自动计算,
否则不会被自动计算,SAC 头段中会存在信息的不兼容。
KCMPNM = BH1
通道名,B、H、1分别代表宽频带、高增益、北向分量
KNETWK = IU
台网名