数据值超出使用 cdo daysum 的有效范围
Data values are outside the valid range using cdo daysum
我有一个 ERA5 nc 文件,记录了从 3 月到 10 月的每小时降水量,时间跨度为 30 年。数据是从当地时间午夜到中午(因此在 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 字节)。显然文件大小将因此增加一倍或四倍。
我有一个 ERA5 nc 文件,记录了从 3 月到 10 月的每小时降水量,时间跨度为 30 年。数据是从当地时间午夜到中午(因此在 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 字节)。显然文件大小将因此增加一倍或四倍。