ncks
实现了ncdump
和nccopy
的大部分功能,此外还可以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 # 以固定长度打印字符串多维数组