ERA5 Land中‘expver’变量的处理方法

发布时间 2023-10-19 17:40:56作者: lawfbcn

近日在搞数据的时候发现ERA5 Land新更新的数据中有一个‘expver’的变量,导致数据并不连续。官方解释如下:

 

ERA5 每小时和每月数据延迟 3 个月提供。这意味着一个月后,另一个月的 ERA5 数据将写入数据集。

ERA5T(近实时)初步数据用于填补ERA5数据结束与当前日期前5天之间的空白。当新的 ERA5 数据可用时,其中最早的月份每月都会被覆盖。

例如,假设我们的当前日期为 2020 年 2 月 15 日:

  • ERA5 数据目前为 1/1/1979 - 30/11/2019(瞬时变量)和 1/1/1979 - 1/12/2019(00-06 UTC,累积变量)
  • ERA5T 数据(延迟 5 天)为 2019 年 1 月 12 日至 2020 年 10 月 2 日(瞬时变量)和 2019 年 1 月 12 日(07-23 UTC,累积变量)- 2020 年 10 月 2 日

对于返回 ERA5 和 ERA5T 混合数据的请求(例如当月 1 日的数据),瞬时变量(例如温度)来自 ERA5T(其“实验版本”为 5),而累积变量(通量、降水)来自具有以下结构的两个数据集:

  • 00-06 UTC 从 ERA5 开始的每月 1 天(expver 1)
  • 07-23 UTC 每月 1 天(以及从现在起最多 5 天的以下日期)来自 ERA5T(expver 5)

当这些数据转换为 netCDF 时,将创建一个称为 expver 的新维度,其中包含 1 和 5此外,使用覆盖整个请求期间的单个时间坐标。

from ERA5 CDS requests which return a mixture of ERA5 and ERA5T data - Copernicus User Support Forum - ECMWF Confluence Wiki

评论区Jian Tang提供了一个解决思路:

import xarray as xr

ERA5 = xr.open_mfdataset('era5.tp.20200801.nc',combine='by_coords')
ERA5_combine =ERA5.sel(expver=1).combine_first(ERA5.sel(expver=5))
ERA5_combine.load()
ERA5_combine.to_netcdf("era5.tp.20200801.copy.nc")

from https://unseen-open.readthedocs.io/_/downloads/en/latest/pdf/

 

需要用到dask包,解决方法:

运行

pip install tornado==4.5.1 distributed==1.21 dask-ml[complete]

from 无法为Dask安装tlz模块Python - 问答 - Python中文网 (cnpython.com)

 

关于使用yaml包时报错 TypeError: load() missing 1 required positional argument: ‘Loader‘:

安装指定版本的yaml包

pip install pyyaml==5.1

from TypeError: load() missing 1 required positional argument: ‘Loader‘?_pan_mlpan的博客-CSDN博客