# NOT RUN {
library(raster)
library(sp)
data(meuse)
coordinates(meuse) <- ~x+y
spolys <- hexagons(meuse, res=100)
p <- raster(extent(spolys), res=800)
p[] <- runif(ncell(p)) * 10
p <- rasterToPolygons(p, fun=function(x){x > 6})
#### On polygons
sub.int <- spatial.select(p, spolys, predicate = "intersect")
sub.contains <- spatial.select(p, spolys, predicate = "contains")
sub.cov <- spatial.select(p, spolys, predicate = "covers")
sub.touches <- spatial.select(p, spolys, predicate = "touches")
sub.prox <- spatial.select(p, spolys, distance=100, predicate = "proximity")
par(mfrow=c(2,3))
plot(spolys, main="all data")
plot(p, add=TRUE)
plot(sub.int, main="intersects")
plot(p, add=TRUE)
plot(sub.contains, main="contains")
plot(p, add=TRUE)
plot(sub.cov, main="covers")
plot(p, add=TRUE)
plot(sub.touches, main="touches")
plot(p, add=TRUE)
plot(sub.prox, main="Proximity 100m distance")
plot(p, add=TRUE)
#### On points
#### note; touches is not relevant for points and intersect/contains/covers
#### yield the same results
sub.int <- spatial.select(p, meuse, predicate = "intersect")
sub.contains <- spatial.select(p, meuse, predicate = "contains")
sub.prox <- spatial.select(p, meuse, distance=200, predicate = "proximity")
par(mfrow=c(2,2))
plot(meuse, main="all data", pch=20)
plot(p, add=TRUE)
plot(sub.int, main="intersects", pch=20)
plot(p, add=TRUE)
plot(sub.contains, main="contains", pch=20)
plot(p, add=TRUE)
plot(sub.prox, main="Proximity 200m distance", pch=20)
plot(p, add=TRUE)
#### For rook or queen polygon contingency
spolys <- as(sf::st_make_grid(sf::st_sfc(sf::st_point(c(0,0)),
sf::st_point(c(3,3))), n = c(3,3)), "Spatial")
spatial.select(spolys, predicate = "contingency")
spatial.select(spolys, predicate = "contingency", neighbors = "rook")
# }
Run the code above in your browser using DataLab