地震数据下载与数据命名规则

参考:

[Seisman数据命名规则]https://seisman.github.io/SAC_Docs_zh/appendix/naming-convections/#id3

[地震学笔记]https://seismology.gitee.io/seisnote/obspydoc/plot_5_retrieving_data/

数据获取

数据获取有多种方式,例如脚本或者直接网页申请。在这里记录使用方法


获取数据需要的参数(数据命名规则)

标准SAC文件命名规则为:

yyyy.ddd.hh.mm.ss.ffff.NN.SSSSS.LL.CCC.Q.SAC
  • yyyy: 年份
  • ddd: 年分中的第几天
  • hh.mm.ss.ffff: 时、分、秒、毫秒
  • NN: 台网代号
  • SSSSS: 台站名(代号)
  • LL: 位置码,台站中的地震仪编号
  • CCC: 通道名
  • Q: 质量控制标识
  • SAC: 格式后缀

Network 台网

台网名如下:
所有永久或临时台网:http://www.fdsn.org/networks/

Station 台站

Location 位置码(同一台站的不同地震仪)

常见为空。

Channel 通道

通道名有三个字符。三个字符分别表示:频带码、仪器码、方位码。

频带码(Band Code)

第一个字符表示仪器采样率以及响应频带等信息。

参考:Seisman频带码表

仪器码(Instrument Code)

第二个字符表示不同的仪器传感器。

仪器码 说明
H High Gain Seismometer 高增益地震仪
L Low Gain Seismometer 低增益地震仪
G Gravimeter 重力仪
M Mass position Seismometer 质量位置地震仪
N Accelerometer 加速度计

常见H 高增益仪器。

方位码(Orientation Code)

  • N E Z 南北向、东西向、垂向
  • 1 2 3(Z) 3(Z)为垂向,1、2为正交的水平向,但并非南北东西向
  • T R Z 切向、径向、垂向
  • 方位码 U V W 未知,可能与1 2 Z(3)相同

注意:N、E、Z并非指正北等方向,与正北夹角2度以内的均可取N。以头段变量cmpaz和cmpinc为准(cmpaz也可能产生一定误差)。

Quality 波形质量

  • D 不确定状态的数据
  • M 已合并的数据
  • R 原始波形数据
  • Q 经过质量控制的数据
    常见M与Q。

Format 格式

  • SAC格式
  • mSeed格式
  • miniSeed格式

Web Services 网页获取

在浏览器中输入, 可以直接获取相关数据:

1
http://service.iris.edu/fdsnws/dataselect/1/query?network=XA&station=S12&starttime=1970-01-01T00:00:00&endtime=1971-01-01T12:00:00

如上所述为台网XA、台站S12,起始时间与终止时间为1970与1971年的月震记录。


Obspy获取

服务器下载波形数据

使用get_waveforms()从服务器下载波形数据,
需要添加关键字参数自定义申请。

申请单个数据

参数:

waveform = get_waveforms(台网名,台站名,位置码,通道名,波形开始时间,波形结束时间(s))
  • 每个参数需要””,多个参数使用 , 隔开。

  • 可以使用通配符,?和*

  • filename = ‘文件名’waveform

  • attach_response=True 添加仪器响应

    waveform.remove_response(output=’VEL’) 去除仪器响应

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from obspy.clients.fdsn import Client
from obspy.clients.fdsn.header import URL_MAPPINGS # 数据中心列表
from obspy import UTCDateTime # 时间模块

client = Client("IRIS") # 可以使用URL或者数据中心简写

for key in sorted(URL_MAPPINGS): # 显示可用的数据中心列表
print("{0:<7} {1}".format(key, URL_MAPPINGS[key]))

t = UTCDateTime("2010-02-27T06:45:00.000")

# 申请单个数据
waveform = client.get_waveforms("IU", "ANMO,AFI", "0?", "LH?", t, t + 60 * 60) # 多个参数使用逗号分隔
print(waveform)

申请多组数据

get_waveforms_bulk()可以同时提交多个申请。

  • 多个列表组成的列表,每一个列表包含:台网名、台站名、位置码、通道名、开始时间和结束时间
    bulk = [[“IU”, “ANMO”, “0?”, “LH?”, t1, t2],(),……]

  • 包含有效request(返回信息)的字符串、文件名或者已打开文件的句柄

    1
    2
    3
    4
    5
    6
    7
    8
    字符串:
    bulk = 'quality=B\n' + \
    'longestonly=false\n' + \
    'IU ANMO * BHZ 2010-02-27 2010-02-27T00:00:02\n' + \
    'IU AFI 1? BHE 2010-02-27 2010-02-27T00:00:04\n' + \
    'GR GRA1 * BH? 2010-02-27 2010-02-27T00:00:02\n'
    文件名:
    client.get_waveforms_bulk("request.txt", attach_response=True)

申请多组数据:

1
2
3
4
5
t1 = UTCDateTime("2010-02-27T06:45:00.000")
t2 = t1 + 60
bult = [["IU", "ANMO", "0?", "LH?", t1, t2], ["IU", "AFI", "0?", "LH?", t1, t2]]
waveform = client.get_waveforms_bulk(bult)
print(waveform)

服务器下载地震目录(catalog)

get_events() 申请地震目录。

使用 eventid 获取地震目录

1
client = Client("IRIS")

使用起止时间以及震级等条件筛选地震

get_events(starttime = 开始时间,endtime = 结束时间,minmagnitude = 震级,catalog = 地震目录来源)
  • starttime = 开始时间
  • endtime = 结束时间
  • minmagnitude = 最小震级
  • catalog = “地震目录来源”
1
2
3
4
5
t1 = UTCDateTime("2001-01-07T00:00:00")
t2 = UTCDateTime("2001-01-07T03:00:00")
catalogs = client.get_events(starttime=t1, endtime=t2, minmagnitude=4,
catalog="ISC")
catalogs.plot(projection="ortho") # 绘制地图

下载台站信息数据

get_stations() 可以得到台站数据,返回值为网络和台站等信息。

可以通过这个方法查询到相关台网的台站信息、台站所有的位置码和通道等等信息。

1
2
3
4
5
6
inventory = client.get_stations(network="IU", station="A*",
starttime=t1,
endtime=t2, level="response") # 申请所有台站的所有分量和仪器响应文件

print(inventory)

绘制仪器相应文件

利用台站信息get_stations()的返回值的plot_response()获得仪器响应文件。

inventory.plot_response(min_freq=0.01, output="DISP", station="ADK", channel="BH?")