# FengYuan-Weather **Repository Path**: humanfans/FengYuan-Weather ## Basic Information - **Project Name**: FengYuan-Weather - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-25 - **Last Updated**: 2026-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 风源模型 风源中期天气预报模型采用过去12小时的数据作为输入,预报未来10天逐6小时,空间分辨率0.25度的地面和高空气象要素。此库中包含了风源中期天气预报模型的推断代码、预训练模型权重(https://zenodo.org/records/17585603)等信息。 ## 数据格式 风源模型输入过去两帧时间分辨率为6小时数据,预测未来10天的天气。`input1.npy`表示第一个时刻的大气输入数据, `input2.npy`表示第二个时刻的大气输入数据。风源模型单次输出1个预报时次,采用自回归的方式滚动预报40个时次,即未来10天的预报。每个时次预报的大小为$70\times721\times1440$,70表示的不同高度层和地面要素的预报。例如,如果`input1.npy`表示的是世界时2022年1月1日00时的大气状态,`input2.npy`表示的则是世界时2022年1月1日06时的大气状态。模型预报的第一个大气状态是世界时2022年1月1日12时的预报,第二个时刻则是世界时2022年1月1日18时的预报。纬度范围为北纬90度到南纬90度,经度范围为0到360。 前65个变量按照 `'t', 'u', 'v', 'z', 'q'` 的顺序排列,每个变量包含13个气压层,气压层的顺序为 `50, 100, 150, 200, 250, 300, 400, 500, 600, 700, 850, 925, 1000`。最后5个变量为 `'t2m', 'u10', 'v10', 'msl', 'tp'`。因此,70个变量的顺序为 `'t50','u50','v50','z50','q50','t100','u100','v100','z100','q100','t150','u150','v150','z150','q150', 't200','u200','v200','z200','q200','t250','u250','v250','z250','q250','t300','u300','v300','z300','q300', 't400','u400','v400','z400','q400','t500','u500','v500','z500','q500','t600','u600','v600','z600','q600', 't700','u700','v700','z700','q700','t850','u850','v850','z850','q850','t925','u925','v925','z925','q925', 't1000','u1000','v1000','z1000','q1000','t2m','u10','v10','msl','tp'`。 ## 推断 在执行推断之前,需要将输入数据转换为上述描述的**数据格式**。一旦转换完成后,就可以加载模型权重预报未来10天的天气。 如果你想预测未来10天逐6小时的预报,可以执行如下命令: ```bash python inference.py \ --in1 data/20220101000000.npy \ --in2 data/20220101060000.npy \ --mean data/mean-1979-2019.npy \ --std data/std-1979-2019.npy \ --model-short data/ckpts/fengyuan_short.onnx \ --model-medium data/ckpts/fengyuan_medium.onnx \ --n-short 20 \ --n-medium 20 \ --step-hours 6 \ --output-dir ./output \ --engine netcdf4 \ --verbose ``` 当然,你也可以自定义预报时长。如果你只需要预报未来5天逐6小时的预报,可以只加载`short-range`模型权重。此外,你可以将推断结果保存到指定目录下,并按照指定的命名格式保存。 ```bash python inference.py \ --in1 data/20220101000000.npy \ --in2 data/20220101060000.npy \ --mean data/mean-1979-2019.npy \ --std data/std-1979-2019.npy \ --n-short 20 \ --step-hours 6 \ --output-dir ./output \ --model-short data/ckpts/fengyuan_short.onnx \ --filename-format "%Y-%m-%d_%H:%M:%S.nc" \ --filename-prefix "weather_" \ --filename-suffix "_forecast" ``` 上述命令给的是加载ERA5再分析数据进行推断。你也可以查看 [run_fengyuan_v1.0.ipynb](run_fengyuan_v1.0.ipynb) 了解如何下载实时的ECMWF开放数据,并加载风源模型权重,预报未来10天的天气。 比如,下载2025年12月21日00时的ECMWF数据,预报未来10天的天气。下图展示的是未来10天2m温度的变化。 ![2m temperature](imgs/20251221.gif) ## 依赖 - numpy - onnxruntime - xarray - netcdf4 or h5netcdf