Dear all,

I'm having trouble interpolating a number of gridded datasets that I have. I'm 
quite new to R so any help/advice that can be offered would be much appreciated!

Firstly I'll describe my dataset. The data is a grid of the planet at 1 degree 
spatial resolution, with each grid cell containing a value describing a 
particular variable (e.g. population density) for coordinate pairs. The 
dimensions of the grid are 360col x 180row. The x-coordinates of the values 
within the grid are longitudes (from -179.5(W) to 179.5(E)) and the 
y-coordinates of the grid values are latitudes (from 89.5(N) to -89.5(S)).

What I want to do is convert this 1 degree dataset to a finer resolution of 0.5 
degrees, thereby quadrupling the number of cells within the frame (i.e. convert 
to 720 x 360 grid). I wish to have longitudinal values ranging from -179.75 to 
179.75 and latitudinal values from 89.75 to -89.75. I selected the 
'interp.surface' function in the 'fields' package to do this as it provides 
bilinear interpolation from one grid to another. I have written the following 
code to try and carry out my interpolation...

> library(fields)

> x.mat <- sprintf("%.2f", seq(from = -179.5, to = 179.5, length=360))  # 
> longitude grid values
> y.mat <- sprintf("%.2f", seq(from = 89.5, to = -89.5, length=180))  # 
> latitude grid values
> z.mat <- read.table("BF_200501.txt", colClasses="numeric")  # dataset
> z.mat <- data.matrix(z.mat)
> obj <- list(x=x.mat, y=y.mat, z=z.mat)

#Setting up new grid
> a.mat <- sprintf("%.2f", seq(from = -179.75, to = 179.75, length = 720))  # 
> longitude grid values
> b.mat <- sprintf("%.2f", seq(from = 89.75, to = -89.75, length = 360))  # 
> latitude grid values
> loc <- make.surface.grid(list(x=a.mat, y=b.mat))

#Interpolation
> new <- interp.surface(obj, loc)

However I get the following error message:
Error in x.new - min(x) : non-numeric argument to binary operator

Can anyone explain what this error message means and why I am getting it? Or 
are there other more effective ways to perform the interpolation on this sort 
of dataset? Like I said I'm new to R so any advice will be gratefully received.

Many thanks,

Andy




_________________________________________________________________
[[elided Hotmail spam]]

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

Reply via email to