摸索了两天,我这个小白终于搞定了!主要分为两个部分:(1)ERA数据的批量下载;(2) 应用cdo将小时数据转化为日数据,本篇文章主要介绍第一部分。
包括注册CDS账号、获取API key、配置并安装CDS API、安装和配置IDM, 此部分主要参考批量下载ERA5数据(Python+IDM)_菩提有树的博客-CSDN博客_era5下载,博主写的非常详细
这里以获取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中下载
纯小白,有什么问题可以一起交流呀~