Как изменить порядок/реорганизовать атрибуты переменных в файле netcdf?

Мне нужно переместить 'standard_name', чтобы он был первым атрибутом, присутствующим во всех моих переменных в файле netcdf.

Мне еще предстоит найти правильную команду, но я надеюсь, что это будет что-то довольно прямолинейное с использованием NCO.

Если я ncdump, это текущий вывод:

short heading(time) ;
        heading:data_max = 359.88f ;
        heading:long_name = "Ship heading" ;
        heading:data_min = 0.f ;
        heading:units = "degrees" ;
        heading:missing_value = 1.e+38f ;
        heading:add_offset = 179.94f ;
        heading:standard_name = "ship_heading" ;
        heading:scale_factor = -0.005491668f ;
    short depth(time, depth) ;
        depth:positive = "down" ;
        depth:long_name = "Depth" ;
        depth:data_min = 20.48f ;
        depth:units = "meter" ;
        depth:missing_value = 1.e+38f ;
        depth:data_max = 572.5f ;
        depth:standard_name = "depth" ;
        depth:add_offset = 296.49f ;
        depth:scale_factor = -0.008423671f ;

Мне нужно, чтобы вывод был:

short heading(time) ;
        **heading:standard_name = "ship_heading" ;**
        heading:data_max = 359.88f ;
        heading:long_name = "Ship heading" ;
        heading:data_min = 0.f ;
        heading:units = "degrees" ;
        heading:missing_value = 1.e+38f ;
        heading:add_offset = 179.94f ;
        heading:scale_factor = -0.005491668f ;
    short depth(time, depth) ;
        **depth:standard_name = "depth" ;**
        depth:positive = "down" ;
        depth:long_name = "Depth" ;
        depth:data_min = 20.48f ;
        depth:units = "meter" ;
        depth:missing_value = 1.e+38f ;
        depth:data_max = 572.5f ;
        depth:add_offset = 296.49f ;
        depth:scale_factor = -0.008423671f ;

person Jimbo    schedule 17.05.2019    source источник
comment
Ради интереса могу я спросить, почему вы можете захотеть это сделать? вся идея netcdf заключается в том, что не имеет значения, в каком порядке поступают метаданные переменных или сами записи переменных...   -  person Adrian Tompkins    schedule 18.05.2019
comment
@ Адриан Томпкинс, конечно. Речь идет исключительно о аккуратном внешнем виде! При работе с многочисленными наборами данных из многих инструментов, каждый из которых имеет множество переменных, может раздражать прокрутка ncdump, чтобы найти то, что вы ищете. Мне нравится поддерживать постоянный порядок переменных и атрибутов, особенно при подготовке метаданных для хранения. Кажется, что нет четкого способа сделать это без перезаписи всего файла, что, я согласен, противоречит всей идее, лежащей в основе netcdf.   -  person Jimbo    schedule 20.05.2019


Ответы (1)


Я согласен, что идеальное место для standard_name — это первый или второй атрибут. Таким образом, дампы гораздо более разборчивы. Вы должны понимать, что атрибуты хранятся и выгружаются в порядке их создания. НКО не имеет возможности переоформить этот приказ. Лучшее решение — изменить средство записи набора данных, чтобы оно создавало standard_name перед всеми остальными атрибутами. Или вы можете сделать что-то сумасшедшее, например, использовать ncatted для удаления всех атрибутов, а затем повторно добавить их в желаемом порядке.

person Charlie Zender    schedule 18.05.2019
comment
Спасибо за ваш ответ @CharlieZender! Я думал, что это может быть так. На самом деле нет проблем, я просто хочу, чтобы мои метаданные были как можно более последовательными :). - person Jimbo; 20.05.2019