Извлечение и суммирование определенных слоев переменной NetCDF

У меня есть файл 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... Я знаю только, как суммировать переменную по всему измерению, но не только по выбранным слоям - я может, вероятно, обойти эту проблему, но я хотел бы знать, есть ли лучший и более чистый способ сделать это.

1 ответ

Я буду считать, что ваш входной файл находится в.nc
И ваши слои CFT основаны на одном!

1) сумма по слоям коры, 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) сумма по слоям коры, 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
Другие вопросы по тегам