Вы можете создать файл netcdf с одним и тем же годом, повторяющимся много раз, и отметка времени будет перезаписана, чтобы получить "фиктивный" год с помощью cdo. Допустим, в вашем примере файла netcdf " oneyear.nc " указано время года 2002 , в то время как другие ваши "изменяющиеся" файлы охватывают годы с 1980 по 2010 год (если я понимаю, чтовопрос, некоторые переменные будут меняться из года в год, это всего лишь один конкретный файл, который вы хотите сохранить неизменным).
Затем вы можете создать набор файлов года с фиктивной временной меткой следующим образом:
for offset in $(seq -22 8) ; do
cdo shifttime,${offset}years oneyear.nc year${offset}.nc
done
, а затем объединить их в один файл, используя время слияния:
cdo mergetime year*.nc mydriverfile.nc
mydriverfile.nc теперь должен содержать те же месячные данные, которые повторяются в течение 30 лет с фиктивными «поддельными» годами, которые затем легко читаются так же, как и другие файлы драйверов.
edit: Что касается обсуждения выше о високосных годах, то, очевидно, для ежемесячных данных это не проблема, но если вы хотите выполнить эту задачу с ежедневными данными, тогда с этим решением вы должны выбрать примерный год, которыйвисокосный год или вставьте фиктивный день для 29 февраля. Я также подозреваю, что приведенное выше решение по модулю страдает от проблемы високосного года применительно к ежедневному вводу.