Hi all,
I have the following issue with creating a ncdf file. Can someone suggest me how to solve? I have *.grd files for each year starting from 1980 to 2009. Each file has daily rainfall values for lon: 66.5 N to 100.5 E, lat: 6.5 N to 38.5 N. Leap years have 366 days in respective files. In order to proceed with my analysis, I am preparing a netcdf file which would consist of daily dataset for the above said years (if you think there is another simple way to compile every file into single file, let me know of it too!). I have written the following R code (though not complete yet), but the issue is that when I print variable written in the netcdf file, I get "9.96921e+36" values in place of both "NA" and some valid values (which I knew by comparing with the original file). Here is the code...! ##################################################### # define the netcdf coordinate variables -- note these have values! # ##################################################### library(ncdf) x <- dim.def.ncdf( "Lon", "degreesE", seq(66.5,len=69, by=0.5), create_dimvar=TRUE) y <- dim.def.ncdf( "Lat", "degreesN", seq(6.5,len=65, by=0.5), create_dimvar=TRUE) t <- dim.def.ncdf( "Time", "days since 1980-01-01", 1:366, unlim=TRUE) #although I have not used "t" dimension now, as it was kinda complex to start with # define the EMPTY (RF) netcdf variable origMissVal <- -1 varz = var.def.ncdf("Rainfall","millimeters", list(x,y), origMissVal, longname="Daily Rainfall Data, 0.5 x 0.5 reso. (India)", prec="double") nc.ex = create.ncdf("rf.nc", varz, verbose=FALSE) ###################### # ReadTime function # ###################### readTime <- function(f,tm,x=69,y=65,size=4,type="double",NAvalue=-999){ c = file(f,open="rb") seek(c,x*y*(tm-1)*size) m=matrix(readBin(c,type,x*y,size),x,y) #print(m) close(c) m[abs(m-NAvalue)<.Machine$double.eps] = NA m #print(m) } ############# # 1980.grd # (reading just the 1st day) ############# tm <- 1 file <- "rf0.5_1980.grd" arr1980 <- array(data=0, c(69, 65, tm)) for(i in 1:tm){ arr1980[,,i] <- matrix(readTime(file,i), 69, 65) } rm(tm) ####################### # writing data ######################## nc.ex = create.ncdf("rf.nc", varz, verbose=FALSE) put.var.ncdf(nc.ex, varz, arr1980) close.ncdf(nc.ex) ######################################################## # checking the values of the nc file and "arr1980" from the original file # ######################################################## nc.open <- open.ncdf("rf.nc") v2 <- nc.open$var[[1]] d.arr <- array(data=0, c(69, 65)) d.arr[,] <- get.var.ncdf(nc.open, v2) close.ncdf(nc.open) ################### # End ################### Thank you for your time and consideration. data file is here ... http://www.4shared.com/file/5ftWLouJ/rf05_1980.html Thanks again! -- Regards, Mahalakshmi Graduate Student [[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo