1. 气象数据基础:从哪儿来,长什么样

做气象深度学习,第一关就是数据。说实话,很多初学者一上来就调模型,结果数据都没搞明白,最后模型跑出来全是噪声。我刚开始做气象预测时也踩过这个坑——拿着卫星数据当站点数据用,结果可想而知。

今天咱们就把气象数据的底裤扒干净。你想想看,气象数据无非就三个问题:从哪来?有哪些变量?存成什么格式?搞明白这三件事,后面建模就顺了。

1.1 数据来源:三种观测手段

气象数据不是天上掉下来的。目前主流来源就三种,我一个个说。

气象站

这是最传统的。全国有数万个自动气象站,每个站每隔几分钟就上报一次数据。温度、气压、湿度这些基础变量,站点数据最准。

但有个问题——站点分布不均匀。东部密密麻麻,西部稀稀拉拉。我做项目时遇到过,用站点数据做空间插值,西部地区的预测误差能大好几倍。嗯,这里要注意,站点数据适合做时间序列预测,但做空间预测就得小心了。

卫星

卫星数据覆盖面广,能覆盖海洋、沙漠这些站点到不了的地方。但精度不如站点。说白了,卫星是"遥感",隔着几百公里看地球,肯定有误差。

我个人习惯,做区域预测时用卫星数据,做单点预测时用站点数据。两者结合效果最好。

雷达

雷达主要看降水。多普勒雷达能反演降雨强度,还能看风场。但雷达数据有个坑——容易受地形遮挡。我曾经在山区项目里用雷达数据,结果山背面全是盲区,模型直接崩了。

核心建议: 别只用一种数据源。多源融合才是王道。我现在的项目基本都是"站点+卫星+雷达"三管齐下。

1.2 常见气象变量:五大金刚

气象变量很多,但深度学习里常用的就这几个。我按重要性排个序:

变量 单位 预测场景 我的经验
温度 短期预报、农业 日变化规律明显,LSTM效果好
气压 hPa 天气系统判断 变化缓慢,适合做长期趋势
湿度 % 降水预测、雾霾 非线性强,需要归一化
风速 m/s 风能、灾害预警 突变多,用CNN提取空间特征更好
降水 mm 洪水、农业 零值多,需要特殊处理

为什么会这样排序?因为温度和气压相对"乖",变化有规律。风速和降水就"调皮"多了,尤其是降水,大部分时间是0,突然来一场暴雨。我曾经用MSE损失函数做降水预测,结果模型学出来全是0——因为大部分时间确实没下雨,模型偷懒了。后来改用分位数损失才解决问题。

小技巧: 处理降水数据时,建议先做"是否降水"的二分类,再做"降水量"的回归。两步走比一步到位稳得多。

1.3 数据格式:NetCDF、GRIB、CSV

搞气象的,天天跟这三种格式打交道。我刚开始接触时也懵,后来发现其实没那么复杂。

NetCDF

这是气象界的"通用语言"。NetCDF文件能存多维数据,比如时间×纬度×经度×变量。说白了,就是个四维数组。我用Python的xarray库处理NetCDF,一行代码就能读出来:

import xarray as xr
ds = xr.open_dataset('temperature.nc')
# ds 里就有时间、纬度、经度、温度四个维度
print(ds['temp'].values.shape)  # (365, 181, 360) 一年数据

NetCDF的好处是自带元数据。比如温度的单位、缺失值标记,都写在文件里。我建议新手优先学NetCDF,因为生态好,工具多。

GRIB

GRIB是气象预报领域的"老大哥"。欧洲中期天气预报中心(ECMWF)的数据基本都是GRIB格式。GRIB比NetCDF压缩率高,但处理起来麻烦点。

我曾经用GRIB数据做全球风场预测,结果发现不同版本的GRIB编码方式不一样。嗯,这里要注意,GRIB版本1和版本2的读取方式不同,用pygrib库时要指定版本。

import pygrib
grbs = pygrib.open('wind.grib2')
grb = grbs.select(name='10 metre U wind component')[0]
data = grb.values  # 拿到风速数据

CSV

CSV最简单,但最"笨"。一行一个时间点,一列一个变量。适合小规模数据,或者做快速验证。但CSV没有空间信息,做空间预测时别用。

避坑指南: 我曾经把NetCDF转成CSV做实验,结果文件从10MB膨胀到500MB。而且空间信息全丢了。所以,能用NetCDF就别用CSV,除非你只是做简单的统计分析。

1.4 知识体系总览

说了这么多,咱们用一张图把整个知识体系串起来。我画了个流程图,你看看:

气象数据基础知识体系 数据来源 气象变量 数据格式 气象站 卫星 雷达 温度 气压 湿度 风速 降水 NetCDF GRIB CSV 多源融合 站点+卫星+雷达 预处理关键 归一化、缺失值、异常值 格式选择 NetCDF优先,CSV慎用 数据质量决定模型上限

这张图把咱们今天讲的内容串起来了。你看,数据来源、变量、格式,三者是相互关联的。比如卫星数据常用NetCDF格式,站点数据可能存成CSV。搞明白这些关系,后面选数据、做预处理就有方向了。

我的习惯: 拿到一个新项目,先花30%的时间搞清楚数据。数据搞明白了,模型调参就快。别一上来就调模型,那是本末倒置。

好了,气象数据基础就讲这么多。记住一句话:数据质量决定模型上限。你喂进去的是垃圾,吐出来的肯定是垃圾。下一章咱们聊聊数据预处理,那才是真正考验功力的地方。


公众号:蓝海资料掘金营,微信deep3321