Hello,

I did a mistake in my script:

> hour <- day*24; hour <- c(hour[1],cumsum(hour[1:length(hour)-1]))

should be replaced by:

> hour <- day*24; hour <- c(0,cumsum(hour[1:length(hour)-1]))

Regards


Le 05/07/2012 10:49, Pascal Oettli a écrit :
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.


______________________________________________
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