CDO学习3 CDO 用户指南User Guide


注:部分参考,全文请见https://code.mpimet.mpg.de/projects/cdo/embedded/cdo.pdf

1.2 用法

cdo [ Options ] Operator1 [ -Operator2 [ -OperatorN ] ]

1.2.1 选项

所有选项都需要放在第一个操作符之前。对于所有操作符,以下选项是可行的:

-a
      生成一个绝对时间轴Generate an absolute time axis.

 

-b <nbits>
      设置输出经度的位数。合理的精度取决于文件格式:

格式 位数

grb1, grb2

nc1, nc2, nc4, nc4c

grb2, src, ext, ieg

P1 - P24

I8/I16/I32/F32/F64

F32/F64

      对于srv, ext 和 ieg 格式,可以用字母L或B将位序分别设置为小端或大端。

 

- -cmor
      CMOR符合NetCDF输出

 

-C, - -color
      彩色输出消息

 

- -eccodes
      使用ecCodes来解码/编码GRIB1 messages

 

-f <format>
      设置输出文件格式。合理的文件格式有:

文件格式 格式
GRIB version 1
GRIB version 2
NetCDF
NetCDF version 2 (64-bit offset)
NetCDF-4 (HDF5)
NetCDF-4 classic
NetCDF version 5 (64-bit data)
SERVICE
EXTRA
IEG

grb1/grb
grb2
nc1
nc2/nc
nc4
nc4c
nc5
srv
ext
ieg

GRIB2仅适用于,如果cdo编译时启用了ecCodes支持,并且所有的NetCDF文件支持需要在编译时开启NetCDF支持才可用!

 

-g <grid>
      定义默认格点描述以名称或者从文件中(参见11页1.3章)。可用的格点名称有: r<NX>x<NY>, lon=<LON>/lat=<LAT>, n<N>, gme<NI>

 

-h, - -help
      关于操作符的帮助信息

 

- -no_history
      不要附加到NetCDF历史全局属性

 

- -netcdf_hdr_pad, - -hdr_pad, - -header_pad <nbr>
      使用nbr字节填充NetCDF输出头

 

-k <chunktype>
      NetCDF4块类型:auto,grid或lines

 

-L
      I/O 锁(顺序访问)

 

-M
      切换以指示I / O流具有缺测值。-m <missval>  设置非NetCDF文件的缺测值(默认值:-9e + 33)

 

-O
      如果选中,则覆盖现有输出文件。 仅检查现有输出文件:ens <STAT>,merge,mergetime

 

- -operators
      所有操作符的列表

 

-P <nthreads>
      设置OpenMP线程数(仅在编译OpenMP支持时可用)

 

- -percentile <method>
      Percentile方法:nrank nist numpy numpy_lower numpy_higher numpy_nearest

 

- -reduce_dim
      减少NetCDF维度

 

-R, - -regular
      将GRIB1数据从global缩减转换为常规高斯网格(仅限cgribex lib)

 

-r
      生成相对时间轴

-S
      为模块TIMSTAT创建额外的输出流。此流包含每个输出时段的非缺失值的数量

-s, -silent
      无声模式

- -sortname
      NetCDF参数名称的字母数字排序

-t <partab>
      设置GRIB1(cgribex)默认参数表名称或文件(请参阅第16页的第1.6章)。预定义的表格是:echam4 echam5 echam6 mpiom1 ecmwf remo

 

 

- -timestat_date <srcdate>
      目标时间戳(时间统计):源数据时间步中的first, middle, midhigh 或者 last

 

-V, - -version
      打印版本号

 

-v, - -verbose
      为某些操作符打印额外的详细信息

 

-W
      打印额外的警告信息

 

-z szip     SZIP压缩GRIB1记录
    jpeg    JPEG压缩GRIB2记录
    zip [_1-9]      缩小NetCDF4变量的压缩率

1.2.3 操作符

有超过700个操作符。对于所有的操作符的一个详细的描述可以在参考手册一节找到。

1.2.4 操作符链

所有操作符有一个固定的输入流和一个输出流可以将结果直接管道到一个其它的操作符。操作符必须用“-”开头,用以和其它操作符组合。这个可以通过以下操作提升性能:

  • 减少不必要的磁盘I/O
  • 并行处理

使用

cdo sub -dayavg infile2 -timavg infile1 outfile

而不是

cdo timavg infile1 tmp1
cdo dayavg infile2 tmp2
cdo sub tmp2 tmp1 outfile
rm tmp1 tmp2

所有的 单输入流的操作符 将只会在输入流中处理一次!将这些运算符 与一个 具有任意数量输入流的运算符混合时,需要注意。 以下示例说明了此问题。

