Дублирование ежемесячных данных в данные раз в два месяца в файле NetCDF

У меня есть ежемесячный файл .nc от ISIMIP. Вот временной ряд:

      time = "2000-01-01", "2000-02-01", "2000-03-01", "2000-04-01", "2000-05-01", 
    "2000-06-01", "2000-07-01", "2000-08-01", "2000-09-01", "2000-10-01", 
    "2000-11-01", "2000-12-01", "2001-01-01", "2001-02-01", "2001-03-01"

... до 01 декабря 2014 г.

Мне нужно дублировать каждый месяц и делать новое время через 15 дней. Итак, я получу 2 раза в месяц с одинаковым значением, например:

01 января 2000 г., 16 января 2000 г., 01 февраля 2000 г., 16 февраля 2000 г., 1 марта 2000 г., 16 марта 2000 г.....

Время каждого месяца имеет одинаковые значения.

Я пытался:

      cdo inttime,2000-01-01,12:00,15days my_file.nc interpolated_file.nc

ncks -F -d time,,,2 original_file.nc first_days.nc
ncks -F -d time,1,,2 interpolated_file.nc sixteenth_days.nc
ncrcat first_days.nc sixteenth_days.nc final_file.nc

Но это не сработало. Я был бы признателен за любые предложения.

1 ответ

Не уверен, что это наиболее эффективный способ сделать это, но почему бы не сдвинуть временную метку на 15 дней, а затем снова объединить файлы?

      # shift the timestamp
cdo shifttime,15days in.nc in_shift.nc 

# merge together
cdo mergtime in.nc in_shift.nc out.nc 

Или в одной строке с использованием конвейера (надеюсь, это сработает, поскольку время слияния может не работать с конвейером, я, кажется, помню, что команды с гибким количеством входных файлов, таких как cat, не могут быть объединены с конвейером)

      cdo mergetime in.nc -shifttime,15days in.nc out.nc 

Обратите внимание, что этот Солн, конечно, дает вам второй кусок всегда 15-го числа, независимо от продолжительности месяца.

Другие вопросы по тегам