使用气候数据运算符转换的netcdf中的日期错误

问题描述

我正在尝试使用Linux中的CDO将印度气象局的年温度和降雨量数据从.Grd转换为netcdf。但是,当我将netcdf文件导入R并检查日期时,给定年份的1月1日没有值,而下一年的值或重复日期取决于文件(我具有正确的日期总数)在每种情况下)。我想确保这是一个标签问题,并且顺序正确,而不是转换或基础数据问题。

复制步骤:

  1. http://www.imdpune.gov.in/Clim_Pred_LRF_New/Grided_Data_Download.html#

    下载1951年的二进制最高温度文件
  2. 根据示例创建带有以下文本的ctl文件(Maxtemp_MaxT_1951.ctl):

    DSET Maxtemp_MaxT_1951.Grd
    TITLE 1 degree analyzed grids
    UNDEF 99.9
    XDEF 31 LINEAR 67.5 1
    YDEF 31 LINEAR 7.5 1
    ZDEF 1 Linear 1 1
    TDEF 365 LINEAR 1JAN1994 1DY
    VARS 1
    T 0 99 DAILYTEMP
    ENDVARS
  1. 在bash中运行以下命令以生成.nc文件
    cdo -f nc import_binary Maxtemp_MaxT_1951.ctl Maxtemp_MaxT_1951.nc
  1. 将netcdf导入R
    library(raster)
    library(ncdf4)
    
    netcdf_example <- "my_path//Maxtemp_MaxT_1951.nc"
    brick_test <- brick(netcdf_example,varname="t")
    head(brick_test@z)

列出的第一个日期时间是“ 1951-01-02 23:56:02”,最后一个是“ 1952-01-01 23:56:02”

根据下面的评论,问题似乎出在栅格导入上(从CDO调用时,日期显示正确)。另外,如果有必要,我可以在Linux中进行转换,然后通过DropBox同步.nc文件,然后使用R for Windows导入。

解决方法

根据罗伯特的上述评论,运行

cdo -a setcalendar,standard ifile ofile

在CDO中解决了R导入上的问题