【WRF数据准备】批量下载ERA5再分析数据-气象驱动数据

发布于:2025-09-14 ⋅ 阅读:(21) ⋅ 点赞:(0)

气象驱动数据-ERA5再分析数据的手动下载可以参考我的另一博客-【WRF数据准备】气象驱动数据-ERA5再分析数据(Copernicus)

本博客详细介绍批量下载ERA5再分析数据,并给出完整实现代码。

批量下载 ERA5 的气压层(pressure level)和地面层(single level)数据(GRIB 格式),自动循环日期,并分别保存为不同文件名。

准备工作

1. 安装 cdsapi 模块

conda activate myenv3.10

# 使用 conda 或 pip 安装 cdsapi
pip install cdsapi
conda install cdsapi

在这里插入图片描述

验证安装是否成功,可以执行以下命令测试:

python -c "import cdsapi; print('✅ cdsapi 已成功安装')"

如果没有报错,就表示安装成功了。

2. .cdsapirc 文件配置

可以从 CDS 网站获取 和 :CDS 网站-Climate Data Store

登录后,页面顶部会显示 API key,例如:

url: https://cds.climate.copernicus.eu/api/v2
key: <uid>:<api-key>

在 ~/ 文件夹下新建.cdsapirc 文件,并填入以上内容即可。

实现代码

retrieve.grid.sh 脚本

#!/bin/bash
# retrieve.grid.sh
# 下载 ERA5 气压层 + 地面层数据

# 确保使用正确的 Conda 初始化方式
conda activate myenv3.10

echo "当前 Python 路径:$(which python)"

year=2022
mon=07

for dd in 01 02 03 04 05 06 07 08 09 $(seq -w 10 31); do
    echo "===== 正在下载:${year}-${mon}-${dd} ..."

    # 替换模板中的占位符
    sed -e "s/yyyy/${year}/g" -e "s/mm/${mon}/g" -e "s/dd/${dd}/g" grib.pre.2022.baz > grib.pre.py
    sed -e "s/yyyy/${year}/g" -e "s/mm/${mon}/g" -e "s/dd/${dd}/g" grib.sur.2022.baz > grib.sur.py

    # 下载气压层
    echo "===== 下载气压层数据 ..."
    python grib.pre.py
    if [ -f download.grib ]; then
        mv download.grib ERA5_PRE_${year}-${mon}-${dd}.grib
    else
        echo "气压层下载失败:ERA5_PRE_${year}-${mon}-${dd}.grib"
    fi

    # 下载地面层
    echo "===== 下载地面层数据 ..."
    python grib.sur.py
    if [ -f download.grib ]; then
        mv download.grib ERA5_SUR_${year}-${mon}-${dd}.grib
    else
        echo "地面层下载失败:ERA5_SUR_${year}-${mon}-${dd}.grib"
    fi

    echo "完成:${year}-${mon}-${dd}"
done

grib.pre.2022.baz 模板(ERA5 气压层)

#!/usr/bin/env python
import cdsapi

client = cdsapi.Client()

client.retrieve(
    "reanalysis-era5-pressure-levels",
    {
        "product_type": "reanalysis",
        "variable": [
            "geopotential", "relative_humidity", "specific_humidity",
            "temperature", "u_component_of_wind", "v_component_of_wind"
        ],
        "year": "yyyy",
        "month": "mm",
        "day": "dd",
        "time": [
            "00:00", "01:00", "02:00", "03:00", "04:00", "05:00",
            "06:00", "07:00", "08:00", "09:00", "10:00", "11:00",
            "12:00", "13:00", "14:00", "15:00", "16:00", "17:00",
            "18:00", "19:00", "20:00", "21:00", "22:00", "23:00"
        ],
        "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"
        ],
        "format": "grib",
        "area": [56, 70, 15, 140]
    },
    "download.grib"
)

grib.sur.2022.baz 模板(ERA5 地面层)

#!/usr/bin/env python
import cdsapi

client = cdsapi.Client()

client.retrieve(
    "reanalysis-era5-single-levels",
    {
        "product_type": "reanalysis",
        "variable": [
            "10m_u_component_of_wind", "10m_v_component_of_wind",
            "2m_dewpoint_temperature", "2m_temperature",
            "mean_sea_level_pressure", "sea_surface_temperature",
            "surface_pressure", "skin_temperature",
            "snow_density", "snow_depth",
            "soil_temperature_level_1", "soil_temperature_level_2",
            "soil_temperature_level_3", "soil_temperature_level_4",
            "volumetric_soil_water_layer_1", "volumetric_soil_water_layer_2",
            "volumetric_soil_water_layer_3", "volumetric_soil_water_layer_4",
            "land_sea_mask", "sea_ice_cover"
        ],
        "year": "yyyy",
        "month": "mm",
        "day": "dd",
        "time": [
            "00:00", "01:00", "02:00", "03:00", "04:00", "05:00",
            "06:00", "07:00", "08:00", "09:00", "10:00", "11:00",
            "12:00", "13:00", "14:00", "15:00", "16:00", "17:00",
            "18:00", "19:00", "20:00", "21:00", "22:00", "23:00"
        ],
        "format": "grib",
        "area": [56, 70, 15, 140]
    },
    "download.grib"
)

运行方式

chmod +x retrieve_era5_2022_07.sh
./retrieve_era5_2022_07.sh

或者直接运行:

bash retrieve_era5_2022_07.sh

终端下载界面如下:

在这里插入图片描述

在这里插入图片描述

参考