我有一个大型 netcdf 文件,其中包含仅包含 0.0 或 1.0 的标准浮点字段。我想从命令行将其转换为字节类型以节省一些空间,并且还可以更轻松地在 fortran 中将数组读取为字节类型。
我尝试使用 ncap
ncap -s 'fire=byte(fire)' CAMS_2003-2017_frp_mask2_africa_zip.nc test.nc
但它似乎只是将所有字段归零。我在源文件上使用 zip_6 netcdf4 压缩,我不确定这是否会使问题变得复杂?
更新:我发现 ncap2 可与字节一起使用
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
关于bash - 将 netcdf 文件中的 float 转换为 byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45332613/