由于CDS更新至CDS-Beta,原来的toolbox已经无法使用,目前官方直接提供了日尺度数据下载.
cdsapi配置:Python使用cdsapi对ERA5数据批量下载
CDS-Beta更新:cdsapi CDS-Beta
数据网址
ERA5 post-processed daily statistics on single levels from 1940 to present
ERA5 post-processed daily statistics on pressure levels from 1940 to presen
ERA5-Land post-processed daily statistics from 1950 to present
以下以下载ERA5 post-processed daily statistics on single levels from 1940 to present为例:
官方代码(下载EAR5 single levels Reanalysis 的2001年 2m temperature日尺度数据):
单个数据下载:
import cdsapi
dataset = "derived-era5-single-levels-daily-statistics"
request = {
"product_type": "reanalysis",
"variable": ["2m_temperature"],
"year": "2001",
"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"
],
"daily_statistic": "daily_mean",
"time_zone": "utc+00:00",
"frequency": "1_hourly"
}
client = cdsapi.Client()
client.retrieve(dataset, request).download()
做出以下修改:
(1)下载后文件名命名
(2)下载空间精度
(3)经纬度范围
import cdsapi
dataset = "derived-era5-single-levels-daily-statistics"
request = {
"product_type": "reanalysis",
"variable": ["2m_temperature"],
"year": "2001",
"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"
],
"daily_statistic": "daily_mean",
"time_zone": "utc+00:00",
"frequency": "1_hourly",
'area':[90,-180,-90,180,], #调整经纬度范围,便于数据、画图,正常是[-90,-180,90,180,]
'download_format': 'nc', #以nc形式下载
'grid':'1.0/1.0', #设置空间精度为1°x1°,默认为0.25°*0.25°
}
target = "ERA5_single_level_2m_temperature_2001_daily.nc" #文件命名
client = cdsapi.Client()
client.retrieve(dataset, request, target)
运行后可在Your requests处查看处理进度(在不更改空间精度情况下,处理较快,修改空间精度后,处理比较慢):
批量下载:
import cdsapi
def ERA5_daily_download(year,var):
dataset = "derived-era5-single-levels-daily-statistics"
request = {
"product_type": "reanalysis",
"variable": [var],
"year": '%s'%(year),
"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"
],
"daily_statistic": "daily_mean",
"time_zone": "utc+00:00",
'area':[90,-180,-90,180],
"frequency": "1_hourly",
'grid':'1.0/1.0',
}
target = "%s_%s.nc"%(var,year)
client = cdsapi.Client()
client.retrieve(dataset, request,target)
#下载2001年2m_temperature 空间精度为1°*1°数据
var = "2m_temperature"
for year in range(2001,2002):
ERA5_daily_download(year,var)