CDO学习2 CDO 入门教程Tutorial
#20210117#注:如果需要用cdo对数据进行截取,可参考buguse的几篇博文:
-------------------------------------------------------------------------------------------------------------
用户手册,参考https://code.mpimet.mpg.de/projects/cdo/embedded/cdo.pdf
本文翻译搬运自https://code.mpimet.mpg.de/projects/cdo/wiki/Tutorial
教程
CDO软件是一个包含大量标准处理气候和预报模式数据的算子的集合。该算子包括简单的统计和算术方程,资料选取和二次抽样,和空间插值。
开发CDO是为了为GRIB [GRIB]和NetCDF [NetCDF]数据集提供相同的处理功能集整合在一个包中。
CDI(气候数据接口)用于快速和文件格式独立访问GRIB和NetCDF数据集。还支持本地MPI-MET数据格式SERVICE,EXTRA和IEG。
GRIB和NetCDF数据集存在一些限制。 GRIB数据集必须一致,类似于NetCDF。 这意味着所有时间步都需要具有相同的变量,并且在一个时间步长内,每个变量只能出现一次。 NetCDF数据集仅支持经典数据模型和最多4维的阵列。 这些尺寸应仅用于水平和垂直网格以及时间。 NetCDF属性应遵循GDT,COARDS或CF约定。
引言
显示所有cdo选项
cdo -h
获得所有操作符有一个简短的声明
cdo -h
得到更多一个运算符的信息
cdo -h <operator>
得到完整信息的最好方法是阅读文档[[https://code.mpimet.mpg.de/projects/cdo/embedded/index.html]]
在开始工作前需要知道数据存储了哪些变量,什么格点,不要忘记查看定义的全局的变量维数属性。
使用'cdo info'命令,您可以看到时间步,层次,最小值,最大值,平均值和缺测值。 输入
cdo -info <infile>
并且使用NCO的ncdump可以显示所有元数据和数据内容。 要显示文件的元数据,请键入
ncdump -h <infile>
基本用法
- 显示文件的变量Display variables of a file
cdo -showname <infile>
- 显示文件的时间步数目Display number of timesteps of a file
cdo -ntime <infile>
- 显示格点信息?Display Information about the underlying grid: griddes does the following:
cdo -griddes tsurf.nc
- 文件转换到不同类型File conversion with different file types: Copying whole data sets can be easily done with the copy operator.
With the '-f' switch, you can choose a new file type:cdo -f grb -copy tsurf.nc tsurf.grb
Combine this with the '-z' options for changing to a higher compression ration:
cdo -f grb -z szip tsurf.nc tsurf.grb
- 选择变量Select variables from file: select variable tas
cdo -selname,tas <infile> <outfile>
select variables u10 and v10
cdo -selname,u10,v10 <infile> <outfile>
- 选择时间步Select timesteps from file: e.g. select only the 3rd time step
cdo -seltimestep,3 <infile> <outfile>
or select 3 timesteps
cdo -seltimestep,1,13,25 <infile> <outfile>
or select a time range from 1 to 12
cdo -seltimestep,1/12 <infile> <outfile>
If you have a list of dates (e.g. format YYY-MM-DD) you can use the select operator:
cdo -select,date=date1,date2,...,dateN <infile> <outfile>
- 选取子区域Select only data of the northern hemisphere (sub-region):
cdo -sellonlatbox,-180,180,0,90 <infile> <outfile>
- 经纬度网格重新排列Rearrange data from longitude 0 to 360 degrees to -180 to 180 degrees (latitude: -90 to 90 degrees):
cdo -sellonlatbox,-180,180,-90,90 <infile> <outfile>
- 经纬度反转Invert the latitudes from north-south to south-north:
cdo -invertlat <infile> <outfile>
- 转换成摄氏度Convert from K to degC when input file contains temperature values:
cdo -addc,-273.15 <infile> <outfile>
and don't forget to change the variable (here tas) units, too. Combining operators:
cdo -setattribute,tas@units="degC" -addc,-273.15 <infile> <outfile>
- 设置缺测值Set constant value to missing value: change data value -999.0 to be missing value
cdo -setctomiss,-999.0 <infile> <outfile>
or vice versa set missing value to constant value:
cdo setmisstoc,0 <infile> <outfile>
- 计算各月的平均Compute the monthly mean with respect to the number of days per month: don't forget to change the units attribute of the variable
cdo -r -setattribute,tas@units="K/day" -divdpm -monsum <infile> <outfile>
- Delete February 29th:
cdo -delete,month=2,day=29 <infile> <outfile>
进行变量修改
可以使用chname,chcode或setattribute等一些CDO运算符修改变量的名称及其属性(元数据)。
要将变量的名称从temp更改为t2m:
cdo -chname,temp,t2m infile outfile
要将代码98更改为179,将代码编号99更改为211:
cdo -chcode,98,179,99,211 infile outfile
要在某些计算后更改变量属性单位:
cdo -setattribute,pressure@units=pascal infile outfile
setattribute运算符接受多个属性,并且它支持通配符,比如:
cdo -setattribute,y?_?@units="degrees_north",x?_?@units="degrees_east",????_a@coordinates="yc_a xc_a",????_b@coordinates="yc_b xc_b" infile outfile
注意!
CDO无法更改坐标(维度)变量名称,但您可以使用NCO的ncrename来完成此操作。
如果要重命名坐标变量以使其保持坐标变量,则必须单独重命名维度和变量。
例如。 将坐标(维度)变量名称从ncl1,ncl2,ncl3重命名为time,lat,lon:
ncrename -d ncl1,time -d ncl2,lat -d ncl3,lon -v ncl1,time -v ncl2,lat -v ncl3,lon infile outfile
运算符组合
具有一个输出流的所有运算符可以将结果直接传递给另一个运算符。 运算符必须使用“ - ”开头才能与其他运算符组合。 这可以通过以下方式改善性能:
- 减少不必要的磁盘I / O:没有中间文件
- 并行处理:在一个工作链中的所有运算符并行运行
- 简单组合:
cdo -sub -dayavg ifile2 -timavg ifile1 ofile
而不是
cdo -timavg ifile1 tmp1 cdo -dayavg ifile2 tmp2 cdo -sub tmp2 tmp1 ofile rm tmp1 tmp2
- 高级组合:
cdo -timmean -yearsum -setrtoc2,75,78,1,0 -selmon,9,10,11,12,1,2,3 -selyear,1960/1969 ifile ofile
运算符链是CDO的主要特征之一。 尽可能多地使用它。 但请注意:具有任意输入文件列表的运算符不能与其他运算符组合使用:
expr 操作符
The expr 操作符可能是一个很少使用但却更有用的工具。 其目的是在任意字段上逐点计算复杂的数学运算。
假设height.nc
like height.nc包含一个3d垂直坐标变量z,为了输出气压,可以像这样使用expr:
cdo -expr,'ps=1013.25*exp((-1)*(1.602769777072154)*log((exp(z/10000.0)*213.15+75.0)/288.15))' 3dheights.nc out.nc
计算或选择部分数据并将其保存到新文件。例如,创建新变量tupper ,其包含了变量tas中大于等于273.15的值;创建新变量tlower,其包含了变量tas中小于的273.15的值:
cdo -expr,'tupper = ((tas >= 273.15)) ? tas : (tas/0.0); tlower = ((tas < 273.15)) ? tas : (tas/0.0)' <infile> <outfile>
将变量tas单位转换为摄氏度,并计算tupper和tlower变量:
cdo -expr,'tc=tas-273.15; tplus = ((tc >= 0)) ? tc : (tc/0.0); tmin = ((tc < 0)) ? tc : (tas/0.0)' <infile> <outfile>
select和delete操作符
我们已经看到了一些CDO的选择功能,如seltimestep或selname。 select运算符从输入文件中选择一些字段并将其写入输出文件,例如 变量名称,层次,日期或季节。 delete运算符删除一些字段并将结果写入输出文件。
要选择用户定义的季节,请使用带有参数season的select运算符,其中给定的季节是逗号分隔的季节列表(DJFMAMJJA-SOND或ANN的子字符串):
cdo -select,season=JFMAM infile outfile
在不知道infile的总时间步的情况下选择上一个时间步长:
cdo -select,timestep=-1 infile outfile
假设您有3个输入文件。 每个输入文件包含不同时间段的相同变量。 要从所有3个输入文件中选择层次200,500和850上的变量T,U和V,使用:
cdo -select,name=T,U,V,level=200,500,850 infile1 infile2 infile3 outfile
删除文件中的第一个时间步:
cdo -delete,timestep=1 infile outfile
缺测值
有时您需要设置或更改变量的缺测值,或将NaN更改为缺测值。
将缺测值设置为常量值,例如-9999
cdo -setmisstoc,-9999 infile outfile
将常量如-9999设为缺测值
cdo -setctomiss,-999.9 infile outfile
将NaN设为缺测值并把缺测值设为-9999.9
cdo -setmissval,nan infile outfile
cdo -setmissval,-9999.9 -setmissval,nan ifile ofile
自动完成
在官方发行版的contrib子目录中是使用bash,zsh和tcsh自动完成的配置文件。 对于当前的开发状态,可以在这里找到:source:/trunk/cdo/contrib
对于激活,您必须让shell读取相应的文件,例如 对于zsh:
source cdoCompletion.zsh
bash和tcsh的方法类似
引自https://cloud.tencent.com/developer/article/1618310 注:
CDO中提供了两个均值计算操作符:mean 和 average。mean是按照统计函数的方式计算均值,即排除缺省值的影响;average通过求样本总和然后除样本总数,并未排除缺省值的影响。如果样本中不包含缺省值的话,mean和average的计算结果相同。
CDO学习2 CDO 入门教程Tutorial的更多相关文章
- 总结笔记 | 深度学习之Pytorch入门教程
笔记作者:王博Kings 目录 一.整体学习的建议 1.1 如何成为Pytorch大神? 1.2 如何读Github代码? 1.3 代码能力太弱怎么办? 二.Pytorch与TensorFlow概述 ...
- Netty学习_Netty框架入门教程:Netty入门之HelloWorld实现
我们可能都学过Socket通信/io/nio/aio等的编程.如果想把Socket真正的用于实际工作中去,那么还需要不断的完善.扩展和优化.比如很经典的Tcp读包写包问题,或者是数据接收的大小,实际的 ...
- 我的Android前生今世之缘-学习经验-安卓入门教程(六)
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 据我所知,网上教学资料一堆一堆的,那么还有很多人说,如何学习? ...
- 学习Android Jetpack? 入门教程和进阶实战这里全都有!
前言 2018年谷歌I/O,Jetpack横空出世,官方介绍如下: Jetpack 是一套库.工具和指南,可帮助开发者更轻松地编写优质应用.这些组件可帮助您遵循最佳做法.让您摆脱编写样板代码的工作并简 ...
- 编程基础学习JS的入门教程
将JavaScript 插入网页的方法 使用<script>标签在网页中插入Javascript代码. 插入JavaScript 与在网页中插入CSS的方式相似.使用下面的代码可以在网页中 ...
- 基于Spring Cloud的微服务入门教程
(本教程的原地址发布在本人的简书上:http://www.jianshu.com/p/947d57d042e7,若各位看官有什么问题或不同看法请在这里或简书留言,谢谢!) 本人也是前段时间才开始接触S ...
- 学习swift语言的快速入门教程推荐
随着苹果产品越来越火爆,苹果新推出的swift必定将在很大程度上代替oc语言.学好swift语言,对于IOS工程师来讲,已经是一门必备技能. 有一些比较好的英文版教程,值得学习. 1. Swift T ...
- TensorFlow 中文资源全集,官方网站,安装教程,入门教程,实战项目,学习路径。
Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...
- TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径。
Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...
- WPF/MVVM Quick Start Tutorial - WPF/MVVM 快速入门教程 -原文,翻译及一点自己的补充
转载自 https://www.codeproject.com/articles/165368/wpf-mvvm-quick-start-tutorial WPF/MVVM Quick Start T ...
随机推荐
- PostgreSQL 实现快速删除一个用户
一.具体方法 一般情况下直接执行 drop role xxx; 就可以把这个用户删除.但是很多时候会因为用户有依赖而报错. 二.权限依赖 postgres=# create role test wit ...
- Postgresql动态共享内存类型
一.简介 linux为多个进程通信提供了不同的IPC机制,如:System V , POSIX 和 MMAP,所以Postgresql共享内存管理也支持以上类型. 在Postgresql中可以使用dy ...
- 彰显个性│github 和 gitlab 之自定义首页样式
目录 个性首页 制作步骤 修改内容 个性首页 相信很多小伙伴在逛 github 和 gitlab 的时候 会发现很多开发者的首页异常的炫酷,如 https://github.com/autofelix ...
- centos7中关闭防火墙命令
1.命令行界面输入命令"systemctl status firewalld.service"并按下回车键. 2.然后在下方可以查看得到"active(running)& ...
- CSS3,线性渐变(适用标题背景)
.test{ margin:200px auto; height:30px; border:1px #D4D4D4 solid; box-shadow:0 -1px 10px rgba(0,0,0,0 ...
- Anaconda 环境中安装OpenCV (cv2)
1.使用Anaconda 的对应环境,查看环境中的Python版本号 (1)使用Anaconda 查看存在的环境:conda info --env (2)激活环境:conda activate XXX ...
- mybatis全局配置:下划线转驼峰
处理字段名和属性名不一致的情况: mybatis-config.xml配置 <settings> <setting name="mapUnderscoreToCamelCa ...
- 报错com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime value: '1' for column 'date' at row 1问题解决
出现 com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime value: '1' ...
- SQL注入、XSS
参考视频 一.Sql注入的原因 用户输入的信息,拼接到程序中进行了执行. 一.使用Burpsuite,进行万能钥匙探索 二.使用sqlmap进行测试 三.SQL注入基础知识 Mysql 5.x数据结构 ...
- 记录C#学习过中看到的文章
1.DataRow 转实体类 https://www.cnblogs.com/macT/p/10878863.html https://www.cnblogs.com/yangboyu/archive ...