是否有NCO命令来更改netcdf中变量的时间戳?



我有一个netcdf文件,其中包含每日最高气温,时间,纬度和时间。我使用nco命令成功地从netcdf的6小时温度中获得了最高温度:

ncra -y Max -mro -d time…数控max.nc"

唯一的问题是,我的时间步骤仍然分成四分之一天:

变量:

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...

我的问题是,我如何在变量fair中更改"days since 850"属性的时间步长,以整数?

谢谢!

夏洛特

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

如果有人有类似的问题,这最终为我工作:

ncap2 -s 'time=array(0,1,$time)' outmax.nc outmax2.nc
ncap2 -s 'time=array(0,1,$time)' outmin.nc outmin2.nc

相关内容

  • 没有找到相关文章

最新更新