1. Linux下cdo的安装
要处理一套nc数据,用cdo很方便,但是以前没有学习过,网上查了很多步骤,但是服务器上没有联网,也没有安装ubuntu、conda等,最后按照cdo用户手册纯手动安装步骤如下:
1.1 安装包下载
cdo
除cdo之外还需使用其它库,详情见君子-乐胥的博客。但我这里仅仅安装了NetCDF、ecCodes(主要是为了用grib2)、hdf5即可使用,目前还没出问题。
1.2 安装
每一个包解压、进入目录、编译、安装等:
tar -zxf xxxx.tar.gz
cd xxx
./configure -prefix=/your/install/path !可以选择安装到你自己想要的目录下,也可以默认
make
make install
cdo的安装,一定要说明其它相关联的库在哪里安装,要不然会失败:
./configure -prefix=/your/install/path --with-netcdf=<NetCDF root directory> --with-eccodes=<ecCodes root directory>
make
make install
终于安装完成并且可以使用了:
2. CDO相关学习内容
- 由于不是系统性从头学习而是需要快速学习记录,所以本文的逻辑性可能比较弱,后期会尽量整理
2.1 使用语法:
cdo [Options] Operator1 [ -Operator2 [ -OperatorN ] ]
- options必须放在所有operator的前面!
2.2 options:
-f <format> !设置输出文件格式
-r !生成一个相对时间轴
-b !设置精度,选项有I8/I16/I32/F32/F64 for nc1/nc2/nc4/nc4c/nc5; F32/F64 for grb2/srv/ext/ieg; P1 - P24 for grb1/grb2
3. operators:
merge —— 合并具有不同场的数据集,输入文件要么变量不同要么变量相同层数不同,且要求具有相同的时间步长
cdo merge infile1 infile2 infile3 outfile
selname —— 选出输入文件的某个变量场到输出场中
cdo -f selname,XXX infile outfile
setdate —— 设置输入文件的时间并保存到输出文件中
setdate,date infile outfile
#date的格式是1987-01-16,12:00:00
cdo settaxis,1987-01-16,12:00:00,1mon infile outfile
copy —— 复制输入文件的所有数据信息到输出文件中
cat —— 则是把输入文件的所有数据信息粘贴到输出文件尾部
merge——把输入文件按照变量合并
mergetime——把输入文件按照时间顺序合并
cdo -r -f nc copy 2temp.nc Temp.2001-2011.nc
cdo -r -f nc cat 2temp.nc Temp.2001-2011.nc
cdo mergetime swvl1*.nc try.nc
#如果合并文件时出现“NetCDF: Numeric conversion not representable”的错误提示
#可采用以下方法(具体错误原因我也不知道为什么):
cdo -b F64 mergetime swvl1*.nc try.nc
ymonmean —— 计算输入文件的多年月平均到输出文件
chname —— 将输入文件的变量名改成新名字并保存到输出文件中
ensmean —— 将输入文件进行集合平均,保留第一个输入文件的时间维,要求所有输入文件具有相同结构的相同变量。
seasmean —— 计算月平均序列的季节平均值,需要注意的是CDO默认的季节为DJF、MAM、JJA和SON
cdo seasmean infile outfile
重新插值——使用Interpolation中的remap相关操作
cdo remapbil,**** infile outfile #其中****代表指定的网格,也可以是某一个带有指定网格的文件
版权声明:本文为weixin_44541549原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。