Извлечение и суммирование определенных слоев переменной 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