cdo 热浪的平均最长持续时间

问题描述 投票:0回答:1

所以我正在尝试进行热浪分析,感觉自己现在正在原地踏步。我确实有德国地区 15 年来每小时的 t2m 数据 (.nc),分辨率为 0.25°。

我需要做的是分析每个网格区域的最大平均热浪(连续 tmax 30°C+ 天)持续时间。因此,这意味着,2005 年最长的热浪持续时间为 7 天,2006 年特定网格的最长热浪持续时间为 9 天……依此类推,在此示例中,整个时间段的平均最大热浪持续时间将为 8 天。最后应该有一个新的 nc.file,其中包含每个网格的最大平均热浪长度。

我已经做了和准备的事情:首先,使用 daymax 命令生成了一个 daymax nc 文件,该文件显示了当天的最大 t2m 值;因为每天的分辨率足以完成这项任务。使用 gtc 命令,我选择了所有 30°C+ 值,并将所有 30+ 值替换为 1,将所有低于 30 的值替换为 0。现在我有一个 nc 文件,显示我期间内每天的所有网格图,1 表示炎热天气,0 表示炎热天气非炎热天。这就是我被困住的地方。

我只想计算每年最长的“1”系列,并在我的时间段内对其进行平均。

我尝试的所有其他命令(不同的意思,计数命令)都没有成功。有时我会丢失空间参考,并且这些值始终不正确。

你们中有人可能有一些合适的命令或者可能有不同的方法来解决这个问题吗?

weather cdo-climate
1个回答
0
投票

这里的关键函数是

consects
,它计算条件为真的长度。您实际上可以将其应用到原始温度文件(单位 oC),如下所示:

cdo consects -gtc,30.0 temperature.nc lens.nc

镜头将具有每个“热浪”时期的长度,因此现在您可以应用yearmax来获得每年最长的时间。

cdo yearmax -consects -gtc,30.0 temperature.nc longest.nc

如果您想将其应用到您的“二进制”文件,那么条件当然会改变:

cdo yearmax -consects -eqc,1 binary.nc longest.nc

顺便说一句,我最近的一个 youtube 视频 与这个主题密切相关,请观看它以了解更多详细信息,但我没有包含此技巧,因此我必须将其添加到视频描述中。很好的用例!

年份界限注释 我还没有检查过这一点,但我假设输出的标记放置在每个系列的最后一个时间步,因此如果条件在 12 月的最后 15 天为真,然后在下一年的 3 天为真,这仍然会在这种情况下,算作后一年的事件。我只是想强调这一点。也可以将命令参数

--timestat_date middle
consects
一起使用,如果是这样,这会将事件分配给大多数步骤所在的年份。不过我还没有尝试过。

© www.soinside.com 2019 - 2024. All rights reserved.