尝试将NetCDF导入R时出错

时间:2013-05-08 14:24:12

标签: r netcdf data-import

我想在R中打开一个NetCDF文件。 当我尝试用

打开它时
library(ncdf)
# read in NetCDF file
maize.nc<-open.ncdf("C:/Users/Jo/Desktop/pft_harvest_maize.nc")

我收到以下错误消息:

 Error in R_nc_open: NetCDF: Unknown file format
 Error in open.ncdf("C:/Users/Jo/Desktop/pft_harvest_maize.nc") : 
   Error in open.ncdf trying to open file C:/Users/Jo/Desktop/pft_harvest_maize.nc

奇怪的是,另一个带有Runoff-Data的NetCDF文件来自完全相同的模拟,具有完全相同的数据类型,打开没有任何问题。

文件大小的差异是径流:56.1 MB(58,870,472字节)和收获:149 MB(156,968,508字节)。因此,文件实际上不会太大而无法在打开时失败。有没有人知道我如何能够追溯导致这个问题的错误?

使用RNetCDF包我遇到同样的问题(Error: NetCDF: Unknown file format

从ncdump我得到:

netcdf pft_harvest_maize {
dimensions:
        time = 199 ;
        npft = 32 ;
        latitude = 78 ;
        longitude = 79 ;
variables:
        string NamePFT(npft) ;
        int time(time) ;
                time:units = "Years" ;
        float latitude(latitude) ;
                latitude:units = "degrees_north" ;
                latitude:long_name = "latitude" ;
            latitude:standard_name = "latitude" ;
            latitude:axis = "Y" ;
    float longitude(longitude) ;
            longitude:units = "degrees_east" ;
            longitude:long_name = "longitude" ;
            longitude:standard_name = "longitude" ;
            longitude:axis = "X" ;
    float harvest(time, npft, latitude, longitude) ;
            harvest:units = "gC/m2/yr" ;
            harvest:long_name = "harvested carbon" ;
            harvest:missing_value = -9999.99f ;
            harvest:_FillValue = -9999.99f 
}

该文件可在此处找到: netCDF-file

2 个答案:

答案 0 :(得分:2)

来自ncdump -k的转储将netcdf文件格式设为netCDF-4。我能够使用ncdf4包打开文件,因为ncdf似乎不向后兼容版本4文件:

  

“但是,ncdf包不提供netcdf的接口   版本4文件。“

来自ncdf4文档。

library(ncdf4)
mycdf <- nc_open(file.choose(), verbose = TRUE, write = FALSE)
timedata <- ncvar_get(mycdf,'time')
lat <- ncvar_get(mycdf,'latitude')
long <- ncvar_get(mycdf,'longitude')
harvestdata <- ncvar_get(mycdf,'harvest')

str(harvestdata)

给出

num [1:79, 1:78, 1:32, 1:199] NA NA NA NA NA NA NA NA NA NA ...

答案 1 :(得分:1)

我认为收获玉米netcdf文件只是腐败,甚至不是netcdf文件(文件名没有说明真实内容)。尝试在NCView中打开它或使用ncdump转储,如果这些工具也失败,则您的文件已损坏或不完整。此外,如果您希望我们提供帮助,您需要提供文件。