ncks实现了ncdumpnccopy的大部分功能,此外还可以extract, hyperslab, multi-slab, sub-set, and translate

ncks可以从输入文件中提取数据,如果指定了地理信息文件(map-file),还可以执行插值操作(regrid),然后将结果输出到netCDF文件,二进制文件,或者屏幕。

ncks可以将netCDF数据以ASCII,CDL,JSON或NcML/XML的形式输出到标准输出,这一点类似ncdump。选项-s(长选项--sng_fmt/--string)允许用户使用C语言字符串的形式格式化输出。

  • --cdl:格式化为CDL格式
  • --jsn:格式化为JSON格式
  • --trd:格式化为传统格式
  • --xml:格式化为NcML

传统的输出格式更便于寻找想要的结果。

ncks-a, —cdl, -F, —fmt_val, -H, —hdn, —jsn, -M, -m, -P, —prn_fl, -Q, -q, -s, —trd, -u, -V, —xml 选项可以控制输出格式。

ncks可以从输入文件中提取所选择的变量,并存储到新的文件中。只有变量和坐标可以通过参数指定,全局属性和与变量相关的属性都直接复制到新的文件或输出到屏幕。-c-C-v-x控 制的是要提取的变量。

如果输出文件已经存在,且其维度大小与输入文件一致,ncks将会添加输入文件的变量和属性到输出文件。

ncks的添加功能通常是将输入文件中的原始数据添加到输出文件,如果两个文件的变量名冲突,那么输出文件中的值将被输入文件中的值覆盖。因此,在执行添加操作时,应该备份输出文件。

如果输出文件已经存在,执行ncks命令时会询问用户执行重写/添加/退出操作。

  • 重写操作将创建一个新的文件,原来的文件将被覆盖

  • 添加操作依赖于ncks数据的变量和属性与已有文件的差别

    如果属性不冲突,将直接添加到输出文件;如果属性冲突,将使用输入文件的属性重写已有输出文件的属性;如果两个文件的维度不一致,输出文件中可能会创建新的维度。

注意:

ncks的交互式操作在批处理时可能会造成意外,因此可以使用-O-A选项强制重写/添加。

示例

  • 列出文件变量

    这是一个比较复杂的示例,--trd使用传统格式打印

    1
    
    ncks --trd -m in.nc | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort
    
  • 提取变量

    1
    2
    
    ncks -v U,V,W wrfout.nc uvw.nc  # 可能还会包含一些相关的坐标变量
    ncks -C -v U,V,W wrfout.nc uvw.nc # 使用 -C 强制去除坐标变量
    
  • 提取指定时空范围数据

    1
    
    ncks -d Time,3,10 -d south_north,10,50 -d west_east,50,100 wrfout.nc wrfsub.nc
    
  • 拷贝全局属性

    1
    
    ncks -A -x in.nc out.nc
    
  • 打印字符串多维数组

    1
    
    ncks -s '%c' -v fl_nm_arr in.nc  # 以固定长度打印字符串多维数组