参考自如下网站

http://www.ceda.ac.uk/static/media/uploads/ncas-reading-2015/cdo.pdf

介绍

  • 一个有几百种操作符的单独命令
  • CDO受NCO启发,通过命令行,提供了一系列的气候数据相关的操作
  • 主要是被设计用在操作netCDF3/4,GRIB1/2
  • 众多的函数可以被用在任何NetCDF/格点化数据
  • 非常适合与特定任务
  • 有效的调动内存

CDO:一个命令行工具

$ cdo <operator> [options] <files>

CDO操作的类别

  1. 文件信息和文件操作符
  2. 选择和比较
  3. 元数据的修改
  4. 算术操作符
  5. 统计分析
  6. 回归和内插
  7. 矢量和谱转换
  8. 格式化I/O
  9. 气候指数

众多操作符

CDO将其的功能分解成单独的操作符

当前(2015年)有超过650个操作符。如

showstdname Show standard names

sellonlatbox Select a longitude/latitude box

setmissval Set a new missing value

monadd Add monthly time series

zonstd Zonal standard deviation

eca_hd Heating degree days per time period

得到操作符的参考

如需参考,只需输入:cdo -h <operator>

操作符:1.文件信息

$ cdo infov ifile

这是一个带有一个2D变量的数据集的示例结果,包括3个时间步长:

-1 : Date Time Varname Level Size Miss : Minimum Mean Maximum
1 : 1987?01?31 12:00:00 SST 0 2048 1361 : 232.77 266.65 305.31
2 : 1987?02?28 12:00:00 SST 0 2048 1361 : 233.64 267.11 307.15
3 : 1987?03?31 12:00:00 SST 0 2048 1361 : 225.31 267.52 307.67
$ cdo showtimestamp ggas2014121200_00-18.nc
2014-12-12T00:00:00 2014-12-12T06:00:00 2014-12-12T12:00:00 2014-12-12T18:00:00
$ cdo pardes ggas2014121200_00-18.nc
-1 CI Sea-ice cover [(0 - 1)]
-2 SSTK Sea surface temperature [K]
-3 MSL Mean sea-level pressure [Pa]
-4 TCC Total cloud cover [(0 - 1)]
-5 U10 10 metre U wind component [m s**-1]
-6 V10 10 metre V wind component [m s**-1]
-7 SKT Skin temperature [K]

很容易看到2个文件之间数值差异的概况:

$ cdo diff tas_rcp45_2055_ann_95p_change.nc tas_rcp45_2055_ann_05p_change.nc
Date Time Param Level Size Miss : S Z Max_Absdiff Max_Reldiff
1 : 2065-12-30 12:00:00 -1 0 64800 0 : T F 16.693 0.99997
1 of 1 records differ

操作符的所有文件列表包括

  • 赋值和连接
  • 合并场和时间
  • 按变量/层次/格点/时间分割场

一些例子

To copy a file and convert the output to NetCDF:

$ cdo −f nc copy ifile ofile.nc

To merge all files along the time axis:
 $ cdo mergetime ifile1 ifile2 ifile3 ofile

可以用一些不同的方法选择数据包括:

  • 变量码,名称或者属性
  • 层次
  • 时间
  • 空间区域(纬度/经度)

操作符:2.选择

用id选择变量:“SSTK”和"CI":

$ cdo selname,SSTK,CI infile.nc outfile.nc

To select a lat/lon bounding box:
 $ cdo sellonlatbox,120,-90,20,-20 infile.nc outfile.nc

To select a date/time range:
 $ cdo seldate,2014-12-12T12:00:00, 2015-01-31T18:00:00 infile.nc outfile.nc

操作符:3.修改

设置时间轴到198701-16 12:00, 时间增量一个月增量 使用

$ cdo settaxis,1987-01-16,12:00,1mon ifile ofile

将一个2维场纬度从N到S反转成S到N

$ cdo invertlat ifile ofile

操作符:4.算术

计算所有场元素的平方根:

$ cdo sqrt ifile ofile

将所有输入场加入一个常数-273.15:

$ cdo -addc,-273.15 ifile ofile

