[R-sig-Geo] Counting points within polygons

Agustin Lobo alobolistas at gmail.com
Tue Oct 18 17:06:52 CEST 2011


Actually, neither alternative works if there are polygons with no
points, as those
are not kept in the output of overlay and just binding tp the table of
srdf is not possible.

The second alternative looks easier for a join, but a problems comes
from the fact that
the output data.frame of
delme4 <- overlay(meuse2[,13],srdf,fn=sum)

has different row.names than that of the input srdf:
> row.names(srdf)
[1] "r1" "r2" "r3"
> delme4 <- overlay(meuse2[,13],srdf,fn=sum)
> row.names(delme4)
[1] "X1" "X2" "X3"

which is inconvenient, as the way to join delme4 to srdf would be
using the row.names.

Agus


2011/10/18 Agustin Lobo <alobolistas at gmail.com>:
> Hi!
>
> Given a Sp Points DF and an Sp Polygons DF, I want to add a field of
> number of points for each polygon
> to the Sp Pol. DF table. This is what I'm doing (using objects from
> the help page for sp::overlay()
> (meuse is the Sp Points DF and srdf the Sp Pol. DF)
>
>> delme3 <- overlay(meuse,srdf)
>> delme3
>  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
>  [38] 1 1 1 1 1 1 2 1 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3
>  [75] 3 3 3 3 3 3 3 3 2 1 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2
> [112] 2 2 2 2 2 2 3 2 2 2 2 2 1 2 2 2 2 1 1 2 2 1 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3
> [149] 3 3 3 3 3 3 3
> newdata <- data.frame(srdf at data,nppoints=table(delme3))
> srdf2 <- srdf
> srdf2 at data <- newdata
>
> An alternative:
> newdatap <- data.frame(meuse at data, nbp=rep(1,nrow(meuse)))
> meuse2 <- meuse
> meuse2 at data <- newdatap
> delme4 <- overlay(meuse2[,13],srdf,fn=sum)
> newdata <- data.frame(srdf at data,nppoints=delme4)
> srdf2 <- srdf
> srdf2 at data <- newdata
>
> I wonder if there is a better way or, best, an standard R spatial
> function doing that already.
>
> Thanks!
>
> Agus
>



More information about the R-sig-Geo mailing list