目录
1.注册CDS账号(参考博文)
2.安装CDS API的客户端python库
3.主体函数
4.输入参数
5.运行效果
想通过cdsapi下载数据,需要有CDS账号
注册链接:https://cds.climate.copernicus.eu/user/register
提交注册后网站提示将发送邮件给你填写的邮箱, 打开邮件中链接设置账号密码,完成后,网页提示密码已设置完成,并自动登录。
最终用户名和密码信息如下:
用户名:[email protected]
密码:password
使用pip安装客户端库,命令:
pip install cdsapi
登录CDS账号,点击首页红框内内容
新建一个txt文件,把第一个黑框里的内容原封不动地复制进去,然后,把txt文件名改成“ .cdsapirc”,注意是有点(.)的。后续如果有报Exception: Missing/incomplete configuration错误的,解决方法详见http://t.csdn.cn/OB1ow
这一部分需要修改的主要是文件下载的地址和名称,下面代码的前几行就是了
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)
# 变量列表
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数据下载网站,选择需要的数据集
本例:https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-land?tab=form
在数据集下载页面,点击所需要的参数,滑到页面最下方,勾选许可,点击“API请求”,可以看到之前勾选的参数名称,复制下来对第4步的代码进行替换。
文中下载的示例范围是【东经95-120,北纬30-45】,下载变量数量为6,一次下载一年中每日的逐小时数据,一个文件大小约3.7G;实际运行时排队请求加上数据运算,大概2-4小时可以下一个文件,一天大概下载8个文件,运气好能下10个;晚上速度会稍快一些,下载数据量大时建议后台挂着,偶尔检查下下载进度,但没事千万别动它。