1

我想从 cru 全局数据中对一个区域进行子集化。“cmsaf”包、box_mergetime 函数可以对 CMIP5 和 CORDEX .nc 数据进行子集化,但在 CRU .nc 数据中会出现以下错误。

>library(cmsaf)
>wd<-getwd()
>box_mergetime("tmp", wd, "cru_ts4.00.1901.1910", "output", 67,98,8,38)

get file information 
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: longitude"
[1] "file name: C:/Users/Deepak/Documents/eg/ip/cru_ts4.00.1901.1910.tmp.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) : 
 Variable not found

数据文件的链接

4

2 回答 2

1

此错误消息的原因是 CRU NetCDF 数据中缺少经度和纬度的标准名称。我修复了这个问题,使用 cmsaf 1.8.0 版它现在应该可以工作了。cmsaf 包提供与 cdo 类似的功能(例如,包括 sellonlatbox、timmean、fldmean)。

于 2017-07-07T08:08:56.153 回答
0

在读入 R 之前,使用 CDO 从命令行很容易做到这一点

选择一个框:

cdo sellonlatbox,lon1,lon2,lat1,lat2 in.nc out.nc

做一个时间的意思:

cdo timmean in.nc out.nc 

做一个空格的意思:

cdo fldmean in.nc out.nc 

如果您使用的是 Ubuntu,您可以使用以下命令轻松安装 cdo

sudo apt-get install cdo 

在windows下你可以安装在CYGWIN下。(更新:而不是 cygwin,这些天在 windows 10 下简单地安装 linux 子系统要好得多,很容易做到,然后你就可以直接使用 ubuntu)

于 2017-05-21T11:45:55.833 回答