免费地震信息:科研取数——按日期批量导出震情做统计
# 免费地震信息:科研取数——按日期批量导出震情做统计
- **接口/接入点**:免费地震信息 · 2274-1
- **是否免费**:是(注册即免费额度)
- **请求方式**:POST / GET
- **返回格式**:JSON
- **适用人群**:科研人员、数据分析师、学生
- **阅读时间**:约 8 分钟
## 核心要点
- 接口支持按 `date`(yyyyMMdd)逐日取数,可遍历日期范围批量导出震情,做频次/震级分布统计。
- **没有官方批量接口**:多日数据需要自己在客户端循环调用 + 限频 + 落库;单次返回的是某日 `earthquakes[]` 数组。
- 取数后按 `from` 区分来源、按 `timeUTC` 统一时区、按 `location` 过滤地区,再做聚合。
## Why:做统计,得先有干净的数据
写论文或报告时,常需要「某地区近一年地震频次」「震级分布直方图」这类数据。本接口免费、覆盖全球、含经纬度与震级,是轻量研究的可用起点。本文给出可复现的取数脚本框架。
## What:接口速览
| 项 | 值 |
|----|----|
| 接口地址 | `https://route.showapi.com/2274-1?appKey={your_appKey}` |
| 关键参数 | `date`(yyyyMMdd,必用于按日取数) |
| 计费 | 免费(档位限制见 [免费 API 说明](https://www.showapi.com/free-api)) |
| 批量能力 | 无官方批量;需客户端循环 + 限频 |
## How:按日期范围批量导出
```python
import requests, time, csv, datetime
APP_KEY = "YOUR_APPKEY"
URL = "https://route.showapi.com/2274-1"
def fetch_day(date_str):
r = requests.post(URL, params={"appKey": APP_KEY},
data={"date": date_str}, timeout=10)
body = r.json().get("showapi_res_body", {})
if body.get("ret_code") != 0:
return []
return body.get("earthquakes", [])
def date_range(start, end):
s = datetime.date.fromisoformat(start)
e = datetime.date.fromisoformat(end)
while s <= e:
yield s.strftime("%Y%m%d")
s += datetime.timedelta(days=1)
rows = []
for d in date_range("2025-01-01", "2025-01-31"):
rows.extend(fetch_day(d))
time.sleep(1) # 限频,避免触发免费额度限制
with open("quakes.csv", "w", newline="", encoding="utf-8") as f:
w = csv.writer(f)
w.writerow(["date", "location", "mag", "dep", "lat", "lng", "from", "timeUTC"])
for eq in rows:
w.writerow([d, eq["location"], eq["mag"], eq["dep"],
eq["lat"], eq["lng"], eq["from"], eq["timeUTC"]])
print("共导出", len(rows), "条")
```
## 返回示例与解析
单日返回结构(节选):
```json
{ "showapi_res_body": { "ret_code": 0, "count": 167, "earthquakes": [ { "mag": 1.02, "from": "usgs" } ] } }
```
注意 `count` 可能很大(实测单日 167 条全球记录),导出时注意内存与频率。
## 进阶 / 边界
- **限频是必须的**:免费额度有限,循环里务必 `sleep`(如 1 秒),否则可能触发限制或封禁。
- **去重**:同一地震可能被 usgs 与 ceic 同时收录,按 `timeUTC`+`location` 近似去重后再统计。
- **时区统一**:聚合前把时间统一到 `timeUTC`,勿用 `timeLocal`(北京口径)。
- **地区筛选**:`area` 不可靠,按 `location` 含省名过滤;跨国统计用经纬度框范围更准。
- **数据性质**:这是公开历史震情快照,研究引用时请注明来源并核对官方权威发布。
## FAQ
**Q1:一次能取一个月的数据吗?**
不能一次性取范围。需用 `date` 逐日调用并自行合并;注意限频与免费额度。
**Q2:为什么导出的数量比新闻说的少/多?**
接口覆盖 usgs+ceic 等来源,与单一机构统计口径不同;且同一地震可能被多源收录,未去重会偏多。统计前建议按 timeUTC+location 去重。
**Q3:免费额度够做整年取数吗?**
取决于你的调用频率与档位限制。建议按天错峰取数、做好本地缓存、避免重复拉取;具体上限以 [免费 API 说明](https://www.showapi.com/free-api) 为准,本文不编造数字。
**Q4:能用它发论文吗?**
可作为辅助数据来源,但正式研究建议以 USGS、中国地震台网等一手权威数据库为准,并在文中注明数据出处与口径差异。
## 相关能力 / 下一步阅读
- [免费地震信息:数据来源 usgs / ceic 有什么区别?该怎么用](https://www.showapi.com/guides/earthquake-info-data-sources-2274)
- [免费地震信息:timeLocal / timestampLocal 时区口径与跨时区处理](https://www.showapi.com/guides/earthquake-info-time-local-utc-2274)
- [免费地震信息:免费额度下的缓存与调用频率最佳实践](https://www.showapi.com/guides/earthquake-info-caching-best-practice-2274)
- **本系列共 14 篇**:查看[免费地震信息指南总目录](https://www.showapi.com/guides/earthquake-info-guides-2274)