提取并汇总NetCDF变量的某些层

时间:2018-01-15 15:38:14

标签: extract netcdf nco

我有一个NetCDF文件,这里是ncdump -h的截断输出:

dimensions:
    lat = 720 ;
    lon = 1440 ;
    cft = 64 ;
    natpft = 14 ;
double PCT_CFT(cft, lat, lon) ;
    PCT_CFT:long_name = "percent cft" ;
    PCT_CFT:units = "unitless" ;
    PCT_CFT:_FillValue = -9999. ;
    PCT_CFT:coordinates = "LON LAT" ;
double PCT_NAT_PFT(natpft, lat, lon) ;
    PCT_NAT_PFT:long_name = "percent pft" ;
    PCT_NAT_PFT:units = "unitless" ;
    PCT_NAT_PFT:_FillValue = -9999. ;
    PCT_NAT_PFT:coordinates = "LON LAT" ;

我需要的是从维PCT_CFT的层3,4,61和62的变量cft中提取和求和,然后总结几乎所有剩余的层(即。 5-60,63,64)并将这两个结果分别沿着维PCT_NAT_PFT添加到变量natpft作为层16和15。

我想尽可能使用NCO(或CDO)来实现这一点,我想避免使用其他工具,如Python或R ...我只知道如何在整个维度中总结变量,而不是在所选层之间只是 - 因此我可以解决这个问题,但我想知道是否有更好更清洁的方法。

1 个答案:

答案 0 :(得分:1)

我假设您的输入文件是in.nc
而你的cft层是一个基础!?

1)沿cft层汇总,3-4,61-62

ncks --msa_usr_rdr -v PCT_CFT -d cft,2,3 -d cft,60,61  in.nc in_1.nc   
ncwa -a cft -y sum  in_1.nc sum_1.nc

2)沿着cft层求和,5-60,63-64

ncks --msa_usr_rdr -v PCT_CFT -d cft,4,59 -d cft,62,63 in.nc in_2.nc            
ncwa -a cft -y sum  in_2.nc sum_2.nc

3)向PCT_NAT_PFT

添加两个新图层
ncks -v PCT_NAT_PFT --msa_usr_rdr -d natpft,0,13 -d natpft,0,1 in.nc in_3.nc

4)将1),2)中的和加到PCT_NAT_PFT

ncap2 -v -A -s 'PCT_NAT_PFT(15,:,:)=PCT_CFT(:,:);'  sum_1.nc in_3.nc
ncap2 -v -A -s 'PCT_NAT_PFT(14,:,:)=PCT_CFT(:,:);'  sum_2.nc in_3.nc