0

我有一个 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沿维度作为第 16 层和第 15 层的变量natpft

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

4

1 回答 1

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
于 2018-01-16T16:19:43.693 回答