目标:批量下载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:
先注册,获取API TOKEN
点击Your Profile,复制API Token
在下图的位置,创建一个txt文件,把后面的代码输进去之后,改名,注意,不要名字,只要后缀名,就叫这个
.cdsapirc
,创建一个权限文件:
在C盘,用户,你的用户名,我的是超级管理员账户,就叫Administrator
把下面代码输入到
.cdsapirc
文件里面,用文本编辑器编辑即可,保存,注意要换成你自己在上面获取的API TOKEN
url: https://cds.climate.copernicus.eu/api key: 你的API TOKEN
Python批量下载数据
安装CDSAPI
使用pip安装cdsapi,如果pip直接按不行,可以看参考文献1,里面有更多安装介绍
pip install cdsapi
在这里,安装cdsapi
批量下载
环境安好后,就可以批量下载了,打开Spyder或者Juptyer Notebook,把下面的代码复制进去,改一下参数,即可下载。
在Spyder里面把下面的代码复制进去,按自己情况修改一下参数,运行即可
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