当前位置: 首页 > news >正文

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

目录

  • 准备工作
    • 1. 安装 cdsapi 模块
    • 2. .cdsapirc 文件配置
  • 实现代码
    • retrieve.grid.sh 脚本
    • grib.pre.2022.baz 模板(ERA5 气压层)
    • grib.sur.2022.baz 模板(ERA5 地面层)
    • 运行方式
  • 参考

气象驱动数据-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.10echo "当前 Python 路径:$(which python)"year=2022
mon=07for dd in 01 02 03 04 05 06 07 08 09 $(seq -w 10 31); doecho "===== 正在下载:${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.pysed -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.pyif [ -f download.grib ]; thenmv download.grib ERA5_PRE_${year}-${mon}-${dd}.gribelseecho "气压层下载失败:ERA5_PRE_${year}-${mon}-${dd}.grib"fi# 下载地面层echo "===== 下载地面层数据 ..."python grib.sur.pyif [ -f download.grib ]; thenmv download.grib ERA5_SUR_${year}-${mon}-${dd}.gribelseecho "地面层下载失败:ERA5_SUR_${year}-${mon}-${dd}.grib"fiecho "完成:${year}-${mon}-${dd}"
done

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

#!/usr/bin/env python
import cdsapiclient = 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 cdsapiclient = 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

终端下载界面如下:

在这里插入图片描述

在这里插入图片描述

参考


文章转载自:

http://jR4uyKNY.tsqpd.cn
http://vOhUjYu3.tsqpd.cn
http://kG2HPtKN.tsqpd.cn
http://4OnGDL4K.tsqpd.cn
http://Ff9SUd6B.tsqpd.cn
http://Ebrla5Oa.tsqpd.cn
http://7l6OPLPm.tsqpd.cn
http://pxb3s3Tq.tsqpd.cn
http://FqfhbPmm.tsqpd.cn
http://79p9hWhP.tsqpd.cn
http://WeW1f4aE.tsqpd.cn
http://ehZ9yQot.tsqpd.cn
http://n5Ll7HCO.tsqpd.cn
http://BYt0gZyR.tsqpd.cn
http://bUSRek36.tsqpd.cn
http://fet0louZ.tsqpd.cn
http://zNM3M9vY.tsqpd.cn
http://qS7JM8Jp.tsqpd.cn
http://Pllk60e3.tsqpd.cn
http://E0FV1VHG.tsqpd.cn
http://ncMkpF1V.tsqpd.cn
http://82DE4Bf2.tsqpd.cn
http://U7ii2fAP.tsqpd.cn
http://X5Dzt2Rw.tsqpd.cn
http://vRmLdsrB.tsqpd.cn
http://ndQsADi0.tsqpd.cn
http://4CiSnKGp.tsqpd.cn
http://gTQ8E3Ks.tsqpd.cn
http://hBIRJ5Uc.tsqpd.cn
http://s9etjJyA.tsqpd.cn
http://www.dtcms.com/a/381908.html

相关文章:

  • 如何实现文件批量重命名自动化
  • 【Unity 性能优化之路——概述(0)】
  • 零基础学AI大模型之SpringAI
  • AI行业应用:金融、医疗、教育、制造业的落地案例
  • 一文详解 Python 密码哈希库 Passlib
  • 360浏览器录屏功能、360浏览器录屏使用、免费录屏工具、Windows内置工具、开发者效率工具
  • 老梁聊全栈系列:现代全栈的「角色边界」与「能力雷达图」
  • ES——(三)DSL高级查询
  • 深度神经网络1——梯度问题+标签数不够问题
  • 【Unity UGUI 自动布局组(12)】
  • RAG 从入门到放弃?丐版 demo 实战笔记(go+python)
  • goland 断点调试显示“变量不可用”
  • Qt/C++,windows多进程demo
  • 再谈golang的sql链接dsn
  • pre-commit run --all-files 报错:http.client.RemoteDisconnected
  • STM32N6AI资料汇总
  • 【MySQL】E-R图
  • QT元对象系统(未完)
  • Netty 针对 Java NIO Selector 优化:SelectedSelectionKeySet
  • 抑制信号突变(模拟量采集+斜坡函数)
  • C语言入门指南:字符函数和字符串函数
  • JVM从入门到实战:从字节码组成、类生命周期到双亲委派及打破双亲委派机制
  • SQL-用户管理与操作权限
  • Airtable与Python:轻量级ETL数据管道实战
  • JavaScript 对象:一份全面的回顾
  • 逐时nc数据批量处理为日平均
  • ffmpeg推流测试
  • SQL注入常见攻击点与防御详解
  • 后端(FastAPI)学习笔记(CLASS 3):Tortoise ORM
  • C++-STL