目标:批量下载ERA5-LAND逐日气象数据
获取ERA5-LAND数据权限
先在Climate Data Store注册一个账号,登录下面的网址:
https://cds.climate.copernicus.eu/datasets/derived-era5-land-daily-statistics?tab=download
注册登录后,先选好你要下载的数据参数,然后滚动网页到下面,有个Terms of use,一定要把这个点上同意!
在右上角点击Your Profile,进入Your Profile界面,获取API Token:
在下图的位置,创建一个txt文件,把后面的代码输进去之后,改名,注意,不要名字,只要后缀名,就叫这个.cdsapirc
,创建一个权限文件:
把下面代码输入到.cdsapirc
文件里面,用文本编辑器编辑即可,保存,注意要换成你自己在上面获取的API TOKEN
url: https://cds.climate.copernicus.eu/api
key: 你的API TOKEN
Python批量下载数据
安装CDSAPI
使用pip安装cdsapi,如果pip直接按不行,可以看参考文献1,里面有更多安装介绍
pip install cdsapi
批量下载
环境安好后,就可以批量下载了,打开Spyder或者Juptyer Notebook,把下面的代码复制进去,改一下参数,即可下载。
import cdsapi
# 指定要下载的数据集
dataset = "derived-era5-land-daily-statistics"
# 初始化 CDS API client
client = cdsapi.Client()
# 指定下载位置,可以自己改
output_dir = 'I:/ERA5-LAND/'
# 年份循环,从1995到2024,左闭右开区间
for year in range(1995, 2025): # 从1995到2024,左闭右开区间,可以自行调整
# 月份循环,从01到12
for month in range(1, 13): # month from 1 to 12
# Format the month to two digits (e.g., 01, 02, ..., 12)
month_str = f'{month:02d}'
request = {
"daily_statistic": "daily_mean", # 每日均值
"time_zone": "utc+00:00", # 格林尼治时间
"variable": "2m_temperature", # 2m temperature 下载参数,可以自己按需要修改
"year": [str(year)], # 年份
"month": [month_str], # 月份,两位数组成
"day": ["01"], # 每月的1号,在这可以自己改日子
"format": "netcdf", # 数据格式
}
# Specify the output filename
output_file = output_dir + f'era5_land_temperature_{year}_{month_str}_01.nc'
# Make the request to the CDS API and download the file
client.retrieve(dataset, request, output_file)
print(f"下载已完成 {year}-{month_str}. 数据保存到 {output_file}")
参考文献
https://confluence.ecmwf.int/display/CKB/How+to+install+and+use+CDS+API+on+Windows