Скопируйте последний день месяца и добавьте его в конец файла netcdf с помощью nco.
Я работаю в NCO и столкнулся с этой сложной проблемой. Я должен переставить 360-дневный календарь в нормальный григорианский календарь на 365 дней. В календаре 360 дней каждый месяц имеет 30 дней. Моя идея состояла в том, чтобы добавить один день к месяцу, который должен состоять из 31 дня в григорианском каландре, и убрать один или два дня с февраля (високосный или не високосный год). Я знаю, как удалить дни (просто скопировав то, что вам нужно, в другой файл с помощью ncks).
Есть ли простой способ скопировать последний день определенного месяца и добавить его в конце того же месяца?
Мои файлы располагаются в течение года с разрешением 3 часа, и я хочу работать с переменной с именем tas
(Температура). Ниже я ncdump'ed самая важная часть:
dimensions:
rlon = 424 ;
rlat = 412 ;
time = UNLIMITED ; // (2880 currently)
variables:
double rlon(rlon) ;
rlon:standard_name = "grid_longitude" ;
rlon:long_name = "longitude in rotated pole grid" ;
rlon:units = "degrees" ;
rlon:axis = "X" ;
double rlat(rlat) ;
rlat:standard_name = "grid_latitude" ;
rlat:long_name = "latitude in rotated pole grid" ;
rlat:units = "degrees" ;
double time(time) ;
time:standard_name = "time" ;
time:units = "days since 1949-12-01 00:00:00" ;
time:calendar = "360_day" ;
time:long_name = "time" ;
time:axis = "T" ;
float tas(time, rlat, rlon) ;
tas:grid_mapping = "rotated_pole" ;
tas:_FillValue = 1.e+20f ;
tas:missing_value = 1.e+20f ;
tas:standard_name = "air_temperature" ;
tas:long_name = "Near-Surface Air Temperature" ;
tas:units = "K" ;
tas:coordinates = "lon lat height" ;
tas:cell_methods = "time: point" ;
Я с нетерпением жду, чтобы услышать идеи.
2 ответа
Я решил эту проблему более длинным методом. Сначала я разбил годовые файлы на месяцы. Для каждого месяца я добавлял и удалял необходимые дни, а затем соединял полученные месяцы.
Если у кого есть более быстрый метод, пожалуйста, поделитесь
Если данные за 360 дней хранятся в двенадцати ежемесячных файлах, то вы можете использовать функцию добавления записей ncrcat вместе с отрицательными индексами гиперсписки для обратного отсчета с конца и добавления последней записи к себе
ncrcat --rec_apn -d time,-1 in.nc in.nc
Обязательно сделайте резервную копию ваших данных в первую очередь, так как это перезаписывает ввод.