前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
3.ElasticSearch分布式数据分析引擎基础概念与使用
描述: ES是支持以及HTTP协议进行REST风格接口访问,一般得我们需要有个工具帮我们发送http请求,该工具常见的是curl英 [kɜːl]、Head插件、Kibana DeveloperTool软件等。
全栈工程师修炼指南
2022/09/29
2K0
3.ElasticSearch分布式数据分析引擎基础概念与使用
ES常用知识点整理第一部分
第三列倒排索引包含的信息为(文档ID,单词频次,<单词位置>),比如单词“乔布斯”对应的倒排索引里的第一项(1;1;<1>)意思是,文档1包含了“乔布斯”,并且在这个文档中只出现了1次,位置在第一个。
大忽悠爱学习
2023/02/13
5330
ES常用知识点整理第一部分
python 操作es
Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可能是目前存在的,不论开源还是私有的,拥有最先进,高性能和全功能搜索引擎功能的库。但是 Lucene 仅仅只是一个库。为了利用它,你需要编写 Java 程序,并在你的 java 程序里面直接集成 Lucene 包。 更坏的情况是,你需要对信息检索有一定程度的理解才能明白 Lucene 是怎么工作的。Lucene 是 很 复杂的。 在上一篇博客中介绍了ElasticSearch的简单使用,接下来记录一下ElasticSearch的查询: #创建index索引 #创建索引,索引的名字是my-index,如果已经存在了,就返回个400, #这个索引可以现在创建,也可以在后面插入数据的时候再临时创建
用户1217611
2019/05/25
3.1K0
Elasticsearch初检索及高级
PUT customer/external/1 :在 customer 索引下的 external 类型下保存 1号数据
乐心湖
2021/01/18
1.1K0
Elasticsearch初检索及高级
ELK专栏之ES索引-04
● 在生产上,我们需要自己手动建立索引和映射,是为了更好的管理索引,就像数据库的建表数据一样。
大忽悠爱学习
2022/09/29
6860
ELK专栏之ES索引-04
【Elasticsearch】Rest风格API
Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。
陶然同学
2023/02/24
1.2K0
【Elasticsearch】Rest风格API
什么是es?
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/286
joshua317
2022/12/09
9820
ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解
墨墨导读:之前我们分享了ElasticSearch最全详细使用教程:入门、索引管理、映射详解,本文详细介绍ElasticSearch的索引别名、分词器、文档管理、路由、搜索详解。
数据和云
2019/08/16
4.2K0
ElasticSearch系列03:ES的数据类型
从上图可以看到ES的数据类型和mysql或MongoDB的是很相似的,所以对于有数据结构基础的伙伴,这个知识点是非常轻松的。
方才编程_公众号同名
2020/11/12
1.6K0
ElasticSearch系列03:ES的数据类型
Elasticsearch 学习笔记
es提供了一个测试分词的 api 接口,方便验证分词效果,endpoint 是 _analyze
学徒漠筱歌
2022/07/17
6390
最强 Elastic Stack 保姆级教程(一)
首先我们谈几个公司,如雷贯耳的:百度、谷歌、维基百科;这些公司都有一个相似性就是门户网站,可以提供我们通过关键字搜索,然后快速的检索出我们想要的信息。
五分钟学大数据
2022/05/22
5.4K0
最强 Elastic Stack 保姆级教程(一)
ElasticSearch7.8.0Docker安装及入门最基本操作
term 查询, 可以用它处理数字(numbers)、布尔值(Booleans)、日期(dates)以及文本(text,不推荐)。
vivi
2020/07/14
2.2K0
ES的分词器
ES的默认分词设置是standard,这个在中文分词时就比较尴尬了,会单字拆分,比如我搜索关键词“清华大学”,这时候会按“清”,“华”,“大”,“学”去分词,然后搜出来的都是些“清清的河水”,“中华儿女”,“地大物博”,“学而不思则罔”之类的莫名其妙的结果,这里我们就想把这个分词方式修改一下,于是呢,就想到了ik分词器,有两种ik_smart和ik_max_word。ik_smart会将“清华大学”整个分为一个词,而ik_max_word会将“清华大学”分为“清华大学”,“清华”和“大学”,按需选其中之一就可以了。修改默认分词方法(这里修改school_index索引的默认分词为:ik_max_word):
Java廖志伟
2022/03/07
6330
ES系列之嵌套文档和父子文档
很多时候mysql的表之间是一对多的关系,比如订单表和商品表。一笔订单可以包含多个商品。他们的关系如下图所示。
用户7634691
2020/08/10
4.3K0
ES 查询
注:这里相当于select * from 表名 where 1=1,match_all相当于匹配所有.
郑小超.
2022/09/19
7900
【ES三周年】02-索引操作
在Postman中发PUT请求:http://127.0.0.1:9200/index_name
传说之下的花儿
2023/04/11
6320
【ES三周年】02-索引操作
012.Elasticsearch基础API入门以及term与match综合测试
当向一个不存在的index中添加document时,可以自动创建索引,也可以根据传入的数据自动创建mapping,ES也会自动对这些文档进行倒排索引
CoderJed
2020/06/19
8000
Elasticsearch 6.x Mapping设置
需要注意的是,在索引中定义太多字段可能会导致索引膨胀,出现内存不足和难以恢复的情况,下面有几个设置:
小旋锋
2019/01/21
3.2K0
ElasticSearch最全详细使用教程:入门、索引管理、映射详解
墨墨导读:本文介绍了ElasticSearch的必备知识:从入门、索引管理到映射详解。
数据和云
2019/08/12
3.2K0
ElasticSearch最全详细使用教程:入门、索引管理、映射详解
05-Elasticsearch-DSL高级检索[分页, 分词, 权重, 多条件, 过滤, 排序, 关键词高亮, 深度分页, 滚动搜索, 批量Mget]
DSL搜索 词库准备 骚年 帅气 新闻网 新闻 闻网 新 闻 网 索引准备 PUT /shop { "settings": { "number_of_shards": 5, "number_of_replicas": 0 } } POST /shop/_mapping { "properties": { "id": { "type": "long" }, "age": { "typ
彼岸舞
2022/10/04
3870
05-Elasticsearch-DSL高级检索[分页, 分词, 权重, 多条件, 过滤, 排序, 关键词高亮, 深度分页, 滚动搜索, 批量Mget]
相关推荐
3.ElasticSearch分布式数据分析引擎基础概念与使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验