开源数据之历史气象数据的获取与使用
导读:在环境建模与水文分析中,数据质量往往决定了模型的上限。本文作为系列首篇,将聚焦于最核心的基础输入——历史气象数据,分享如何利用 Python 和开放 API 高效获取全球任意位置的逐小时气象资料。
一、引言:数据是模型的“燃料”
在环境领域的分析与建模中,业内有一句名言:“Garbage in, Garbage out”。无论是进行水文模拟、洪涝风险评估,还是城市微气候研究,模型逻辑再精妙,若缺乏高质量的基础数据支撑,结果也难具说服力。
在实际工作中,我们通常需要以下几类基础数据:
- 历史气象数据:降雨、气温、风速、辐射、湿度等。
- 下垫面数据:土地利用/覆盖(LULC)。
- 地形地貌数据:数字高程模型(DEM)。
- 观测与统计数据:土壤参数、水文站流量、社会经济数据。
然而,现实痛点在于:这些数据往往分散在不同的官方平台,获取门槛高、格式不统一、自动化程度低。为此,我计划通过一个系列文章,系统介绍这些环境数据的获取途径、接口调用及建模应用。
本篇我们从最基础、也是最常用的历史气象数据讲起。
二、为什么历史气象数据是“刚需”?
在环境机理建模中,历史气象数据不仅是驱动力,更是校准基准:
- 驱动模型:作为水文模型(如 SWMM)或生态模型(如 CASA)的核心输入。
- 极端事件回溯:分析特定场次暴雨、干旱或高温热浪的演变过程。
- 基准值计算:计算多年平均降雨量、蒸散发量等气候统计特征。
- 模型校准:利用历史实测气象驱动模型,对比观测流量或水位以调整参数。
其中,降雨数据几乎是所有环境水文分析中波动最大、敏感度最高的变量。
三、历史气象数据的三大来源
目前,获取历史气象数据的途径主要分为三类:
- 地面气象站观测
- 优点:精度最高,是公认的“真值”。
- 缺点:站点稀疏,空间代表性有限;通常有严格的使用限制,获取流程繁琐。
- 再分析数据集(Reanalysis)
- 代表:欧洲中心的 ERA 5、NASA 的 MERRA-2。
- 优点:全球覆盖,时空连续性好。
- 缺点:数据量极大(通常为 PB 级),处理门槛高(需处理 NetCDF 格式)。
- 开放气象 API / 插值产品
- 代表:Open-Meteo, Visual Crossing。
- 优点:易获取、自动化友好、无需处理原始大文件。
- 适用场景:快速建模、科研原型开发、区域性趋势分析。
对于大多数开发者和研究者来说,开放 API 是平衡精度与效率的最佳选择。
四、实战:使用 Open-Meteo 获取逐小时降雨
Open-Meteo 是一个对开发者极其友好的气象平台。它整合了 ERA 5 等权威再分析数据,并提供了极简的 API 接口。
核心优势:
- ✅ 无需注册/无 API Key(针对非商业用途)。
- ✅ 覆盖全球:基于经纬度定位。
- ✅ 高时间分辨率:支持逐小时(Hourly)数据。
- ✅ 格式友好:直接返回 JSON,易于 Python 解析。
示例:获取福州 2023–2024 年逐小时降雨数据
以下 Python 代码展示了如何自动化获取数据并转换为 Pandas DataFrame:
1 | |
五、数据深加工:从原始数据到建模输入
获取到逐小时数据后,我们通常需要根据建模需求进行二次加工:
1. 尺度转换(重采样)
如果你的模型只需要日尺度数据,可以利用 Pandas 快速聚合:
1 | |
2. 特征提取
- 计算最大 1 h 降雨量:识别短历时强降雨。
- 识别降雨场次:根据无雨间隔(IETD)划分独立的降雨事件。
- 计算降雨历时:分析单次降雨持续的时间分布。
六、避坑指南:使用插值数据需注意什么?
虽然 API 获取数据非常方便,但在严谨的机理建模中,必须注意以下几点:
- 非实测属性:这类数据多基于格点插值或模式模拟,对于局地性极强的强对流天气(如夏季午后的雷阵雨),可能会有平滑效应(低估峰值)。
- 空间分辨率:Open-Meteo 的历史数据通常基于 0.1° 或 0.25° 的格点,对于极小尺度的排水管网建模,可能需要结合本地雨量站进行校正。
- 单位检查:调用不同 API 时,务必确认降雨单位是
mm还是inch,气温是℃还是℉。
七、结语与预告
获取历史气象数据只是环境建模的第一步。有了“历史”,我们往往还想预测“未来”。
在下一篇文章中,我将分享:
👉 《环境建模中的基础数据获取(二):天气预报数据的自动抓取与滚动更新》
我们将探讨如何获取预报数据,并将其接入自动化预警模型中。
[!tip]
如有帮助,请收藏、点赞、评论、转发一条龙~
微信公众号:环境猫 er
CSDN : 细节处有神明
个人博客:https://maoyu92.github.io/