操作符:5.统计

计算所有输入场的纬向平均:

$ cdo zonmean ifile ofile

假设输入数据集具有数年的月度平均值。 为了从月度计算季节性均值,必须跳过前两个月:Assume an input dataset has monthly means over several years. In order to compute seasonal means from monthly means the first two months must be skipped:

$ cdo timselmean,3,2 ifile ofile

多年逐日滑动百分值:

  • 为了计算一个百分值,必须知道最小和最大边界。

$ cdo ydrunpctdl,p,nts infile minfile maxfile outfile

该运算符写滑动的百分值对于一年中的每一天,从infile写到outfile。最小和最大边界用minfile和maxfile提供。

计算一个对年逐日的滑动百分率值,需要执行多步。

$ cdo ydrunmin,5 ifile minfile
$ cdo ydrunmax,5 ifile maxfile
$ cdo ydrunpctl,90,5 ifile minfile maxfile ofile

操作符:6 内插

为了将所有场线性插值到一个T42高斯格点。

$ cdo remapbil,t42grid ifile ofile

为了将混合模式层数据插值到气压层925,850,500和200 hPa

$ cdo ml2pl,92500,85000,50000,20000 ifile ofile

操作符:9 气候指数

得到一个逐日降水总量时间序列找那个连续干日的最大数目。

$ cdo eca_cdd rrfile ofile

其中rrfile是逐日降水总量RR的时间序列,然后统计了连续天数的最大值,当RR小于1 mm时。

为了得到热带夜晚一个时间序列逐日最小温度

$ cdo eca_tr tnfile ofile

其中tnfile是逐日最低温度TN的时间序列,随后统计的是当TN>T时候的天数。T是一个可选的参数,其缺省值T=20℃。

除此之外CDO还能做什么? CDO有许多通用的命令行开关,可以与(大多数)运算符一起使用。 这是一个选择:

-a 生成绝对时间轴Generate an absolute time axis
-f <format> 指定格式Specify format ("grb", "nc", "nc4" etc)
-m <val> 设置默认缺测值Set the default missing value
-Q 对netCDF变量名排序Sort netCDF variable names
-r 生成相对时间轴Generate a relative time axis
-s 静默模式Silent mode
-V Version of CDO
-v Verbose - print extra details.
-z zip Deflate compression of netCDF4 vars.

组合运算符

所有的运算符都有一个固定的输入流和一个输出流,可以直接将结果管道给其它的操作符。这个操作符必须以“-”开始,为了和其它相结合。可以通过一下,来促进性能:

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

例如,我们可以把

$ cdo timavg ifile1 tmp1
$ cdo dayavg ifile2 tmp2
$ cdo sub tmp2 tmp1 ofile
$ rm tmp1 tmp2

替换成

$ cdo sub -dayavg ifile2 -timavg ifile1 ofile

组合运算符:例子2

以下三个命令是计算一个多年逐日滑动百分率,需要多步:

$ cdo ydrunmin,5 ifile minfile
$ cdo ydrunmax,5 ifile maxfile
$ cdo ydrunpctl,90,5 ifile minfile maxfile ofile

可以通过一个简单的命令替换

$ cdo ydrunpctl,90,5 ifile -ydrunmin ifile -ydrunmax ifile ofile

更多信息

CDO User Guide: https://code.mpimet.mpg.de/projects/cdo/embedded/cdo.pdf

CDO Home page:  https://code.zmaw.de/projects/cdo

CDO Tutorial:  https://code.zmaw.de/projects/cdo/wiki/Tutorial

CDO Documentation:  https://code.zmaw.de/projects/cdo/wiki#Documentation

