【问题标题】:Modifying variable attribute of netcdf file修改 netcdf 文件的变量属性
【发布时间】:2020-09-11 15:09:50
【问题描述】:

我正在尝试修改 netcdf 文件中时间变量的日历类型,以从 GREGORIAN 更改为 gregorian,因为我认为当我尝试在以后的分析中访问时间变量时会导致问题。

        double Time(Time) ;
                Time:long_name = "Time" ;
                Time:units = "days since 1979-01-01 00:00:00" ;
                Time:cartesian_axis = "T" ;
                Time:calendar_type = "GREGORIAN" ;
                Time:calendar = "GREGORIAN" ;
                Time:bounds = "Time_bounds" ;
                Time:_ChunkSizes = 1 ;

        double Time(Time) ;
                Time:long_name = "Time" ;
                Time:units = "days since 1979-01-01 00:00:00" ;
                Time:cartesian_axis = "T" ;
                Time:calendar_type = "gregorian" ;
                Time:calendar = "gregorian" ;
                Time:bounds = "Time_bounds" ;
                Time:_ChunkSizes = 1 ;

我曾尝试使用 nco 函数 nccat,但我似乎无法获得正确的语法。我试过了:

ncatted -a 'calendar,time,o,c,"gregorian"' Ocean_v_1994_01.nc out.nc

【问题讨论】:

  • 当您使用它时,我建议将standard_name 属性添加到Time 变量,属性值为time

标签: netcdf nco cdo-climate


【解决方案1】:

我找到了一种使用 R 和 ncdf4 包的方法。解决方案是:

library(ncdf4)
mydata <- nc_open("Ocean_v_1994_01.nc", write = TRUE)

ncatt_put(mydata, "Time", 'calendar', attval = 'gregorian', prec = 'text')
ncatt_put(mydata, "Time", 'calendar_type', attval = 'gregorian', prec = 'text')

# check result 
ncatt_get(mydata, "Time")

nc_sync(mydata)
nc_close(mydata)

【讨论】:

    【解决方案2】:

    您在 ncatted 参数周围放置的单引号会导致双引号变成文字,这不是您想要的。您的参数中没有文字、空格或特殊字符,因此只需删除所有引号:

    ncatted -a calendar,time,o,c,gregorian Ocean_v_1994_01.nc out.nc

    【讨论】:

    • 非常感谢!稍微更改为 Time 而不是 time 以使其正常工作
    【解决方案3】:

    我认为您也可以使用 cdo setcalendar 命令对其进行排序:

     cdo setcalendar,proleptic_gregorian in.nc out.nc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 2014-04-14
      • 2021-12-06
      • 1970-01-01
      相关资源
      最近更新 更多