1. cdo info -timavg infile?
2. cdo info -timavg infile1 infile2
3. cdo timavg infile1 tmpfile
cdo info tmpfile infile2

这三个例子都产生相同的结果。 仅在第一个输入文件上计算时间平均值。
如果这些运算符与多个输入流一起使用,则具有任意数量的输入流(infiles)的所有运算符都不能与其他运算符组合。 以下是这些运算符的不完整列表:
copy,cat,merge,mergetime,select,ens <STAT>
如果输入流名称与单个通配符表达式匹配,请使用单引号。 在这种情况下,CDO将进行模式匹配,输出可以与其他运算符组合。 以下是此功能的示例:
cdo timavg -select,name=temperature ’infile?’ outfile

CDO内部通配符扩展使用glob()函数。 因此,没有glob()函数的操作系统上不能使用内部通配符扩展! 支持以下通配符:
*,?,[]
注意:运算符链接是通过POSIX线程(pthreads)实现的。 因此,如果没有POSIX Threads支持,此CDO功能在操作系统上不可用!

1.2.5 并行化操作符

一些CDO操作符可以用OpenMP共享内存并行化。要使用此功能,需要支持OpenMP的C编译器。 用户可以使用'-P'开关请求特定数量的OpenMP线程nthreads。

以下是在8个OpenMP线程上分布双线性插值的示例:

cdo -P 8 remapbil,targetgrid infile outfile

许多CDO操作符受I/O约束。 这意味着大部分时间都花在阅读和写入数据上。 仅计算密集型CDO操作符是并行化的。 OpenMP并行化运算符的不完整列表可以在附录B中找到。

附:B. Parallelized operators

The following CDO operators are parallelized with OpenMP:

Module Operator Description

Detrend

 detrend Detrend
Ensstat  ensmin Ensemble minimum
Ensstat  ensmax Ensemble maximum
Ensstat  enssum Ensemble sum
Ensstat  ensmean Ensemble mean
Ensstat  ensavg Ensemble average
Ensstat  ensvar Ensemble variance
Ensstat  ensstd Ensemble standard deviation
Ensstat  enspctl Ensemble percentiles
Filter  bandpass Bandpass filtering
Filter  lowpass Lowpass filtering
Filter  highpass Highpass filtering
Fourier  fourier Fourier transformation
Genweights  genbil Generate bilinear interpolation weights
Genweights  genbic Generate bicubic interpolation weights
Genweights  gendis Generate distance-weighted average remap weights
Genweights  gennn Generate nearest neighbor remap weights
Genweights  gencon Generate 1st order conservative remap weights
Genweights  gencon2 Generate 2nd order conservative remap weights
Genweights  genlaf Generate largest area fraction remap weights
Gridboxstat  gridboxmin Gridbox minimum
Gridboxstat  gridboxmax Gridbox maximum
Gridboxstat  gridboxsum Gridbox sum
Gridboxstat  gridboxmean Gridbox mean
Gridboxstat  gridboxavg Gridbox average
Gridboxstat  gridboxvar Gridbox variance
Gridboxstat  gridboxstd Gridbox standard deviation
Remapeta  remapeta Remap vertical hybrid level
Remap  remapbil Bilinear interpolation
Remap  remapbic Bicubic interpolation
Remap  remapdis Distance-weighted average remapping
Remap  remapnn Nearest neighbor remapping
Remap  remapcon First order conservative remapping
Remap  remapcon2 Second order conservative remapping
Remap  remaplaf Largest area fraction remapping

 1.2.6 操作符参数

一些操作符需要一个或多个参数。参数列表用分隔符','表示

  • 字符串
    不带引号的字符不能包含有空格和tab。下面的命令利用变量名pressure和tsurf选择了变量:
        cdo selvar,pressure,tsurf infile outfile
  • 浮点数
    浮点数可以用任何形式表示。下列的命令将0到273.15之间范围的所有长设置成缺失值:
        cdo setrtomiss,0,273.15 infile outfile
  • 布尔类型
    布尔参数,需要如下所示:TRUE / FALSE,T / F 或 0/1。 在计算一个场的平均值时,要禁用网格单元格区域的权重,请使用:
        cdo fldmean,weights = FALSE infile outfile
  • 整数
    可以通过first / last [/ inc]指定一系列整数参数。 选择第5天,第6天,第7天,第8天和第9天,可以使用:
        cdo selday,5/9 infile outfile
    使用以下命令结果相同:
        cdo selday,5,6,7,8,9 infile outfile

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM