Error when trying to import NetCDF to R

我的梦境 提交于 2020-01-03 17:12:26

问题


I' struggeling to open a NetCDF file in R. When I try to open it with

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

I get the following error message:

 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

the weird thing is, that another NetCDF file with Runoff-Data from the exact same simulation with the exact same datatype opens without any problems.

The difference in filesize is Runoff: 56.1 MB (58,870,472 Bytes) and harvest: 149 MB (156,968,508 Bytes). So the files are actually not too big to fail when opening. Has anybody an idea how I can trackback the error that causes this problem??

Using the RNetCDF Package I get the same problem (Error: NetCDF: Unknown file format)

From ncdump I get:

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 
}

the file can be found here: netCDF-file


回答1:


The dump from ncdump -k gives the netcdf file format as netCDF-4. I was able to open the file with the ncdf4 package since ncdf does not seem to be backwards compatible with version 4 files:

"However, the ncdf package does not provide an interface for netcdf version 4 files."

from the ncdf4 documentation.

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)

gives

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



回答2:


I think that the harvest maize netcdf file is simply corrupt, or not even a netcdf file (file name does not say anything about the real contents). Try and open it in NCView or dump using ncdump, if those tool also fails your file is corrupt or incomplete. In addition, if you want us to help, you need to make your file available.



来源:https://stackoverflow.com/questions/16443211/error-when-trying-to-import-netcdf-to-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!