第一部分:IRIS官网数据
一. 数据下载
IRIS免费下载任意指定地震波并处理 (如汶川地震,鲁甸地震等国内外地震)_哔哩哔哩_bilibili
二. 数据结构
从 IRIS 下载的 SAC(Seismic Analysis Code) 文件包含丰富的地震记录和元数据信息,主要分为以下几个部分:
1. SAC 文件的基本结构
SAC 文件由以下三部分组成:
- 头部(Header):包含元数据信息,例如地震事件、台站位置、记录时间、采样率等。
- 数据部分(Data):存储地震记录的时间序列数据。
- 可选字段:可能包含额外的自定义信息。
2. 头部(Header)信息
头部字段可以分为以下几类:
(1) 事件信息
evla
:事件纬度(Event Latitude)evlo
:事件经度(Event Longitude)evdp
:事件深度(Depth in kilometers)o
:事件参考时间(Origin Time,通常为相对记录开始的秒数)
(2) 台站信息
stla
:台站纬度(Station Latitude)stlo
:台站经度(Station Longitude)stel
:台站海拔(Station Elevation in meters)stdp
:台站深度(Station Depth)
(3) 记录信息
npts
:记录的点数(Number of data points)delta
:采样间隔(Sampling Interval in seconds)b
:记录起始时间(Beginning time of the record in seconds)e
:记录结束时间(End time of the record in seconds)
(4) 到时信息
t0
至t9
:自定义标记时间(通常用于存储 P 波、S 波到时等)a
:首次波到达时间(First Arrival Time,常用于存储 P 波到时)f
:S 波到达时间(通常用于 S 波的时间标记)
(5) 数据信息
user0
至user9
:用户自定义字段cmpaz
:分量方位角(Component Azimuth)cmpinc
:分量倾角(Component Inclination)
3. 数据部分(Data Section)
- 时间序列记录的波形数据(如地震振幅)。
- 根据文件类型可能是原始记录、去噪后的数据或某种滤波处理后的结果。
4. 头部字段的提取示例
使用 ObsPy 提取 SAC 文件头部信息的示例代码:
from obspy import read
# 读取 SAC 文件
sac_file = "path_to_your_sac_file.sac"
st = read(sac_file)
tr = st[0]
# 打印 SAC 文件头信息
print(tr.stats.sac)
示例输出
AttribDict({
'stla': 40.234,
'stlo': -120.982,
'stel': 123.0,
'evla': 38.123,
'evlo': -122.456,
'evdp': 12.5,
'delta': 0.01,
'npts': 10000,
'b': 0.0,
'e': 100.0,
't0': 12.345,
'a': 10.567,
'cmpaz': 90.0,
'cmpinc': 0.0
})
5. 常见重要字段解释
字段名 | 含义 | 示例值 |
---|---|---|
stla | 台站纬度 | 40.234 |
stlo | 台站经度 | -120.982 |
evla | 事件纬度 | 38.123 |
evlo | 事件经度 | -122.456 |
evdp | 事件深度(单位:km) | 12.5 |
delta | 采样间隔(单位:s) | 0.01 |
npts | 数据点数 | 10000 |
b | 记录起始时间 | 0.0 |
t0 | P 波到时(相对时间) | 12.345 |
cmpaz | 分量方位角(通常为 0、90 或 180) | 90.0 |
6. 如何获取所有字段及数据
要完整列出 SAC 文件的所有字段,可以使用以下代码:
from obspy import read
# 读取 SAC 文件
st = read("path_to_your_sac_file.sac")
tr = st[0]
# 打印所有头字段
for key, value in tr.stats.sac.items():
print(f"{key}: {value}")
7. IRIS 数据可能的特殊信息
从 IRIS 下载的 SAC 文件通常已经包含以下关键字段:
- 事件信息:
evla
,evlo
,evdp
,o
- 台站信息:
stla
,stlo
,stel
- 时间信息:
delta
,b
,e
- 标记时间:常见的是
t0
或a
(用于 P 波到时)
如需进一步分析,可以通过 ObsPy 或其他地震学软件处理这些字段。
第二部分:ISC官网数据
1. 访问ISC官网
-
官网地址: http://www.isc.ac.uk
-
数据范围: ISC提供全球地震目录数据,包含震源参数(时间、经纬度、深度、震级等)以及台站报告信息。
2. 数据下载步骤
2.1 通过ISC地震目录查询工具
-
进入查询页面
访问 ISC地震目录搜索页面。 -
设置查询参数
-
时间范围:输入起始和结束日期(格式:YYYY-MM-DD)。
-
地理范围:可指定经纬度范围或选择特定区域。
-
震级范围:设置最小和最大震级(如
M ≥ 5.0
)。 -
其他筛选:深度范围、震源类型(天然地震/人工事件)等。
-
-
提交查询
点击Search
获取结果列表。 -
导出数据
-
选择导出格式:
CSV
、Text
或XML
。 -
点击
Download
保存数据到本地。
-
2.2 通过FTP批量下载
-
ISC提供FTP服务用于批量下载历史数据:
FTP地址: ftp://ftp.isc.ac.uk-
目录结构按年份组织,文件格式为纯文本。
-
3. 数据处理
3.1 数据格式解析
-
CSV/文本文件示例:
EventID,Date,Time,Latitude,Longitude,Depth/km,Magnitude
12345678,2023-01-01,12:34:56,35.678,-120.456,10.0,5.6 -
字段说明:事件ID、日期、时间、纬度、经度、深度(km)、震级。
3.2 使用Python处理数据
import pandas as pd
# 读取数据
df = pd.read_csv('isc_earthquakes.csv')
# 筛选深度小于50km且震级≥5.0的地震
filtered_df = df[(df['Depth/km'] < 50) & (df['Magnitude'] >= 5.0)]
# 统计年度地震次数
annual_counts = df['Date'].str[:4].value_counts().sort_index()
# 保存处理后的数据
filtered_df.to_csv('filtered_earthquakes.csv', index=False)
3.3 可视化(Matplotlib示例)
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
plt.scatter(df['Longitude'], df['Latitude'], s=df['Magnitude']*10, c=df['Depth/km'], alpha=0.5)
plt.colorbar(label='Depth (km)')
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.title('Global Earthquake Distribution (ISC Data)')
plt.show()
3.4 使用GIS工具(如QGIS)
-
导入CSV数据,生成震中分布图。
-
通过经纬度字段创建点图层,按震级/深度设置符号样式。
4. 注意事项
-
数据延迟
ISC目录数据可能比实时数据延迟数月(需人工审核)。 -
引用要求
使用ISC数据时需注明来源:
"International Seismological Centre (ISC) On-line Bulletin, Searches" -
高级分析
-
结合其他数据(如地质构造、人口密度)进行风险分析。
-
使用地震学工具(如
ObsPy
库)进行波形数据处理。
-
5. 替代数据源
-
USGS地震目录: https://earthquake.usgs.gov(实时数据)
-
EMSC: https://www.emsc-csem.org(欧洲地震数据)