Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CDO学习1 CDO简介[通俗易懂]

CDO学习1 CDO简介[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-09-16 03:14:27
发布于 2022-09-16 03:14:27
2.2K00
代码可运行
举报
运行总次数:0
代码可运行

参考自如下网站

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个时间步长:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-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
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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个文件之间数值差异的概况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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提供。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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
  • 并行执行

例如,我们可以把

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cdo timavg ifile1 tmp1
$ cdo dayavg ifile2 tmp2
$ cdo sub tmp2 tmp1 ofile
$ rm tmp1 tmp2

替换成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cdo sub -dayavg ifile2 -timavg ifile1 ofile

组合运算符:例子2

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cdo ydrunmin,5 ifile minfile
$ cdo ydrunmax,5 ifile maxfile
$ cdo ydrunpctl,90,5 ifile minfile maxfile ofile

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166771.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CDO:强大的气候数据处理软件
CDO在处理气候及模式数据方面有着非常强大的功能,而且其中包含有一些简单的统计和计算函数,数据选择以及空间差值函数。支持常见的气象数据格式,比如GRIB,NetCDF等。
bugsuse
2020/04/21
3.8K0
CDO条件性选择数据
除了之前提到的选择操作符之外,CDO还提供了一些条件选择操作符。这在针对从多个文件中进行条件选取的时候就显得非常方便了。
bugsuse
2020/04/21
3.6K0
CDO条件性选择数据
CDO转换数据集格式
在进行数据处理和分析的过程中或是基于其他原因,为了方便进一步的处理,有时需要将NetCDF数据格式转换为GRIB数据格式。
bugsuse
2020/04/21
3.6K0
利用python-cdo处理气象数据
如果你不喜欢命令行的操作方式,那么你可以尝试使用python-cdo,利用python脚本语言的优势来处理气象数据。命令行的方式有其优势,比如简单易操作,可扩展性更强等,利用CDO的python接口也有其特有的优势,比如:
bugsuse
2020/04/21
7K1
利用python-cdo处理气象数据
如何利用CDO从数据集中提取数据
之前说了如何利用CDO查看数据集信息 使用CDO查看气象数据信息。这一次说一下利用CDO从数据集中提取数据。这部分是非常使用的,尤其是当涉及到大数据集的时候,其优势就变得非常明显了。
bugsuse
2020/04/21
9.3K0
如何利用CDO从数据集中提取数据
气象数据的常用格式以及处理的工具
  这次我们来简单了解下气象数据常用的格式以及处理的工具,常用的数据格式包括普通的二进制格式、文本数据、NetCDF、HDF4/5以及GRIB1/2数据。我们可以利用编程语言例如python、matlab以及c语言,根据数据的说明文档或者相应的数据api开发文档进行读取,此外我们也可以根据提供的command命令行进行高效提取数据。
MeteoAI
2019/07/24
11.5K0
数据处理 | xarray的NC数据基础计算(1)
首先我们先导入所需的数据,本次使用的是经扩展重构的海表面温度 v5 数据集(Extended Reconstructed Sea Surface Temperature, abbr. ERSST)。这个数据集可追溯到 1854 年的海表面温度,并被广泛使用。
郭好奇同学
2021/04/22
7.5K0
数据处理 | xarray的NC数据基础计算(1)
数据科学 IPython 笔记本 7.15 高性能 Pandas
我们在前面的章节中已经看到,PyData 技术栈的力量,建立在 NumPy 和 Pandas 通过直观语法,将基本操作推送到 C 的能力的基础上:例如 NumPy 中的向量化/广播操作,以及 Pandas 的分组类型操作。虽然这些抽象对于许多常见用例是高效且有效的,但它们通常依赖于临时中间对象的创建,这可能产生计算时间和内存使用的开销。
ApacheCN_飞龙
2022/05/07
7160
GPM逐日降水数据文件合并
GPM(Global Precipitation Measurement)降水数据是由全球降水测量任务提供的高分辨率全球降水数据集。GPM任务由NASA和JAXA(日本宇宙航空研究开发机构)主导,旨在提供全球范围内的降水观测数据,以改进天气预测、气候研究和自然灾害监测。
阿巴阿巴-
2025/02/07
2090
进阶数据库系列(六):PostgreSQL 数据类型与运算符
PostgreSQL 支持多种数据类型,主要有整数类型、浮点数类型、任意精度数值、日期/时间类型、字符串类型、二进制类型、布尔类型和数组类型等。
民工哥
2023/08/22
7.1K0
进阶数据库系列(六):PostgreSQL 数据类型与运算符
MySQL从删库到恢复,还用跑路吗?
误删数据库应该如何恢复操作?怎样才能做好数据库的备份、恢复、容灾、HA?如果你身处数据库行业,最近可能会比较关注这几个问题
搜云库技术团队
2019/10/17
1.4K0
ARM探索之旅03 | 如何使用 ARM FPU 加速浮点计算
笔者接触嵌入式领域软件开发以来,几乎用的都是 ARM Cortex M 内核系列的微控制器。感谢C语言编译器的存在,让我不用接触汇编即可进行开发,但是彷佛也错过了一些风景,没有领域到编译器之美和CPU之美,所以决定周末无聊的休息时间通过寻找资料、动手实验、得出结论的方法来探索 ARM CPU 架构的美妙,以及C语言编译器的奥秘。(因为我个人实在是不赞同学校中微机原理类课程的教学方法)。
Mculover666
2021/07/01
3.7K0
C++教程(凯格尔训练法教程)
七种基本的C++数据类型:bool、char、int、float、double、void、wchar_t 类型修饰符:signed、unsigned、short、long 注:一些基本类型可以使用一个或多个类型修饰符进行修饰,比如:signed short int简写为short、signed long int 简写为long。
全栈程序员站长
2022/08/01
3.1K0
C++教程(凯格尔训练法教程)
【MySQL基础篇重点】八、复合查询
​ 前面我们学习的 mysql 表的查询都是对一张表进行查询,在实际开发中这远远不够,所以我们就需要学习下面的复合查询!
利刃大大
2025/05/21
1540
【MySQL基础篇重点】八、复合查询
HTML5
JS 里拖拽三事件, onmousedown onmousemove onmouseup 是实现交互性效果,根据鼠标的移动位置让标签元素联动
jinghong
2020/05/12
4.5K0
C语言socket实现文件下载[通俗易懂]
是网络编程的作业,我比较菜。。。写到定位输出,做百分比出现了问题,不显示0到100的,直接从0跳到了100。请教了下大佬。改了过来。原来是类型的问题,做出来的运算应该是float,但是我都定义的int,输出也是,大佬指出后,我好尴尬。。。犯了小错误。。。但是在这次过程也学习了一波。要加油了!!!代码写的这么乱!!! 写的是带颜色的版本,,颜色有可能会觉得妖艳,,,好吧。 编译平台是vc++6.0
全栈程序员站长
2022/09/15
1.5K0
C语言socket实现文件下载[通俗易懂]
【Mysql】mysql命令常用语句[通俗易懂]
参考文档 https://www.cnblogs.com/dongling/p/5710643.html
全栈程序员站长
2022/10/04
7800
【Mysql】mysql命令常用语句[通俗易懂]
EFI和EFI Shell命令简介[通俗易懂]
EFI是ExtensibleFirmware Interface的缩写,是介于平台固件和操作系统之间的一层软件接口。EFI是Intel在1998年开始的一个项目演变而来,而在2005年Intel将EFI 1.10开源并交由Unified EFI开源社区去维护和开发,Intel自己的EFI也就不单独做了,都和开源社区共用一个。现在也通常用EFI来代指UEFI,二者不再有意区分。
全栈程序员站长
2022/09/15
5.8K0
类和对象竟是这样的(中集)
可是这个空类真的名副其实的“空虚”吗?当然不是,其实编译器还为这个类安排了6个默认成员函数保镖。
小灵蛇
2024/06/06
970
类和对象竟是这样的(中集)
Matlab中fprintf函数使用[通俗易懂]
formatSpec 输入中的 %4.2f 指定输出中每行的第一个值为浮点数,字段宽度为四位数,包括小数点后的两位数。formatSpec 输入中的 %8.3f 指定输出中每行的第二个值为浮点数,字段宽度为八位数,包括小数点后的三位数。\n 为新起一行的控制字符。
全栈程序员站长
2022/11/02
5.3K0
相关推荐
CDO:强大的气候数据处理软件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验