技术博客
免费地震信息:返回字段全解(ret_code / mag / from 一文读懂)

免费地震信息:返回字段全解(ret_code / mag / from 一文读懂)

作者: 万维易源
2026-09-03
地震信息返回字段震级数据来源
# 免费地震信息:返回字段全解(ret_code / mag / from 一文读懂) - **接口/接入点**:免费地震信息 · 2274-1 - **是否免费**:是(注册即免费额度) - **请求方式**:POST / GET - **返回格式**:JSON - **适用人群**:初级到中级开发者、数据分析师 - **阅读时间**:约 7 分钟 ## 核心要点 - 返回分两层:系统信封 `showapi_res_*` 与业务体 `showapi_res_body`,业务数据全在 `showapi_res_body` 内。 - 业务码 `ret_code` 只有 0(找到)和 -1(没找到/出错)两种;`count` 为记录条数。 - `earthquakes[]` 每条含 10 个字段,重点记住 `mag`(震级)、`lat`/`lng`(经纬度)、`dep`(深度)、`from`(来源)。 ## Why:读懂字段才能正确用数据 拿到返回后最常见的问题:「ret_code 和 showapi_res_code 到底看哪个?」「mag 是震级还是烈度?」「timeLocal 到底是哪的当地时间?」把字段口径搞错,后续展示、统计、地图标点都会出错。本篇把每一层、每个字段讲清楚。 ## What:接口速览 | 项 | 值 | |----|----| | 接口地址 | `https://route.showapi.com/2274-1?appKey={your_appKey}` | | 返回格式 | JSON(业务数据在 `showapi_res_body`) | | 计费 | 免费(档位限制见 [免费 API 说明](https://www.showapi.com/free-api)) | | 集成能力 | MCP、OpenAPI 3.0 | ## How:字段拆解 ### 第一层:系统信封(每次请求都有) | 字段 | 类型 | 说明 | |------|------|------| | `showapi_res_code` | Number | 系统状态码,0 表示请求成功(与业务是否找到无关) | | `showapi_res_error` | String | 系统级错误信息,成功时为空 | | `showapi_res_id` | String | 本次请求唯一标识 | | `showapi_fee_num` | Number | 计费次数;实测取到数据时=1、无数据时=0(免费额度内) | ### 第二层:业务体 `showapi_res_body` | 字段 | 类型 | 说明 | |------|------|------| | `ret_code` | Number | 业务码:**0=找到,-1=没有找到或出错** | | `count` | Number | 找到的记录条数 | | `remark` | String | 错误信息(ret_code=-1 时给出原因) | | `earthquakes` | Object[] | 记录集合,每条结构见下表 | ### 第三层:每条地震 `earthquakes[]` | 字段 | 类型 | 说明 | 备注 | |------|------|------|------| | `location` | String | 震源大体位置 | 如「四川内江市市中区」「加利福尼亚间歇泉西北7 公里处」 | | `mag` | Number | 震级(magnitude) | 文档标为「烈度」,实测取值为小数,实为**震级**;详见 [震级 vs 烈度](https://www.showapi.com/guides/earthquake-info-mag-vs-intensity-2274) | | `lat` | Number | 震源纬度(十进制) | 符合 WGS84 经纬度 | | `lng` | Number | 震源经度(十进制) | 同上 | | `dep` | Number | 震源深度(km) | 部分记录为 0 或小数 | | `from` | String | 数据来源 | 实测出现 `usgs`(美国地质调查局)、`ceic`(中国地震台网) | | `timeLocal` | String | 时间字符串 | 实测为**北京时间(UTC+8)**,非震中当地时 | | `timestampLocal` | Number | 当地时间时间戳(ms) | 与 timeLocal 同口径,即北京时间 | | `timeUTC` | String | UTC 时间字符串 | — | | `timestampUTC` | Number | UTC 时间戳(ms) | — | ## 返回示例与解析 ```json { "showapi_res_code": 0, "showapi_res_body": { "ret_code": 0, "count": 2, "remark": "", "earthquakes": [ { "location": "四川内江市市中区", "mag": 4.4, "lat": 29.57, "lng": 104.88, "dep": 10.0, "from": "ceic", "timeLocal": "2025-01-20 21:59:54", "timestampLocal": 1737381594000, "timeUTC": "2025-01-20 13:59:54", "timestampUTC": 1737352794000 }, { "location": "加利福尼亚间歇泉西北7 公里处", "mag": 1.02, "lng": -122.82, "lat": 38.82, "dep": 2.99, "from": "usgs", "timeLocal": "2025-01-20 15:23:01", "timestampLocal": 1737357781910, "timeUTC": "2025-01-20 15:23:01", "timestampUTC": 1737357781910 } ] } } ``` 观察:中国记录(ceic)`timeLocal` 比 `timeUTC` 早 8 小时(北京时间);美国记录(usgs)两者相等。因此展示给用户时,**不要**把 `timeLocal` 当成「震中当地时」。 ## 进阶 / 边界 - **两个 code 怎么看**:先看 `showapi_res_code == 0` 确认请求成功,再看 `ret_code` 判断是否有数据;`ret_code == -1` 时直接读 `remark`。 - **mag 是震级不是烈度**:文档写「烈度」是口径偏差,写代码/展示请用「震级(M?)」表述,避免误导。 - **from 不是固定值**:除文档示例 `usgs` 外,实测还有 `ceic`;不要硬编码只认 usgs。 ## FAQ **Q1:showapi_res_code 和 ret_code 有什么区别?** `showapi_res_code` 是系统层状态(0=请求成功到达并处理),`ret_code` 是业务层状态(0=找到数据,-1=没找到/出错)。必须两层都正常才算拿到数据。 **Q2:mag 字段单位是里氏还是矩震级?** 接口只返回数值,不区分震级标度(里氏/矩震级)。它是一个无量纲标量,展示时直接写「震级 X.X」即可,不要擅自标注具体标度。 **Q3:为什么有的 dep(深度)是 0?** 部分浅源地震或数据源未给出精确深度时会为 0 或接近 0 的小数值,属正常现象,展示时建议做容错(如「浅源/未知」)。 **Q4:from 字段还可能有哪些值?** 文档示例仅 `usgs`,实测出现 `usgs` 与 `ceic`。我们未穷举全部枚举,新增来源以接口实际返回为准,建议代码用 `switch`/字典做可扩展映射。 ## 相关能力 / 下一步阅读 - [免费地震信息:date 与 area 参数使用指南(含实测筛选坑)](https://www.showapi.com/guides/earthquake-info-params-guide-2274) - [免费地震信息:震级(mag)与烈度到底有什么区别?字段口径详解](https://www.showapi.com/guides/earthquake-info-mag-vs-intensity-2274) - [免费地震信息:数据来源 usgs / ceic 有什么区别?该怎么用](https://www.showapi.com/guides/earthquake-info-data-sources-2274) - **本系列共 14 篇**:查看[免费地震信息指南总目录](https://www.showapi.com/guides/earthquake-info-guides-2274)