You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解压_DeflateLevel=4的netCDF文件in.nc?nccopy命令无效

解压DeflateLevel=4的netCDF文件失败问题

我有一个名为in.nc的压缩netCDF文件,其_DeflateLevel=4,需要对该文件进行解压。我尝试执行命令nccopy -d 0 in.nc out.nc,但没有产生任何效果。以下是in.nc的详细规格:

time_counter = UNLIMITED ; // 当前为12个
y = 552 ;
x = 552 ;
variables:
    float Q16c(time_counter, y, x) ;
        Q16c:long_name = "深层沉积物颗粒有机物" ;
        Q16c:units = "mg C/m²" ;
        Q16c:online_operation = "平均" ;
        Q16c:interval_operation = "900 秒" ;
        Q16c:interval_write = "1 个月" ;
        Q16c:cell_methods = "时间:平均(间隔:900 秒)" ;
        Q16c:_FillValue = 1.e+20f ;
        Q16c:missing_value = 1.e+20f ;
        Q16c:coordinates = "time_centered nav_lat nav_lon" ;
        Q16c:_Storage = "分块存储" ;
        Q16c:_ChunkSizes = 1, 552, 552 ;
        Q16c:_DeflateLevel = 4 ;
        Q16c:_Endianness = "小端" ;

解决方法

  • 检查nccopy版本:旧版本的nccopy对分块存储的netCDF文件支持不佳,-d 0参数可能无法生效,建议更新netCDF工具集到最新版本后重试。
  • 强制生成无压缩的经典格式:添加-k classic参数,经典netCDF格式不支持压缩,可直接实现解压:
    nccopy -k classic -d 0 in.nc out.nc
    
  • 先移除压缩属性再复制:用ncatted删除变量的_DeflateLevel属性,再执行复制:
    ncatted -a _DeflateLevel,Q16c,d,, in.nc temp.nc
    nccopy temp.nc out.nc
    rm temp.nc
    
  • 验证结果:执行命令后用ncdump -h out.nc查看输出文件的变量属性,确认_DeflateLevel已被移除,即可判断解压成功。

内容的提问来源于stack exchange,提问作者Amr Talaat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:46:18