Есть ли команда NCO для изменения отметки времени переменной в netcdf?

У меня есть файл netcdf, содержащий максимальную суточную температуру воздуха, время, широту и долготу. Я успешно получил максимальную температуру из netcdf с 6-часовыми температурами, используя команду nco:

ncra -y max --mro -d время ,,, 4,4 6часовое макс. чпу

Единственная проблема в том, что мои временные шаги по-прежнему разделены на четверть дня:

переменные:

double lon(lon) ;
    lon:units = "degrees_east" ;
    lon:long_name = "lon" ;
    lon:standard_name = "longitude" ;
double lat(lat) ;
    lat:units = "degrees_north" ;
    lat:long_name = "lat" ;
    lat:standard_name = "latitude" ;
double time(time) ;
    time:units = "days since 0850-01-01 00:00:00" ;
    time:long_name = "time" ;
    time:calendar = "proleptic_gregorian" ;
double tair(time, lat, lon) ;
    tair:units = "K" ;
    tair:_FillValue = 1.e+30 ;
    tair:long_name = "2 meter air temperature" ;
    tair:days\ since\ 850 = 0., 0.25, 0.5, 0.75, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 4.25, 4.5, 4.75, 5., 5.25, 5.5, 5.75, 6., 6.25, 6.5, 6.75, 7., 7.25, 7.5, 7.75, 8., 8.25, 8.5, 8.75, 9., 9.25, 9.5, 9.75, 10., 10.25, 10.5, 10.75, 11., 11.25, 11.5...

У меня вопрос: как изменить временной шаг для атрибута days \ Since \ 850 в переменной tair на целые числа?

Спасибо!

Шарлотта


person Charlotte Uden    schedule 05.02.2021    source источник


Ответы (2)


ncap2 может работать с атрибутами. Однако у вас есть особенно сложная проблема, потому что имя вашего атрибута содержит пробелы, а значение атрибута является массивом. Я думаю, что в этом случае вам нужно сначала переименовать атрибут, а затем управлять им. (Затем вы можете переименовать его, если хотите.):

ncrename -O -a "tair@days since 850",tair@days_since_850 in.nc foo.nc
ncap2 -O -s 'tair@days_since_850=int(tair@days_since_850)' foo.nc out.nc

Отредактируйте 20210209 в ответ на комментарий ниже: Чтобы скопировать атрибут из одной переменной в другую, попробуйте

ncap2 -s 'var1@att1=var2@att2' in.nc out.nc
person Charlie Zender    schedule 08.02.2021
comment
Спасибо, Чарли! Ваше предложение сработало для данных за месяц, но когда я попробовал его на данных за 1200 лет (850-1200), это не сработало. У меня есть netcdf других климатических данных с атрибутами и переменными в том формате, который я ищу. Есть ли команда nco для копирования атрибутов из одного necdf в другой? - person Charlotte Uden; 10.02.2021

Если у кого-то есть аналогичная проблема, это сработало для меня:

ncap2 -s 'time=array(0,1,$time)' outmax.nc outmax2.nc
ncap2 -s 'time=array(0,1,$time)' outmin.nc outmin2.nc
person Charlotte Uden    schedule 27.04.2021