[R] Getting polygons from contiguous grid cells having same value in sp
Roger Bivand
Roger.Bivand at nhh.no
Tue Mar 21 21:49:54 CET 2006
On Tue, 21 Mar 2006, Waichler, Scott R wrote:
>
> I have been using the sp package to deal with gridded data. I would
> like to know how to extract the vertices (x,y) of polygons that outline
> areas of like-valued cells in a grid. Here is a simple 3x3 grid:
>
> 2 2 1
> 1 2 1
> 1 1 3
>
> x <- c(1,1,1,2,2,2,3,3,3) # define a 3 x 3 array of points
> y <- c(1,2,3,1,2,3,1,2,3)
> h <- SpatialPoints(cbind(x,y)) # make these an sp object of the points
> class
> h$z<- c(1,1,2,1,2,2,1,1,3) # add field values
> gridded(h) <- T # make it a grid
>
> How could I get the vertices for the region of value=2 cells? Here is
> what they would be, in clockwise order from the upper left corner:
> (0,3) (2,3) (2,1) (1,1) (1,2) (0,2)
Perhaps R-sig-geo would be a better place to ask (it would):
x <- c(1,1,1,2,2,2,3,3,3)
y <- c(1,2,3,1,2,3,1,2,3)
h <- SpatialPoints(cbind(x,y))
z <- c(1,1,2,1,2,2,1,1,3)
h1 <- SpatialPixelsDataFrame(h, data=list(z=z))
h2 <- as.SpatialPolygons.SpatialPixels(h1)
plot(h2)
h3 <- h2[h1$z == 2]
plot(h3, add=TRUE, col="grey")
library(spgpc) # install from the sourceforge repository, CRAN Spatial
# task view link
h4 <- unionSpatialPolygons(h3, rep("z2", sum(z == 2)))
plot(h4, add=TRUE, border="red", lwd=2)
but note that you didn't allow for the coordinates being in the cell
centres, so you are off by 0.5:
> slot(slot(slot(h4, "polygons")[[1]], "Polygons")[[1]], "coords")
[,1] [,2]
[1,] 2.5 2.5
[2,] 2.5 1.5
[3,] 1.5 1.5
[4,] 1.5 2.5
[5,] 0.5 2.5
[6,] 0.5 3.5
[7,] 2.5 3.5
[8,] 2.5 2.5
and because gpclib isn't checking to see if line segments are straight
lines, there remain vertices at (2.5,2.5) and (1.5,3.5) that are strictly
unneeded.
Next time R-sig-geo?
Roger
>
> Thanks,
> Scott Waichler
> Pacific Northwest National Laboratory
> scott.waichler _at_ pnl.gov
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
--
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