使用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

其中 UIDKEY 是上一步在个人资料界面中找到的值。

查看信息

下载数据前,我们需要知道数据集的基本信息,以便确定筛选条件。 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:格式,netcdfgrib,默认为 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 中 monthlyhourly 两个子命令共享大部分命令行参数,其直观的命令行接口设计值得气象数据下载类工具软件借鉴。

参考

era5cli 项目

era5cli 官方文档