Hello,

A short code to include real monthly calendar to your data, similar to the one inside NCEP2 reanalysis.

library(ncdf)

lon <- seq(from=140.0251, to=146.6751, length.out=241)
lat <- seq(from=-38.975, to=-31.025, length.out=160)
x=dim.def.ncdf("Lon","degreesE",as.double(lon))
y=dim.def.ncdf("Lat","degreesN",as.double(lat))


y1 = 1800        # start of the period
y2 = 2012        # end of the period

year <- seq(y1,y2,1)
day <- c(31,28,31,30,31,30,31,31,30,31,30,31)%*%matrix(1,1,length(year)); day[2,leap.year(year)] <- 29; day <- as.vector(day)
hour <- day*24; hour <- c(hour[1],cumsum(hour[1:length(hour)-1]))
year <- rep(year,each=12)

syntime <- hour[year==1968] #change the year or change this line to include more years
t=dim.def.ncdf("Time","hours since 1800-1-1 00:00:00",syntime,unlim=TRUE)


And your "mrain" matrix should have 3 dimensions (lon x lat x time), before to save it as a NetCDF file.

Regards.


Le 04/07/2012 23:13, Jun Chen a écrit :

Hi Pascal,
        I think I figure it out.
        By doing the following, I can made "lon" & "lat" become a class of 
dim.ncdf:
         lon <- seq(from=140.0251, to=146.6751, length.out=241)
         lat <- seq(from=-38.975, to=-31.025, length.out=160)
         x=dim.def.ncdf("Lon","degreesE",as.double(lon))
          y=dim.def.ncdf("Lat","degreesN",as.double(lat))

       However, after running the script, there is a error I really unable to 
understand:
          error at data.frame(..., check.names = FALSE) :
          parameter value mean different rows 0, 31981

       If you can understand what the problem is, please as kind as offer me a 
direction.



Many thanks,
Jun




Date: Wed, 4 Jul 2012 10:39:29 +0100
From: kri...@ymail.com
Subject: Re: [R] Please help
To: chensh...@hotmail.com
CC: r-help@r-project.org

Hello,

Following lines are wrong:
x=dim.def.ncdf("Lon","degreesE",140.0251:146.6751)
y=dim.def.ncdf("Lat","degreesN",(-31.025):(-38.975))

You have 241 longitudes and 160 latitudes.
lon <- seq(from=140.0251, to=146.6751, length.out=241)
lat <- seq(from=-38.975, to=-31.025, length.out=160)

Regards



----- Mail original -----
De : Jun Chen <chensh...@hotmail.com>
À : r-help@r-project.org
Cc :
Envoyé le : Mercredi 4 juillet 2012 10h52
Objet : [R] Please help


Dear All,
           I am a research student in environment. I have only little 
programming knowledge. I am currently doing the last project about rainfall 
impact on ground water quality in an area. It happens that I have to use R to 
read rainfall data (3 dimension) from ASC file (*.asc), and then write them 
into one NCDF file (*.nc).

           I have been working very hard on study R, but I still can not fix 
the problem. Could someone please as kind as point out that what the problems 
are in my R script?

         Firstly, this is an example of data in asc file:
                     NCOLS      241

                     NROWS      160

                     XLLCORNER    140.00012207031

                     YLLCORNER  -39.000000000000

                     CELLSIZE    0.50000000000000E-01

                     NODATA_VALUE  -99.00000

                     166.30  160.87  155.23  149.33  143.83  138.52  133.29  
128.34  123.76  119.21

                     115.06  110.90  107.22  103.69  100.40  97.29  94.58  
92.15  90.00  87.91

                     86.20  84.57  83.22  81.94  81.11  80.38  79.37  78.73  
79.70  79.62
           
-----------------------------------------------------------------------------------------------------------------------



           And then this is the script I wrote:

setwd("E:/grid")

#defining dimension

x=dim.def.ncdf("Lon","degreesE",140.0251:146.6751)

y=dim.def.ncdf("Lat","degreesN",(-31.025):(-38.975))

t=dim.def.ncdf("Time","1968-01",1:12,unlim=TRUE)



#setup variable

varmr=var.def.ncdf("mr","mm",list(x,y,t),-99.00,

longname="monthly rainfall")


#create ncdf file

ncnew=create.ncdf("rainfall.nc", varmr)


#read input

files=list.files(pattern=".asc")

mrain=matrix(0:0,0,3)


for(i in files)

{rainfall=data.frame(readAsciiGrid(i))

   mrain=cbind(mrain,rainfall)

}

put.var.ncdf(ncnew, mrain)


close.ncdf(ncnew)

-------------------------------------------------------------------------------

[[elided Hotmail spam]]





Many thanks,
Jun




     [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

                                        


______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to