我有一个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 ...我只知道如何在整个维度中总结变量,而不是在所选层之间只是 - 因此我可以解决这个问题,但我想知道是否有更好更清洁的方法。
答案 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