【发布时间】:2018-01-02 02:38:54
【问题描述】:
我有一个带有标准浮点字段的大型 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 都因内存分配失败。
【问题讨论】:
-
如果你投射到
int而不是byte,你会得到全零吗? -
有趣的是使用 int 而不是 byte 会导致内存故障。但我发现 byte 与 ncap2 一起工作......不知道为什么行为不同,可能 ncap 也遇到了 byte 的内存问题?
-
ncap2 != ncap。始终使用 ncap2。 ncap 已弃用。无法在 ~1 度全球数据集上重现您使用当前 NCO 提到的内存故障。
-
嗨 Charlie...fire 文件非常非常大 (3GB) 所以整数内存问题是一个硬内存限制我认为...对于较小的文件 NCAP2 总是可以正常工作:-) 我起初尝试 ncap,因为我所在的机器与 ncap2 存在库问题,但现在已排序。再次感谢。
标签: bash netcdf netcdf4 nco cdo-climate