尝试在R中导入NetCDF时出现错误

4
我在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

奇怪的是,另一个具有相同模拟和相同数据类型的径流数据的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个回答

3
使用 ncdump -k 命令导出的结果表明该 netcdf 文件格式为 netCDF-4。由于 ncdf 不兼容版本 4 文件,我能够使用 ncdf4 包打开该文件:

“但是,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 ...

使用ncdf4对我很有效...在win 64位下安装包有点复杂,但现在我可以读取文件了。谢谢! - Johannes

1
我认为收获玉米的netcdf文件可能已经损坏,或者根本不是一个netcdf文件(文件名并没有提供任何关于实际内容的信息)。尝试使用NCView打开它,或使用ncdump进行转储。如果这些工具也失败了,则说明你的文件损坏或不完整。此外,如果您想让我们帮助您,您需要提供可用的文件。

@ Paul Hiemstra。我已经转储了该文件,但是从结果的解释来看,它是一个ncdf文件。请参见我上面的编辑。我还包括了一个链接,您可以在其中找到该文件。 - Johannes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接