bash - 将 netcdf 文件中的 float 转换为 byte

标签 bash netcdf netcdf4 nco cdo-climate

我有一个大型 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/

相关文章:

bash - 在 emacs 终端中打开 emacs 缓冲区中的文件

netcdf - 使用 nco 连接具有不同变量的 netcdf 文件

python - 如何获取默认填充值?

c++ - 转换从公历开始到现在的天数

linux - Bash/Shell 脚本 - 如何操作文本文件中的值

php - 将 BASH 关联数组传递给 PHP 脚本

在 R 中读取远程文件系统上存储的 netCDF 文件?

r - 将 netcdf 时间变量转换为 R 日期对象

linux - sed:用一个下划线替换一系列点

python - 根据时间从NETCDF(.NC文件)中提取数据