问题
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