我正试图从python代码下载ERA5再分析数据(全局),但它显示数据太大



我想下载全球(1950年至2022年(的ERA5再分析小时数据。我正在尝试使用cdsapi中的python代码进行下载。

我只是想下载5年(每年只有3个月(,但由于请求太大,它显示失败了。

这是我的代码:

import cdsapi
c = cdsapi.Client()
c.retrieve(
'reanalysis-era5-pressure-levels',
{
'product_type': 'reanalysis',
'variable': [
'specific_humidity', 'temperature', 'u_component_of_wind',
'v_component_of_wind',
],
'pressure_level': '500',
'year': '1979',
'month': [
'01', '02', '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',
],
'format': 'netcdf',
},
'era1979.nc')

您需要将检索分解为更小的块,例如,通过在几个月内循环,每个月有一个文件。为了了解如何做到这一点,我在我的频道上有一个关于这个主题的youtube视频。

因此,以你为例(如果这还不够,你需要在几天内做同样的事情(:

import cdsapi
c = cdsapi.Client()
for year in [str(y) for y in range(1979,1985)]:
for mon in ['01', '02', '12']:
c.retrieve(
'reanalysis-era5-pressure-levels',
{
'product_type': 'reanalysis',
'variable': [
'specific_humidity', 'temperature', 'u_component_of_wind',
'v_component_of_wind',
],
'pressure_level': '500',
'year': year,
'month': mon,
'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',
],
'format': 'netcdf',
},
'era_'+year+'_'+mon+'.nc')

循环的另一种方法是简单地使用range命令,然后在使用时需要将其转换为字符串

for year in range(1979,1985):
file='era_'+str(year)+'.nc'

etc

最新更新