Ошибка даты в netcdf, преобразованная с помощью оператора климатических данных

Я пытаюсь преобразовать годовые данные о температуре и осадках из Индийского метеорологического бюро из .grd в netcdf, используя CDO в Linux. Однако, когда я импортирую файл netcdf в R и проверяю даты, нет значения для 1 января для данного года и либо значение для следующего года, либо повторяющаяся дата в зависимости от файла (у меня правильное общее количество дат в каждом случае). Я хочу убедиться, что это проблема с маркировкой и правильный порядок, а не проблема с преобразованием или базовыми данными.

Действия по воспроизведению:

  1. Загрузите двоичный файл максимальной температуры за 1951 год со страницы http://www.imdpune.gov.in/Clim_Pred_LRF_New/Grided_Data_Download.html#

  2. Создайте файл ctl (Maxtemp_MaxT_1951.ctl) со следующим текстом на основе их примера:

    DSET Maxtemp_MaxT_1951.GRD
    TITLE 1 degree analyzed grids
    UNDEF 99.9
    XDEF 31 LINEAR 67.5 1
    YDEF 31 LINEAR 7.5 1
    ZDEF 1 Linear 1 1
    TDEF 365 LINEAR 1JAN1994 1DY
    VARS 1
    T 0 99 DAILYTEMP
    ENDVARS
  1. Выполните следующее в bash, чтобы сгенерировать файл .nc
    cdo -f nc import_binary Maxtemp_MaxT_1951.ctl Maxtemp_MaxT_1951.nc
  1. Импортируйте netcdf в R
    library(raster)
    library(ncdf4)
    
    netcdf_example <- "my_path//Maxtemp_MaxT_1951.nc"
    brick_test <- brick(netcdf_example,varname="t")
    head(brick_test@z)

Первая указанная дата-время - 1951-01-02 23:56:02, а последняя - 1952-01-01 23:56:02.

Согласно приведенному ниже комментарию, проблема, по-видимому, связана с импортом растра (даты отображаются правильно при вызове из CDO). Также, если это актуально, я делаю преобразование в Linux, затем синхронизирую файлы .nc через Dropbox, а затем импортирую с помощью R для Windows.


person Mike Murphy    schedule 16.09.2020    source источник
comment
Что показывает cdo showdate Maxtemp_MaxT_1951.ctl Maxtemp_MaxT_1951.nc? Я бы проверил там даты на случай, если растр не сможет правильно расшифровать время   -  person Robert Wilson    schedule 16.09.2020
comment
Спасибо, Роберт. Вызов cdo showdate Maxtemp_MaxT_1951.nc возвращает список с правильными датами (1951-01-01 ... 1951-12-31. Вызов того же самого в контрольном файле вызывает ошибку (неподдерживаемый тип файла). Итак, я предполагаю, что они верны в файл nc, но, как вы говорите, растр не декодируется правильно. Я, очевидно, могу изменить метку в R, но я хочу быть уверен в правильности порядка.   -  person Mike Murphy    schedule 16.09.2020
comment
Вы также можете исправить это, изменив календарь с помощью CDO. Календарь скорее всего нестандартный. Первый ответ здесь должен исправить ситуацию в R: code.mpimet.mpg.de/boards / 1 / themes / 3613   -  person Robert Wilson    schedule 16.09.2020
comment
Второй вариант по ссылке сработал - большое спасибо, Роберт!   -  person Mike Murphy    schedule 16.09.2020


Ответы (1)


Согласно приведенному выше комментарию Роберта, работает

cdo -a setcalendar,standard ifile ofile

в CDO решена проблема с импортом R

person Mike Murphy    schedule 16.09.2020