python 利用cdsapi下载ERA5日尺度数据

本文介绍了如何使用cdsapi从ERA5数据集中下载每日平均2m露点温度数据,通过逐月处理小时尺度数据,避免了不必要的下载,同时指出了空间分辨率和下载范围的选择方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于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) 
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值