[R-sig-Geo] intersections to individual polygons
Adrian Baddeley
@dri@n@b@ddeley @ending from curtin@edu@@u
Tue Jul 3 05:44:13 CEST 2018
Agustin Lobo writes:
>>> Given an SpatialPolygons DF with i.e. 2 intersecting polygons, A and B,
>>> is there a function that would split the original polygons into "onlyA", "onlyB" and
>>> "AintersectingB" polygons?
First convert the SpatialPolygons to spatstat 'owin' objects using as.owin.
If there are two polygons A and B, you can just use intersect.owin and setminus.owin to get what you want:
AandB <- intersect.owin(A, B )
AnotB <- setminus.owin(A, B )
BnotA <- setminus.owin(B, A)
If there are several windows, make a list P containing the windows.
Then call
Z <- kaleido(P)
plot(Z, do.col=TRUE)
using the following code. The result Z is a tessellation. Extract the individual pieces as tiles(Z).
kaleido <- function(P) {
U <- union.owin(as.solist(P))
V <- lapply(P, onesplit, U=U)
Z <- Reduce(intersect.tess, V)
return(Z)
}
onesplit <- function(X, U) tess(tiles=list(A=X, NotA=setminus.owin(U, X)), W=U)
Prof Adrian Baddeley DSc FAA
John Curtin Distinguished Professor
Department of Mathematics and Statistics
Curtin University, Perth, Western Australia
[[alternative HTML version deleted]]
More information about the R-sig-Geo
mailing list