在 netcdf 文件中将浮点数转换为字节

converting float to byte in netcdf file

我有一个很大的 netcdf 文件,它有一个标准的浮点字段,它只包含 0.0 或 1.0。我想从命令行将其转换为字节类型以节省一些 space 并且还可以更轻松地将数组读取为 fortran 中的字节类型。

我尝试使用 ncap

ncap -s 'fire=byte(fire)' CAMS_2003-2017_frp_mask2_africa_zip.nc test.nc

但它似乎只是将所有字段归零。我在源文件上使用 zip_6 netcdf4 压缩,我不确定这是否会使事情复杂化?

更新:我发现 ncap2 与 byte

一起工作
ncap2 -s 'fire=byte(fire)' CAMS_2003-2017_frp_mask2_africa_zip.nc test.nc

但我不明白为什么两者不同?这可能是内存问题,因为当尝试转换为 "int" 而不是 "byte" 时,ncap 和 ncap2 都因内存分配失败。

我找到了两种方法:

cdo -b I8 copy in.nc out.nc 

ncap2 -s 'fire=byte(fire)' in.nc out.nc