2

我有一个带有标准浮点字段的大型 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 都因内存分配失败。

4

1 回答 1

3

我发现了两种方法:

cdo -b I8 copy in.nc out.nc 

或者

ncap2 -s 'fire=byte(fire)' in.nc out.nc 
于 2017-09-13T16:10:37.143 回答