在 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
我有一个很大的 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