CDO入门和使用实践

CDO入门和使用实践

一、前言

简介

  1. CDO (Climate Data Operators) 是一个用于处理气候和 NWP 模型数据的大型工具集。支持 NetCDF 3/4、GRIB 1/2 包括SZIP(或AEC)和 JPEG 压缩、EXTRA、SERVICE 和 IEG 作为 IO 格式。除此之外,CDO 可用于分析与气候科学无关的任何类型的网格数据。
  2. CDO 的内存需求非常小,可以处理大于物理内存的文件。
  • 应用场景
  1. 数据合并和拆分:时间、经纬度
  2. 数据简单运算:加减乘除、方差、均方差、和、最值、滑动均值、区域平均、区域方差、区域最值、滑动方差、滑动最值
  3. 数据转换:nc 转 grb、binary 转 nc、hdf 转 nc
  4. 数据统计运算:线性回归、滤波、EOF、水平插值、垂直插值
  5. 气候指数运算

环境

  • Linux发行版:CentOS-7-x86_64-DVD-1804.iso
  • CDO 版本:1.9.10

官网:https://code.mpimet.mpg.de/projects/cdo

依赖软件:https://code.mpimet.mpg.de/projects/cdo/wiki/Win32

wiki:https://code.mpimet.mpg.de/projects/cdo/wiki

指令说明文档:https://code.mpimet.mpg.de/projects/cdo/embedded/index.html

NetCDF Java(数据查看):https://www.unidata.ucar.edu/software/netcdf-java/

Panoply(数据绘图):https://www.giss.nasa.gov/tools/panoply/

二、正文

1.安装

  • 查询依赖是否安装
# rpm -qa | grep zlib
# yum list installed | grep zlib
  • 安装依赖包
#-- 更新 epel 第三方软件库
# yum -y install epel-release

#-- 安装 jdk
# yum -y install java-1.8.0-openjdk*
# java -version

#-- 安装依赖包
# yum -y install gcc gcc-gfortran curl zlib netcdf-devel udunits2-devel proj-devel openssl-devel openssh-server openssh-clients grib_api-devel gcc-c++
  • 下载 CDO 压缩包

CDO 官网:https://code.mpimet.mpg.de/projects/cdo/files

  • 编译安装
# tar -zxvf cdo-1.9.10.tar.gz
# cd cdo-1.9.10
# ./configure --prefix=/usr/local CFLAGS=-fPIC --with-netcdf=/usr/local --with-hdf5=/usr/local
# make
# make install
  • 查看版本
# cdo -V

2.使用

基础指令

功能指令
查询版本号cdo -V
帮助指令cdo -h

查询指令

功能指令例子
查询所有变量名cdo -showname {输入文件}cdo -showname /opt/input.nc
查询时间步长cdo -ntime {输入文件}cdo -ntime cdo -showname /opt/input.nc

拆分指令

官方文档:https://code.mpimet.mpg.de/projects/cdo/embedded/index.html#x1-1160002.2.9

功能指令例子
根据时间步长进行拆分cdo splitsel,{时间步长} {输入文件} {输出文件-根据拆分数量自动编号}cdo splitsel,1 /opt/input.nc /opt/output.nc

选择指令

官方文档:https://code.mpimet.mpg.de/projects/cdo/embedded/index.html#x1-1490002.3

其它日期时间:seltimestepseltimeselhourseldayselmonthselyearselseasonseldateselsmon

功能指令例子
选择变量(可多个变量)cdo -selname,{变量1},{变量2} {输入文件} {输出文件}cdo -selname,time,u,v,depth /opt/input.nc /opt/output.nc
选择步长(多个步长)cdo -seltimestep,{时间步长1},{时间步长2} {输入文件} {输出文件}cdo -seltimestep,1,3 /opt/input.nc /opt/output.nc
选择步长(连续步长)cdo -seltimestep,{时间步长1} / {时间步长2} {输入文件} {输出文件}cdo -seltimestep,1/8 /opt/input.nc /opt/output.nc

转换指令

官网文档:https://code.mpimet.mpg.de/projects/cdo/embedded/index.html#x1-7350002.13.2

功能指令例子
正常转换cdo -f {转换格式} -copy {输入文件} {输出文件}cdo -f grb -copy input.nc output.grb
压缩转换cdo -f {转换格式}-z {压缩格式} {输入文件} {输出文件}cdo -f grb -z szip input.nc output.grb

合并指令

官网文档:https://code.mpimet.mpg.de/projects/cdo/embedded/index.html#x1-1110002.2.8

功能指令例子
合并按日期和时间排序的数据集,所有输入文件都需要在不同的时间步上具有相同的结构和相同的变量cdo mergetime {输入文件1} {输入文件2} {输出文件}cdo mergetime input1.nc input2.nc output.nc
支持通配符cdo mergetime *.nc {输出文件}cdo mergetime input*.nc output.nc
合并具有不同字段的数据集(详情看官方说明)cdo merge {输入文件1} {输入文件2} {输出文件}cdo merge input1.nc input2.nc output.nc

数据插值

官网文档:https://code.mpimet.mpg.de/projects/cdo/embedded/index.html#x1-6450002.12.2

功能指令例子
正常转换cdo remapbic,r{经纬度网格} {输入文件} {输出文件}cdo remapbic,r128x42 input.nc output.nc

3.其它

1)NC数据查看软件NetCDF Java

2)NC数据绘图软件Panoply

  • 24
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

趴着喝可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值