技术博客
免费地震信息:科研取数——按日期批量导出震情做统计

免费地震信息:科研取数——按日期批量导出震情做统计

作者: 万维易源
2026-09-03
地震信息科研批量取数统计
# 免费地震信息:科研取数——按日期批量导出震情做统计 - **接口/接入点**:免费地震信息 · 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)