CDO学习1 CDO简介的更多相关文章

  1. Linux内核学习笔记-1.简介和入门

    原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...

  2. .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)

    原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图: 以上可以看出项目结构可以划分为4大块,1是surging的核心底层,2,3,4都可以 ...

  3. Netty学习——Apache Thrift 简介和下载安装

    Netty学习——Apache Thrift 简介和下载安装 Apache Thrift 简介 本来由Facebook开发,捐献给了Apache,成了Apache的一个重要项目 可伸缩的,跨语言的服务 ...

  4. [转帖]Hyperledger Fabric 学习一:简介

    Hyperledger Fabric 学习一:简介 https://www.jianshu.com/p/f971858b70f3?utm_campaign=maleskine&utm_cont ...

  5. Uml学习-类图简介

    类图(Class Diagram)简介  类图是面向对象分析(OOA,Object-Oriented Analysis)和面向对象设计(OOP,Object-Oriented Deisgn)思想的重要 ...

  6. ElasticSearch学习笔记-01 简介、安装、配置与核心概念

    一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...

  7. C/C++学习----C语言简介

    [开发环境] 物理机版本:Win 7 旗舰版(64位) IDE版本:Visual Studio 2013简体中文旗舰版(cn_visual_studio_ultimate_2013_with_upda ...

  8. Mahout学习之Mahout简介、安装、配置、入门程序测试

    一.Mahout简介 查了Mahout的中文意思——驭象的人,再看看Mahout的logo,好吧,想和小黄象happy地玩耍,得顺便陪陪这位驭象人耍耍了... 附logo: (就是他,骑在象头上的那个 ...

  9. Tomcat学习—Tomcat的简介和目录以及配置文件介绍(Windows环境)

    tomcat学习(8) 版权声明:本文为博主原创文章,未经博主允许不得转载. 今天学习TOMCAT,主要学习的是Tomcat的目录结构,配置文件! 1:Tomcat简介 Tomcat 服务器是一个免费 ...

  10. 《JS权威指南学习总结--开始简介》

    本书共分成了四大部分: 1.JS语言核心 2.客户端JS 3.JS核心参考 4.客户端JS核心参考 其中 <JS权威指南学习总结--1.1语法核心> 是:第一部分JS语言核心 各章节重点 ...

随机推荐

  1. 理论+实战,详解Sharding Sphere-jdbc

    摘要:Apache ShardingSphere 是一款分布式的数据库生态系统,它包含两大产品:ShardingSphere-Proxy和ShardingSphere-JDBC. 本文分享自华为云社区 ...

  2. js手动触发页面元素点击事件,自定义点击事件模拟点击

    // initEvent事件已经弃用1. 创建MouseEvents事件const clickEvent = document.createEvent('MouseEvents')2. 初始化点击事件 ...

  3. Cocos Creator微信登录接入(完全小白教程)(安卓篇)

    1:创建 Creator项目,如下

  4. golang 中使用mysql报错:“ scannable dest type slice with >1 columns (4) in result”

    query := fmt.Sprintf("SELECT .... infos = make([]*struct, 0, 10) err = s.db.GetContext(ctx, &am ...

  5. docker配置文件模板

    { "registry-mirrors": [ "https://bxsfpjcb.mirror.aliyuncs.com" ], "max-conc ...

  6. python之利用logging模块封装python日志类

    利用python自带的logging模块封装一个日志类,便于单元测试时调用该模块打印日志 说明: 日志,即记录程序在运行过程中的操作记录和出现的问题 日志调试信息分类等级,由低到高分别为:DEBUG ...

  7. Windows11使用WSL Ubuntu搭建paddle的GPU环境

    Windows11使用WSL Ubuntu搭建paddle的GPU环境 最近升级到了Windows11,突然有个大胆的想法:在Windows11上安装WSL,将所有开发环境安装到WSL中.这样就能在w ...

  8. Lua文件夹及文件操作

    转载于:CSDN-刘长栋 -[[ @引用:require("FileLib") @调用:fileLib.createFolder(path) @功能: 1.创建文件夹 2.连续创建 ...

  9. Visual Studio Code 如何设置成中文语言

    Visual Studio Code 是一款微软的代码编辑器,这款软件是比较不错的,用起来也比较方便,但是好多人在第一次安装的时候展现的是英文的,这对于一些小伙伴是比较头疼的问题,那如何调整为中文的呢 ...

  10. 微服务笔记之Eureka03(服务注册分析)

    服务注册接口源码分析: com.netflix.eureka.resources.ApplicationResource#addInstance public Response addInstance ...