[R] Point pattern to grid

Leaf Sun leaflovesun at yahoo.ca
Fri Nov 18 23:10:55 CET 2005


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

= = = = = = = = = = = = = = = = = = = =




More information about the R-help mailing list