使用era5cli下载ERA5数据
目录
本文介绍如何使用 era5cli 批量下载 ERA5 数据。
注:本文部分内容来自 era5cli 官方文档。
安装
使用 pip 安装:
pip install era5cli
或者从 GITHUB 网站下载源码在线安装:
pip install -U git+https://github.com/eWaterCycle/era5cli.git
安装后会提供命令行程序 era5cli
。
准备
注册账户
下载 ERA5 数据需要注册 Copernicus CDS 账户:
https://cds.climate.copernicus.eu/user/register?destination=%2F%23!%2Fhome
注册并登陆后,在个人资料界面可以找到 UID 和 API key。
创建配置文件
era5cli 默认使用用户目录下的配置文件。
在用户目录 ($HOME
) 创建配置文件 .cdsapirc
,包含两行内容
url: https://cds.climate.copernicus.eu/api/v2
key: UID:KEY
其中 UID
和 KEY
是上一步在个人资料界面中找到的值。
查看信息
下载数据前,我们需要知道数据集的基本信息,以便确定筛选条件。 era5cli 提供下面的命令用于查看可用的变量和层次
era5cli info [-h] name
其中 name
可以是
levels
:显示所有气压层2Dvars
:显示所有单层或二维变量3Dvars
:显示所有三维变量land
:显示所有ERA5-land
中的变量- 变量名 (例如
total_precipitation
) 或气压层 (例如825
):显示变量或层次是否可用,以及在哪个列表中
示例:
> era5cli info 3Dvars
Available 3D variables:
divergence
fraction_of_cloud_cover
geopotential
ozone_mass_mixing_ratio
potential_vorticity
relative_humidity
specific_cloud_ice_water_content
specific_cloud_liquid_water_content
specific_humidity
specific_rain_water_content
specific_snow_water_content
temperature
u_component_of_wind
v_component_of_wind
vertical_velocity
vorticity
> era5cli info levels
Available pressure levels:
1 7 50 150 250 450 650 800 900 1000
2 10 70 175 300 500 700 825 925
3 20 100 200 350 550 750 850 950
5 30 125 225 400 600 775 875 975
> era5cli info 2m_temperature
2m_temperature is in the list(s): 2Dvars, land
下载数据
era5cli 支持下载小时数据和月数据。
命令用法
小时数据
era5cli hourly [-h]
--variables VARIABLES [VARIABLES ...]
--startyear STARTYEAR
[--endyear ENDYEAR]
[--levels LEVELS [LEVELS ...]]
[--outputprefix OUTPUTPREFIX]
[--format {netcdf,grib}]
[--merge]
[--threads {1,2,3,4,5,6}]
[--ensemble]
[--dryrun]
[--prelimbe]
[--land]
[--area LAT_MAX LON_MIN LAT_MIN LON_MAX]
[--months MONTHS [MONTHS ...]]
[--days DAYS [DAYS ...]]
[--hours HOURS [HOURS ...]]
[--statistics]
月数据
era5cli monthly [-h]
--variables VARIABLES [VARIABLES ...]
--startyear STARTYEAR
[--endyear ENDYEAR]
[--levels LEVELS [LEVELS ...]]
[--outputprefix OUTPUTPREFIX]
[--format {netcdf,grib}]
[--merge]
[--threads {1,2,3,4,5,6}]
[--ensemble]
[--dryrun]
[--prelimbe]
[--land]
[--area LAT_MAX LON_MIN LAT_MIN LON_MAX]
[--months MONTHS [MONTHS ...]]
[--synoptic [SYNOPTIC [SYNOPTIC ...]]]
参数说明
两个命令大部分参数都相同,部分参数含义如下:
variables
:要素列表,以,
分割startyear
:起始年份endyear
:终止年份levels
:层次列表format
:格式,netcdf
或grib
,默认为netcdf
更多参数请访问官方文档。
示例
月数据
下载 2000 - 2009 年的月平均 2 米温度数据
era5cli monthly \
--variable "2m_temperature" \
--startyear 2000 \
--endyear 2009
下载文件名称类似:
{OUTPUTPREFIX}_{variable}_{year}_monthly.nc
例如:
era5_2m_temperature_2000_monthly.nc
使用 ncdump
查看 NetCDF 文件内容 (省略 global attributes)
netcdf era5_2m_temperature_2000_monthly {
dimensions:
longitude = 1440 ;
latitude = 721 ;
time = 12 ;
variables:
float longitude(longitude) ;
longitude:units = "degrees_east" ;
longitude:long_name = "longitude" ;
float latitude(latitude) ;
latitude:units = "degrees_north" ;
latitude:long_name = "latitude" ;
int time(time) ;
time:units = "hours since 1900-01-01 00:00:00.0" ;
time:long_name = "time" ;
time:calendar = "gregorian" ;
short t2m(time, latitude, longitude) ;
t2m:scale_factor = 0.00164247442120942 ;
t2m:add_offset = 260.889475698825 ;
t2m:_FillValue = -32767s ;
t2m:missing_value = -32767s ;
t2m:units = "K" ;
t2m:long_name = "2 metre temperature" ;
}
小时数据
下载 2020 年 12 月所有 00 时的 10 米 U 风
era5cli hourly \
--startyear 2020 \
--endyear 2020 \
--month 12 \
--hours 0 \
--variables "10m_u_component_of_wind"
使用 ncdump
查看 NetCDF 文件内容 (省略 global attributes)
netcdf era5_10m_u_component_of_wind_2020_hourly {
dimensions:
longitude = 1440 ;
latitude = 721 ;
time = 31 ;
variables:
float longitude(longitude) ;
longitude:units = "degrees_east" ;
longitude:long_name = "longitude" ;
float latitude(latitude) ;
latitude:units = "degrees_north" ;
latitude:long_name = "latitude" ;
int time(time) ;
time:units = "hours since 1900-01-01 00:00:00.0" ;
time:long_name = "time" ;
time:calendar = "gregorian" ;
short u10(time, latitude, longitude) ;
u10:scale_factor = 0.000973848967463196 ;
u10:add_offset = -1.10708482487436 ;
u10:_FillValue = -32767s ;
u10:missing_value = -32767s ;
u10:units = "m s**-1" ;
u10:long_name = "10 metre U wind component" ;
}
讨论
era5cli 提供简单易用命令行工具,适合进行批量数据下载。
era5cli 中 monthly
和 hourly
两个子命令共享大部分命令行参数,其直观的命令行接口设计值得气象数据下载类工具软件借鉴。