使用cdsapi下载ERA5土地逐小时数据集

目录

1.注册CDS账号(参考博文)

2.安装CDS API的客户端python库

3.主体函数

4.输入参数

5.运行效果


1.注册CDS账号(参考博文)

想通过cdsapi下载数据,需要有CDS账号

注册链接:https://cds.climate.copernicus.eu/user/register

使用cdsapi下载ERA5土地逐小时数据集_第1张图片

提交注册后网站提示将发送邮件给你填写的邮箱, 打开邮件中链接设置账号密码,完成后,网页提示密码已设置完成,并自动登录。

最终用户名和密码信息如下:
用户名:[email protected]
密码:password

2.安装CDS API的客户端python库

使用pip安装客户端库,命令:pip install cdsapi

登录CDS账号,点击首页红框内内容 

使用cdsapi下载ERA5土地逐小时数据集_第2张图片

使用cdsapi下载ERA5土地逐小时数据集_第3张图片

        新建一个txt文件,把第一个黑框里的内容原封不动地复制进去,然后,把txt文件名改成“ .cdsapirc”,注意是有点(.)的。后续如果有报Exception: Missing/incomplete configuration错误的,解决方法详见http://t.csdn.cn/OB1ow

3.主体函数

这一部分需要修改的主要是文件下载的地址和名称,下面代码的前几行就是了

import cdsapi
import datetime
import os


def ERA5_downloader(variable,year = 1980):
    # 文件下载地址、名称
    folder_out = r'E:\ERA5-Land-hourly'
    downloaded_file = f'{variable}_{year}.nc'
    downloaded_file = os.path.join(folder_out, downloaded_file)

# 数据区域
    lon_min, lat_min, lon_max, lat_max =[95, 30, 120, 45]# 黄河流域                                       

# 时间范围
    # 日
    start_day = 1
    end_day = 31
    days = [ str(start_day +i ).zfill(2) for i in range(end_day - start_day + 1)] # 下载日:从start_day到end_day

    print('程序 已运行. 请等待结束信息 ... ')
    start = datetime.datetime.now()        # 开始时间计时器

    c = cdsapi.Client()
    c.retrieve(
        'reanalysis-era5-land',
        {
            'year': year,
            'variable': variable,
            'month': [ '01', '02', '03',
                       '04', '05', '06',
                       '07', '08', '09',
                       '10', '11', '12',],
            'day': days,
            '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': [ lat_min, lon_min, lat_max, lon_max ],
            'format': 'netcdf',
        },
        downloaded_file)

    print('程序 运行结束,用时: ', datetime.datetime.now()-start)

4.输入参数

# 变量列表
variables_list = [ 
                '10m_u_component_of_wind', '10m_v_component_of_wind',
                '2m_dewpoint_temperature','2m_temperature', 
                'surface_net_solar_radiation', 'surface_pressure',
                     ]
# 下载时间区间
for i in range(2001,2021): # 下载2001到2020年的数据,根据需要自行修改
    ERA5_downloader(variable=variables_list,year = i)

“变量列表”以及“下载时间区间”,按个人需要进行修改

转到ERA5数据下载网站,选择需要的数据集

使用cdsapi下载ERA5土地逐小时数据集_第4张图片

 本例:https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-land?tab=form

在数据集下载页面,点击所需要的参数,滑到页面最下方,勾选许可,点击“API请求”,可以看到之前勾选的参数名称,复制下来对第4步的代码进行替换。

使用cdsapi下载ERA5土地逐小时数据集_第5张图片

5.运行效果

使用cdsapi下载ERA5土地逐小时数据集_第6张图片

 文中下载的示例范围是【东经95-120,北纬30-45】,下载变量数量为6,一次下载一年中每日的逐小时数据,一个文件大小约3.7G;实际运行时排队请求加上数据运算,大概2-4小时可以下一个文件,一天大概下载8个文件,运气好能下10个;晚上速度会稍快一些,下载数据量大时建议后台挂着,偶尔检查下下载进度,但没事千万别动它。

使用cdsapi下载ERA5土地逐小时数据集_第7张图片

 

你可能感兴趣的:(GIS,CDS,数据来源,python)