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
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 ...