本文将介绍如何用CDO进行nc文件的数据切片和统计运算(for Mac)
1.数据切片
cdo seldate/selmon/selyear……(选取特定时间范围的信息)
cdo selname/sellevel……(选取特定的变量和高度场的信息)
cdo sellonlatbox……(选取特定经纬度的信息)
实例①:提取prec_snow.nc文件中2010-01-01到2011-06-30的所有数据
step1:查看日期格式,输入cdo showdate prec_snow.nc→发现格式是yyyy-mm-dd
step2:提取2010-01-01到2011-06-30的数据
输入cdo seldate,2010-01-01,2011-06-30 prec_snow.nc prec_snow_cut.nc
(切片后的数据命名为prec_snow_cut.nc)
实例②:提取2010-2012年中国地区(10-55N, 70-135E)的冬季(12、1、2月)降雪
step1:查询prec_snow.nc文件中降水变量的名称,输入cdo showname prec_snow.nc,降雪变量的名称为sf(snowfall)
step2:提取需要的数据
cdo -selmon,1,2,12 -selyear,2010/2012, -sellonlatbox,70,135,10,55 -selname,sf prec_snow.nc prec_snow_select.nc
(提取后的数据命名为prec_snow_select.nc)
注意:多个命令同时使用时命令前加入-,命令与命令之间用空格隔开。
2.统计运算
cdo ensmean/ensmax/ensmin/ensvar/ensstd……(集合平均/最大值/最小值/方差/标准差等)
cdo timselmean/timselmax/timselmin/timselsum/timselvar/timselstd
(时间序列运算,使用见实例④)
cdo runmean,X(滑动平均X为滑动的时间)
cdo timmean/yearmean/seasmean/monmean(时间/年/季节/月平均,max min sum等同样用)
cdo fldmean(变量的一个水平层平均)/zonmean(所有输入场的纬向平均)/gridboxmean(盒平均)/vertmean(高度场平均)……
实例③:计算2010-2015年夏季降水均值,降水变量的名称为tp(total precipitation)
输入:cdo -yearmean -selyear,2010/2015 -selmon,6,7,8 -selname,tp prec_snow.nc prec_snow_summean.nc(提取tp变量,月份选择678,年份选择2010-2015再求年均值即可)
实例④:计算2010-2015年冬季降雪,降雪变量的名称为sf(snowfall)
step1:将日尺度数据求月平均
cdo -monmean -selyear,2010/2016 -selname,sf prec_snow.nc prec_snow_monmean.nc
注意:这里将2016年算进去是因为2015年冬季降水包括2015年12月和2016年1、2月
step2:用timeselmean
cdo timselmean,3,11,9 prec_snow_monmean.nc prec_snow_winmean.nc
注意:这里不能用yearmean和selmon,因为冬季的平均跨越了两个年份。因此这里用timselmean函数,设计三个参数,第一个3表示3个月的平均,第二个11表示跳过最初的11个月,第三个9表示间隔的时间步长,即从2月份到12月份需要间隔9个月。
实例⑤:计算季节性平均
cdo timselmean,3,2 xxx.nc yyy.nc (x和y分别为输入文件和输出文件)
注意:3表示每三个月求一次平均,2表示跳过最初的2个月(上一年冬季),第三个参数为0(因为间隔数为0,不为0的情况见实例④)。可得3-5为季度1,6-8为季度2,9-11为季度3,12-2为季度4。
此处参考:
科学网-[转载]合并多个nc数据_气象数据处理的火箭加速器—CDO(转载)-文小航的博文
以上为如何用CDO进行nc文件的数据切片和统计运算(for Mac),其他相关内容可以见主页或CDO专辑~