[R] Point pattern to grid

Roger Bivand Roger.Bivand at nhh.no
Fri Nov 18 23:41:51 CET 2005


On Fri, 18 Nov 2005, Leaf Sun wrote:

> Hi Roger,
> 
> Thanks again for your kind help.
> 
> Yes, I still use the 200K points data applying this program but the good
> thing is I found it finished in no time.

The reply is on R-sig-geo.

> 
> The questions again here are:
> 
> 1)   >try0 <- lapply(split(as(df1, "data.frame"), res), mean)  
> 
> When I tried to replace mean to sum, error looks like this:
> 
> Error in x at data[, i, drop = FALSE] : undefined columns selected 
> 
> 2) If I just need to know the number of points in each cells, how can I modify the codes. The codes still a bit beyond me.
> 
> Thanks!
> 
> Leaf
> 
> ======= At 2005-11-18, 01:39:05 you wrote: =======
> 
> >On Thu, 17 Nov 2005, Leaf Sun wrote:
> >
> >> Dear all,
> >> 
> >> I'd like to change a point pattern to a grid of cells and use one of the
> >> variables as the output.
> >> 
> >> e.g.  The point pattern is of a window of (500*500) and several features
> >> such as pH, SoilType etc.  I like to divide it into a grid with cell
> >> size 5*5, and use the mean of the point values falling inside the cell
> >> as the output.
> >> 
> >> Is there any package in R working with this? Thanks in advance!
> >
> >This might have been better posted on R-sig-geo. Try this:
> >
> >library(sp)
> >df1 <- data.frame(x=runif(10000,0,500), y=runif(10000,0,500),
> >  z=rnorm(10000))
> >coordinates(df1) <- c("x", "y")
> >summary(df1) # SpatialPointsDataFrame
> >grd <- GridTopology(c(2.5,2.5), c(5,5), c(100,100))
> >sgrd <- SpatialGrid(grd) #SpatialGrid
> >bbox(sgrd)
> >res <- overlay(sgrd, df1)
> ># find which grid cells the points are in
> >str(res)
> >try0 <- lapply(split(as(df1, "data.frame"), res), mean)
> ># take means by grid cell - assumes all numeric columns in df1
> ># (soil type??) - maybe write a custom function to handle non-numeric 
> ># columns sensibly
> >try01 <- vector(mode="list", length=prod(slot(slot(sgrd, "grid"),
> >  "cells.dim")))
> >nafill <- rep(as.numeric(NA), ncol(as(df1, "data.frame")))
> >try01 <- lapply(try01, function(x) nafill)
> ># make a container to put the means in with the right number of columns
> >try01[as.integer(names(try0))] <- try0
> ># insert means into correct list elements
> >try1 <- data.frame(t(data.frame(try01)))
> ># transpose
> >summary(try1)
> >sgrd1 <- SpatialGridDataFrame(slot(sgrd, "grid"), try1)
> >image(sgrd1, "x")
> >image(sgrd1, "y")
> >image(sgrd1, "z")
> >
> >It goes a bit further than the short description of the sp package in the 
> >latest R-News, and will most likely be a new method for overlay in sp. If 
> >these are your 200K points, it may take a little longer ...
> >
> >> 
> >> Cheers,
> >> 
> >> Leaf
> >> 
> >> 
> >
> >-- 
> >Roger Bivand
> >Economic Geography Section, Department of Economics, Norwegian School of
> >Economics and Business Administration, Helleveien 30, N-5045 Bergen,
> >Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
> >e-mail: Roger.Bivand at nhh.no
> >
> 
> = = = = = = = = = = = = = = = = = = = =
> 
> 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no




More information about the R-help mailing list