ERA5 hourly data批量下载与cdo处理(一)

摸索了两天,我这个小白终于搞定了!主要分为两个部分:(1)ERA数据的批量下载;(2) 应用cdo将小时数据转化为日数据,本篇文章主要介绍第一部分。

一、ERA5数据批量下载

1. 准备工作

包括注册CDS账号、获取API key、配置并安装CDS API、安装和配置IDM,  此部分主要参考批量下载ERA5数据(Python+IDM)_菩提有树的博客-CSDN博客_era5下载,博主写的非常详细

2. 批量下载

这里以获取ERA5-Land hourly data from 1950 to present数据集中的2m 温度为例,在页面中根据自己的需要选择数据(Copernicus Climate Data Store |)。

下载2021年中国的2m温度日数据nc

条件设置完成之后,点击左下角的Show API request,获取如下代码

import cdsapi

c = cdsapi.Client()

c.retrieve(
    'reanalysis-era5-land',
    {
        'variable': '2m_temperature',
        'year': '2021',
        'month': [
            '01', '02', '03',
            '04', '05', '06',
            '07', '08', '09',
            '10', '11', '12',
        ],
        'day': [
            '01', '02', '03',
            '04', '05', '06',
            '07', '08', '09',
            '10', '11', '12',
            '13', '14', '15',
            '16', '17', '18',
            '19', '20', '21',
            '22', '23', '24',
            '25', '26', '27',
            '28', '29', '30',
            '31',
        ],
        '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',
        ],
        'area': [
            60, 70, 0,
            140,
        ],
        'format': 'netcdf',
    },
    'download.nc')

 以上述代码为基础,采用Python+IDM方式(此方法同样也是参考批量下载ERA5数据(Python+IDM)_菩提有树的博客-CSDN博客_era5下载,以实现更快的下载速度)批量下载数据,运行代码时需要打开IDM软件,完整代码如下。

import cdsapi
import calendar
from subprocess import call

import urllib3
urllib3.disable_warnings()

def idmDownloader(task_url, folder_path, file_name):
    """
    IDM下载器
    :param task_url: 下载任务地址
    :param folder_path: 存放文件夹
    :param file_name: 文件名
    :return:
    """
    # IDM安装目录
    idm_engine = "C:\\Program Files (x86)\\Internet Download Manager\\IDMan.exe"
    # 将任务添加至队列
    call([idm_engine, '/d', task_url, '/p', folder_path, '/f', file_name, '/a'])
    # 开始任务队列
    call([idm_engine, '/s'])


if __name__ == '__main__':
    c = cdsapi.Client()  # 创建用户

    # 数据信息字典
    dic = {
        'product_type': 'reanalysis-era5-land',  # 产品类型
        'format': 'netcdf',  # 数据格式
        'variable': '2m_temperature',  # 变量名称
        'year': '2021',  # 年,设为空
        'month': [
            '01', '02', '03',
            '04', '05', '06',
            '07', '08', '09',
            '10', '11', '12',
        ],
        'day': [
            '01', '02', '03',
            '04', '05', '06',
            '07', '08', '09',
            '10', '11', '12',
            '13', '14', '15',
            '16', '17', '18',
            '19', '20', '21',
            '22', '23', '24',
            '25', '26', '27',
            '28', '29', '30',
            '31',
        ],
        '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',
        ],
        'area': [60, 70, 0,140,],
    }


    r = c.retrieve('reanalysis-era5-land', dic,)      # 文件下载器
    url = r.location  # 获取文件下载地址
    path = 'E:\\era'  # 存放文件夹
    filename = 'tem2021.nc' # 文件名
    idmDownloader(url, path, filename)  # 添加进IDM中下载

 纯小白,有什么问题可以一起交流呀~

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天吃饱了吗77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值