如何重新排序/重新组织 netcdf 文件中的变量属性?

Jim*_*mbo 1 shell netcdf nco

我需要将“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 ;
Run Code Online (Sandbox Code Playgroud)

我需要的输出是:

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 ;
Run Code Online (Sandbox Code Playgroud)

Cha*_*der 5

我同意 的理想位置standard_name是作为第一或第二属性。这样转储就更清晰了。您需要了解属性是按照其创建顺序存储和转储的。NCO 没有重新安排此订单的功能。最好的解决方案是更改数据集编写器,使其standard_name在所有其他属性之前创建。或者您可以做一些疯狂的事情,例如使用ncatted删除所有属性,然后按照您想要的顺序重新添加它们。