WRF气象数据下载全攻略:FNL、GFS、ERA5数据源与实战技巧
发布时间:2026/10/4 16:42:15 锦皓数字建站

做数值模拟的同行应该都有体会WRF模型本身装起来并不算难真正磨人的是从零开始把气象数据准备齐全。我第一次接触WRF时光是在数据下载这一步就折腾了快两周FNL、GFS、ERA5这些名字在论坛上翻来覆去地出现每一个帖子只讲了一小部分拼拼凑凑才把整个逻辑串起来。这篇文章把WRF所需气象数据的下载方法一次性梳理清楚覆盖主流的四种数据源、两种最常用的下载途径以及那些文档里不会写的坑点适合刚入门WRF的科研新手也适合需要周期性拉取数据跑业务的工程师参考。1. WRF到底需要哪些气象数据先搞清楚要下什么1.1 初始场与侧边界条件WRF运行的两条腿WRF本质上做的是有限区域模拟你把模拟区域框在中国东部或者某个省份它不可能自己凭空生成天气系统必须在模拟开始的那一刻拿到整个区域的完整大气状态这就是初始场Initial Condition简称IC。模拟开始之后区域内部的天气会随时间演变但区域边界上的大气状态仍然需要外部数据不断喂进来告诉WRF边界上此刻的温度、风场、湿度是多少这就是侧边界条件Lateral Boundary Condition简称LBC。两者合起来就是你每次跑WRF之前必须先准备好的东西。初始场只需要一个时次的数据但侧边界条件需要覆盖整个模拟时段的所有输出时次。打个比方初始场像是你出发前给汽车加满的油而侧边界条件则是沿途每一个服务区的加油补给点。WRF默认的侧边界更新频率是6小时一次如果你模拟72小时那至少要准备13个时次初始时次加12次边界更新的数据。有些精细化模拟会用到3小时甚至1小时的边界更新数据量又会翻倍。1.2 四种主流数据源横向对比目前WRF社区里用得最多的气象驱动数据有四类我做了个表格方便你对比选择数据源发布机构空间分辨率时间分辨率数据性质适用场景NCEP FNL美国NCEP1°×1°约110km6小时再分析场科研/历史模拟最经典的选择NCEP GFS美国NCEP0.25°×0.25°/1°×1°3小时/6小时全球预报场实时预报、业务化运行ERA5ECMWF0.25°×0.25°约31km1小时再分析场高分辨率历史模拟、论文级研究NCEP GDAS美国NCEP1°×1°6小时同化分析场FNL的备选方案FNL和GDAS在WPS的ungrib环节用的是同一套Vtable处理流程完全一致很多人甚至直接用GDAS替代FNL来用。ERA5的分辨率最高、变量最全但它需要单独配置Vtable.ERA5和专门的预处理流程新手第一次上手容易卡住。GFS则是唯一能拿到未来数据的方案适合做天气预报和业务化模拟。选哪种数据源本质上是精度、存储空间和下载效率三者的权衡。1°的FNL一天4个时次大约600MB0.25°的ERA5一天24个时次接近10GB硬盘不够或者带宽有限的话老老实实选FNL反而是更理性的决策。2. 经典路线NCEP FNL数据的下载全流程2.1 准备工作账号注册与工具安装FNL数据有两个官方渠道一个是NCAR的研究数据档案库Research Data Archive简称RDA另一个是NCEP的NOMADS服务器。RDA适合批量下载历史数据需要先注册账号注册页面在rda.ucar.edu用学校邮箱或机构邮箱通过率更高。NOMADS则是网页按需筛选下载不需要注册就能获取近期数据。工具方面Linux环境下推荐直接用wget和curl这两样几乎所有的服务器发行版都自带。如果你在Windows上操作建议装一个Git Bash或者直接上WSL用命令行下载比浏览器点击稳定得多尤其是要下几十个文件的时候。下载前先确认一下磁盘空间FNL的grib2文件单个约150MB一年数据量大约300GB模拟一个月至少预留100GB比较稳妥。另外我强烈建议在准备数据前先把WPS装好并编译通过因为下载完的数据需要立刻跑ungrib验证能不能正常识别如果等数据全下完了再装WPS万一装不好返工成本会很高。2.2 从RDA批量下载FNL数据RDA上FNL对应的数据集编号是ds083.2访问地址是rda.ucar.edu/datasets/ds083.2/。登录之后在数据集页面能看到按年和月组织的文件目录文件命名规则是fnl_YYYYMMDD_HH_00.grib2其中HH是00、06、12、18这四个时次。RDA支持wget批量下载在数据集页面的HTTPS Access选项卡里能找到一个下载链接模板。下载单个文件最直接的方式是wget --user你的用户名 --password你的密码 \ https://rda.ucar.edu/data/ds083.2/grib2/2023/2023.01/fnl_20230101_00_00.grib2注意RDA的密码不要直接写在命令行里容易留在shell历史记录中。更推荐的做法是用.netrc文件保存凭据然后wget会自动读取echo machine rda.ucar.edu login 你的用户名 password 你的密码 ~/.netrc chmod 600 ~/.netrc之后就能不带账号密码直接下载了。批量下载用循环脚本最省事比如下载2023年1月所有时次的命令for day in $(seq -w 1 31); do for hour in 00 06 12 18; do wget -c \ https://rda.ucar.edu/data/ds083.2/grib2/2023/2023.01/fnl_202301${day}_${hour}_00.grib2 done done-c参数非常重要下载过程中如果网络中断重新执行wget会从断点继续不用重新下整个文件。我实测在校园网环境下单个150MB的文件大约需要1到2分钟一个月的数据量大概4到6小时能拉完。2.3 从NOMADS按需下载FNL应急方案NOMADS的FNL筛选页面地址是nomads.ncep.noaa.gov/cgi-bin/filter_fnl.pl它的优势在于可以按变量、按区域、按气压层裁剪数据只下你需要的那一部分。比如你的模拟区域只有长江中下游就可以在页面上指定经纬度范围生成的grib2文件会小很多下载速度也快不少。但这里提醒一句NOMADS默认只保留最近约10天的FNL数据超过这个窗口就查不到了所以它只适合临时补数据或者做实时模拟历史数据还是得回RDA。页面筛选时WRF运行通常必须勾选4个地面变量10米U/V风、2米温度、2米相对湿度或露点、海平面气压和多个气压层变量温度、位势高度、相对湿度、U/V风气压层建议选全从1000hPa一直到50hPa否则ungrib阶段可能会因为缺变量报错。3. ERA5数据下载注册、API配置与脚本化获取3.1 CDS注册与API Key配置ERA5托管在ECMWF的Climate Data StoreCDS平台上地址是cds.climate.copernicus.eu。下载ERA5不靠浏览器点点点主要走API方式所以第一步是注册CDS账号然后登录个人页面获取API Key。拿到Key之后在服务器上创建配置文件。CDS要求把Key写到~/.cdsapirc文件中格式如下url: https://cds.climate.copernicus.eu/api key: 你的UID:你的APIKey注意UID和APIKey是两段中间用英文冒号分隔。创建完文件后可以顺手验证一下权限有没有问题chmod 600 ~/.cdsapirc3.2 用Python批量下载ERA5数据CDS官方提供cdsapi这个Python库安装很简单pip install cdsapi然后写脚本请求数据。ERA5的下载是先提交请求到服务器排队处理完成后才开始传输所以脚本的运行时间远大于实际下载时间提交后耐心等待即可。一个标准的WRF驱动数据请求脚本长这样import cdsapi c cdsapi.Client() c.retrieve( reanalysis-era5-pressure-levels, { product_type: reanalysis, format: grib, variable: [ geopotential, relative_humidity, temperature, u_component_of_wind, v_component_of_wind ], pressure_level: [ 1, 2, 3, 5, 7, 10, 20, 30, 50, 70, 100, 125, 150, 175, 200, 225, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 775, 800, 825, 850, 875, 900, 925, 950, 975, 1000 ], year: 2022, month: 01, day: [01, 02], time: [00:00, 06:00, 12:00, 18:00], area: [55, 100, 15, 135], }, era5_pressure_202201.grib, )这组参数的含义是下载2022年1月1日至2日每天4个时次、37个气压层的位势、湿度、温度和风场数据模拟区域用area限制在纬度55到15、经度100到135之间。area参数按北、西、南、东的顺序填写填反了区域会跑到南半球去。地面数据需要单独请求一层reanalysis-era5-single-levels至少包含10米U/V风、2米温度、2米露点温度、海平面气压和地表气压这几个变量。地面数据虽然每个时次的体积不大但变量一个都不能少后面跑ungrib和metgrid时缺了2米露点温度会导致相对湿度计算失败整个流程直接中断。3.3 ERA5数据下载的注意事项ERA5最大的问题是速度。CDS的请求队列在业务高峰期可能排队一两个小时而且单个请求的数据量有限制一个压力层数据请求理论最大约60GB实际上超过20GB就容易超时。我的做法是按照月份拆成多个请求每个请求只提交一个月的压力层数据和对应月份的单层数据这样每个请求体积控制在5GB左右成功率最高。另外ERA5的grib文件下载下来之后用WPS的ungrib处理时需要选择Vtable.ERA5这个Vtable在WPS的ungrib/Variable_Tables目录下能找到。不要用默认的Vtable.GFS去处理ERA5两者变量编码差异很大强行使用会出现大量变量识别失败。还有一点很多人会忽略ERA5的气压层名称是model level和pressure level两套体系WRF只需要pressure level千万不要下成model level否则ungrib完全读不了。4. GFS预报场数据实时模拟的下载方案4.1 NOMADS上的GFS数据目录GFS数据最方便的下载渠道也是NOMADS网址是nomads.ncep.noaa.gov。进入GFS页面后能选不同分辨率0.25度是全球范围文件较大1度版本适合快速测试和业务降尺度文件小很多。GFS的文件命名规则是gfs.t00z.pgrb2.0p25.f000其中t00z表示00时次的起报f000表示预报时效为0小时即分析场f006就是6小时预报以此类推。做实时模拟时通常的做法是每天定时下载当天00时或12时起报的预报序列覆盖未来72到120小时。比如业务系统每天凌晨跑一次就下载gfs.t12z.pgrb2.0p25.f000到f120一共21个文件约占总预报时长的数据需求。4.2 命令行批量下载与自动化脚本NOMADS支持wget直接下载构造URL的规律性很强。以0.25度分辨率为例某个时次文件的URL格式是https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20230101/12/atmos/gfs.t12z.pgrb2.0p25.f000注意目录结构中gfs.20230101代表起报日期12代表起报时次atmos子目录下才是真正的grib2文件。批量下载未来120小时预报的脚本可以这样写basehttps://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20230101/12/atmos for fhr in $(seq -w 0 3 120); do wget -c ${base}/gfs.t12z.pgrb2.0p25.f${fhr} doneseq -w 0 3 120生成的是00、03、06一直到120的序列正好对应3小时间隔的GFS预报输出。下载完记得用ls -lh看一眼文件大小0.25度版本的单个文件约500MB如果某个文件明显偏小大概率是下载不完整wget -c重新拉一遍就好。如果你的业务系统需要每天自动拉取GFS建议把上述脚本配合crontab使用每天早上6点定时执行。我踩过的一个坑是NOMADS的数据目录会有延迟起报后大约4小时才更新到服务器crontab时间要留足这个缓冲否则脚本经常抓到404或者不完整文件。5. 常见问题与排查技巧实录5.1 高频问题汇总表问题现象可能原因解决办法wget下载返回403RDA未登录或.netrc权限不对检查账号确保.netrc权限为600下载的文件用grib_ls打不开文件不完整或格式损坏删除后重新下载用wget -c断点续传ungrib报错Unknown recordVtable选择错误FNL/GFS用Vtable.GFSERA5用Vtable.ERA5metgrid找不到时次数据时次与namelist.wps设置不匹配检查start_time/end_time与文件时次一致ERA5下载速度极慢CDS队列排队或请求过大按月拆分请求避免一次下载整年数据GFS某些时次404预报时效超过该轮次发布范围确认起报轮次实际发布的预报最大时效磁盘空间不足数据量预估不足按需下载用NOMADS裁剪区域和变量5.2 几个容易忽略的细节数据下载好之后建议先做一轮完整性检查再进入WPS流程。用grib_ls或者wgrib2列出文件内容核对变量数量和气压层数量是否符合预期尤其是从网页筛选方式下载的文件经常出现变量遗漏导致后续ungrib失败的情况。检查命令很简单wgrib2 fnl_20230101_00_00.grib2 | head -20第一行输出的记录数就是变量总数如果明显偏少大概率是筛选时漏选了变量。另一个容易被忽略的细节是时区问题。FNL和GFS文件名里的时次全部是UTC时间ERA5的API请求里time参数也是UTC但namelist.wps里面的start_time和end_time同样默认用UTC。如果你在本地习惯用北京时间规划模拟窗口需要先减8小时再做设定比否则模拟时段会整体偏移一跑就是好几个小时才发现结果时间轴全错了。最后聊聊数据管理。气象源文件体积大建议在项目目录下按模拟案例分目录存放命名包含数据源、日期范围和分辨率三个信息例如FNL_202301_1deg。WPS的ungrib输出文件也建议保留到模拟验证完成后再清理方便复盘时重新处理。6. 一些踩坑之后的个人体会数据下载是整个WRF流程里技术含量不算高、但最容易消磨耐心的一环。我自己从最早手动点网页下载到现在用脚本批量拉取最大的体会就是不要把精力耗在下数据本身而要把流程脚本化、规范化和可复现。第一所有账号密码、API Key、.netrc配置一次搞定后及时备份换电脑或者换服务器的时候能省很多事。第二下载脚本务必加上断点续传和完整性校验天气数据文件动辄几百MB断一次再重来太痛苦。第三优先选择经典数据源作为初始化方案FNL配Vtable.GFS这一套组合经过了无数案例验证比一上来就挑战ERA5要稳妥得多。最后分享一个小技巧下载完第一批数据后不要急着补全剩余时段先跑通一个24小时的模拟案例把ungrib、metgrid、real全套流程验证一遍再继续囤数据。这样做的好处是如果WPS配置有问题你只需要重新处理两天数据而不是回头重来整月的数据这个时间成本在深夜赶进度的时候会显得格外珍贵。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。