使用cdo-daysum时,数据值超出了有效范围



我有一个ERA5 nc文件,记录了30年内3月至10月的每小时降水量。数据为当地时间午夜至中午(UTC时区为凌晨4点至下午4点(。我需要找到每个像素截至中午的每日降水量总和。我以前使用过python

daily_precipitation = ERA5.tp.resample(time='24H').sum('time')*1000

但10月到3月之间的日子也是总结出来的,我不需要这些。

当我使用cdo daysum 时

cdo daysum precip_hourly.nc precip_sum.nc

我得到一个错误:

Warning: Some data values (min=-32766 max=52989) are outside the valid range (-32768 - 32767) of the used output precision!
Use the CDO option -b F32 or -b F64 to increase the output precision.
cdf_put_vara_double: name=tp  type=NC_SHORT  minval=-32766.000000  maxval=52989.000000

我该如何克服这个错误,到底出了什么问题?

答案在错误消息中(CDO试图提供帮助(,您需要将文件从2字节压缩整数转换为浮动

cdo -b f32 daysum in.nc out.nc

许多像ecmwf这样的中心都会打包数据。这意味着字段被存储为整数(2字节(,然后对其进行缩放,并添加偏移量以获得原始字段。如果您尝试使用查看元数据

ncdump -h file.nc 

您将在元数据中看到这些偏移和比例因子。问题是,当你将具有不同封装因子的文件组合在一起时,cdo不知道该怎么办。它不是自动开箱,而是强制你手动指定,因为你必须选择是单精度还是双精度(4或8字节(。显然,文件大小将因此而增加一倍或四倍。

最新更新