nco сокращает ежедневный файл netcdf с 10:00 до 22:00 каждый день

Я очень новичок в nco и хочу разделить свой файл .nc (с 1996010110 по 2019123110) как ежедневный файл с 10:00 до 22:00. В этом случае каждый разделенный файл содержит до YYYY-MM-(DD+1):10:00. Обратите внимание, что час окончания DD-дня повторяется в начале следующего дня. Это данные YYYY-MM-DD:10:00 встречается дважды в file_YYYY_MM_DD.nc в качестве начальных данных, а также конечных данных file_YYYY_MM_(DD-1).nc. Спасибо!

2 ответа

Существует команда CDO, которая позволяет выбрать поддиапазон часов:

      cdo selhour,10/22 in.nc out.nc 

что ответит на первую часть вопроса, но из моего комментария вы увидите, что вопрос требует дальнейшего уточнения.

Способ сделать это в NCO состоит в том, чтобы обернуть цикл с течением времени вокруг использования формы субциклирования hyperslabber, чтобы исключить двойные временные метки, а затем зацикливаться на днях, чтобы создать каждый файл, подобный этому документированному примеру здесь. Для ввода, где первой желаемой записью является индекс 10, последний желаемый индекс не ограничен, количество записей в повторяющейся серии (т. Е. Шаг между группами) равно 25, а количество последовательных желаемых записей (желаемое подмножество group) равно 24, первая команда будет выглядеть так:

      ncrcat -d time,10,,25,24 in.nc out.nc

потом будет содержать данные за тысячи дней без повторяющихся временных шагов, и вы можете разделить этот файл на ежедневные файлы, как вам нравится, в том числе с помощью завернутый в петлю что-то вроде

РЕДАКТИРОВАТЬ 20210924: Основываясь на пояснении ниже, вы можете проигнорировать приведенную выше часть этого сообщения и перейти непосредственно к этому циклу, который был изменен для извлечения 25 временных шагов в день.

      for yr in {1996..2019}; do
  for mth in {1..12}; do
    for day in {1..${dpm[mth]}}; do # Days-per-month array exercise left for the reader :)
      yyyy=`printf "%04d" $yr`
      mm=`printf "%02d" $mth`
      dd=`printf "%02d" $day`
      ncrcat -d time,${yyyy}-${mm}-${dd}T10:00:00,${yyyy}-${mm}-${ddp1}T10:00:00 out.nc file_${yyyy}_${mm}_${dd}.nc
    done
  done
done
Другие вопросы по тегам