【问题标题】:How to calculate daily average from ERA5 hourly netCDF data?如何从 ERA5 每小时 netCDF 数据计算每日平均值?
【发布时间】:2021-06-26 19:54:21
【问题描述】:

大家好,

对于重复这个问题,我深表歉意。我已经从哥白尼网络平台下载并合并了 ERA5 每小时露点温度数据 (d2m_wb.nc)。现在,我想根据每小时的 d2m_wb.nc 数据计算每日平均值。时间戳为 00、01、02...23。 ECMWF 为计算每日总降水量提供了一个示例 (https://confluence.ecmwf.int/display/CKB/ERA5%3A+How+to+calculate+daily+total+precipitation)。它说要涵盖 2017 年 1 月 1 日的总降水量,我们需要两天的数据。 (a) 2017 年 1 月 1 日时间 = 01 - 23 将为您提供 2017 年 1 月 1 日 00 - 23 UTC 的总降水数据 (b) 2017 年 1 月 2 日时间 = 00 将为您提供 2017 年 1 月 1 日 23 - 24 UTC 的总降水数据

这意味着我需要移动 -1hour 时间戳以说明步骤 (b)。因此,我使用了气候数据运营商 (CDO)。

cdo daymean -shifttime,-1hour in.nc out.nc

得到以下结果。

cdo sinfo d2m_wb.nc
   File format : NetCDF2
    -1 : Institut Source   T Steptype Levels Num    Points Num Dtype : Parameter ID
     1 : unknown  unknown  v instant       1   1       475   1  F64  : -1
   Grid coordinates :
     1 : lonlat                   : points=475 (19x25)
                              lon : 85.5 to 90 by 0.25 degrees_east
                              lat : 21.5 to 27.5 by 0.25 degrees_north
   Vertical coordinates :
     1 : surface                  : levels=1
   Time coordinate :  25904 steps
     RefTime =  1900-01-01 00:00:00  Units = hours  Calendar = gregorian  Bounds = true
  YYYY-MM-DD hh:mm:ss  YYYY-MM-DD hh:mm:ss  YYYY-MM-DD hh:mm:ss  YYYY-MM-DD hh:mm:ss
  1949-12-31 23:00:00  1950-01-01 11:00:00  1950-01-02 11:00:00  1950-01-03 11:00:00
  1950-01-04 11:00:00  1950-01-05 11:00:00  1950-01-06 11:00:00  1950-01-07 11:00:00
  1950-01-08 11:00:00  1950-01-09 11:00:00  1950-01-10 11:00:00  1950-01-11 11:00:00
  1950-01-12 11:00:00  1950-01-13 11:00:00  1950-01-14 11:00:00  1950-01-15 11:00:00
  1950-01-16 11:00:00  1950-01-17 11:00:00  1950-01-18 11:00:00  1950-01-19 11:00:00
  1950-01-20 11:00:00  1950-01-21 11:00:00  1950-01-22 11:00:00  1950-01-23 11:00:00
  1950-01-24 11:00:00  1950-01-25 11:00:00  1950-01-26 11:00:00  1950-01-27 11:00:00
  1950-01-28 11:00:00  1950-01-29 11:00:00  1950-01-30 11:00:00  1950-01-31 11:00:00
  1950-02-01 11:00:00  1950-02-02 11:00:00  1950-02-03 11:00:00  1950-02-04 11:00:00
  1950-02-05 11:00:00  1950-02-06 11:00:00  1950-02-07 11:00:00  1950-02-08 11:00:00
  1950-02-09 11:00:00  1950-02-10 11:00:00  1950-02-11 11:00:00  1950-02-12 11:00:00
  1950-02-13 11:00:00  1950-02-14 11:00:00  1950-02-15 11:00:00  1950-02-16 11:00:00
  1950-02-17 11:00:00  1950-02-18 11:00:00  1950-02-19 11:00:00  1950-02-20 11:00:00
  1950-02-21 11:00:00  1950-02-22 11:00:00  1950-02-23 11:00:00  1950-02-24 11:00:00
  1950-02-25 11:00:00  1950-02-26 11:00:00  1950-02-27 11:00:00  1950-02-28 11:00:00
   ................................................................................
   ................................................................................
   ................................................................................
   .................
  2020-10-03 11:00:00  2020-10-04 11:00:00  2020-10-05 11:00:00  2020-10-06 11:00:00
  2020-10-07 11:00:00  2020-10-08 11:00:00  2020-10-09 11:00:00  2020-10-10 11:00:00
  2020-10-11 11:00:00  2020-10-12 11:00:00  2020-10-13 11:00:00  2020-10-14 11:00:00
  2020-10-15 11:00:00  2020-10-16 11:00:00  2020-10-17 11:00:00  2020-10-18 11:00:00
  2020-10-19 11:00:00  2020-10-20 11:00:00  2020-10-21 11:00:00  2020-10-22 11:00:00
  2020-10-23 11:00:00  2020-10-24 11:00:00  2020-10-25 11:00:00  2020-10-26 11:00:00
  2020-10-27 11:00:00  2020-10-28 11:00:00  2020-10-29 11:00:00  2020-10-30 11:00:00
  2020-10-31 11:00:00  2020-11-01 11:00:00  2020-11-02 11:00:00  2020-11-03 11:00:00
  2020-11-04 11:00:00  2020-11-05 11:00:00  2020-11-06 11:00:00  2020-11-07 11:00:00
  2020-11-08 11:00:00  2020-11-09 11:00:00  2020-11-10 11:00:00  2020-11-11 11:00:00
  2020-11-12 11:00:00  2020-11-13 11:00:00  2020-11-14 11:00:00  2020-11-15 11:00:00
  2020-11-16 11:00:00  2020-11-17 11:00:00  2020-11-18 11:00:00  2020-11-19 11:00:00
  2020-11-20 11:00:00  2020-11-21 11:00:00  2020-11-22 11:00:00  2020-11-23 11:00:00
  2020-11-24 11:00:00  2020-11-25 11:00:00  2020-11-26 11:00:00  2020-11-27 11:00:00
  2020-11-28 11:00:00  2020-11-29 11:00:00  2020-11-30 11:00:00  2020-12-31 23:00:00
cdo    sinfo: Processed 1 variable over 25904 timesteps [6.03s 37MB

在这种情况下,时间步长显示为 11:00:00(从 1950-01-01 开始)。我想应该是 12:00:00。我在这里做错了什么?任何建议将不胜感激?谢谢。

【问题讨论】:

  • 另请注意,气候数据运算符是标签 cdo-climate,请阅读标签信息 ;-)
  • 很抱歉没有引起足够的重视。感谢您的告知。

标签: python netcdf cdo-climate era5


【解决方案1】:

这个输出看起来是正确的。 CDO 必须决定在平均时使用哪个时间步长。在这种情况下,它采用每天的中点,即 11:00。

您会注意到第一天的时间是 23:00,因为只有一个时间。

但是,尚不清楚您为什么要将时间向后拨一小时。您的代码实际上并没有计算每日平均值。相反,它是一天最后 23 小时和下一天第一小时的平均值。只需将您的 CDO 调用更改为以下内容,一切都会好起来的:

cdo daymean in.nc out.nc

【讨论】:

  • 累积。到 ECMWF (confluence.ecmwf.int/display/CKB/…),要从 ERA5 每小时数据计算每日平均值,我们需要执行两个步骤。例如,要计算 2017 年 1 月 1 日的总降水量,我们需要两天的数据。 (a) 2017 年 1 月 1 日时间 = 01 - 23 将为您提供涵盖 2017 年 1 月 1 日 00-23 UTC 的总降水数据 (b) 2017 年 1 月 2 日时间 = 00 将为您提供涵盖 23-24 UTC 1 日的总降水数据2017 年 1 月。出于这个原因,我向后移动了 1 小时,然后应用了 daymean。
  • 查看每小时时间步长(例如) 1950-01-01 00:00:00 1950-01-01 01:00:00 1950-01-01 02:00:00 1950 -01-01 03:00:00 ................................... ..................................................... ..................................................... ................................... 1950-01-01 20:00:00 1950-01-01 21:00 :00 1950-01-01 22:00:00 1950-01-01 23:00:00 1950-01-02 00:00:00 1950-01-02 01:00:00 1950-01-02 02:00 :00 1950-01-02 03:00:00
  • 我不确定 CDO 是否正确。我认为 ERA5 数据包含 time_bnds 信息,因此您不需要以任何方式改变时间
【解决方案2】:

罗伯特·威尔逊的回答是正确的,我只是想快速澄清一下,这里的混淆是由于两者的区别

  • 瞬时场:如云、水汽、温度、风等,这些场瞬时有效
  • 累积场:如辐射通量、潜热通量和感热通量、降水等,这些都是在一段时间内累积起来的,时间戳放在窗口的末尾。

因此对于即时字段 Robert 是正确的,如果您认为 00Z 是在第二天,那么您不想转移,但您同样可以有效地争辩说午夜应该包含在前一天(因此您需要shift),因为它位于边界上。惯例说你不换班,把 00...23 算作一天...

关于助焊剂,这篇文章也有更多细节:Calculating ERA5 Daily Total Precipitation using CDO

【讨论】:

  • 亲爱的@Adrian 感谢您的澄清。我有四个大气变量,即。露点温度、长波辐射、短波辐射和风速(根据 u10 和 v10 风分量计算)。所有都是按小时计算的,我需要每天转换它们。为此,我应用了您建议的命令。然而,结果对我来说是可疑的。我在 CDO 论坛上问了同样的问题,他们建议向后移动 1 分钟而不是 1 小时,并得到了预期的结果(12:00)。我再次在 python 中使用 xarray 包交叉检查。在计算每天的平均值后,我得到了 00 小时的时间戳。
  • 不同的软件和命令对一个共同的目标产生不同的结果。您能否提出一个合适的解决方案。谢谢。
  • 嗨 Soumik,很乐意提供帮助,但很难回答 cmets 中提出的问题,也没有可重复的示例 - 建议您按照这些思路发布一个新问题
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 2021-05-09
  • 2015-04-14
  • 2018-01-29
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多