I am trying to keep spatial Lines objects intersecting a spatial polygon in R. The
intersect function from
raster package is doing actually a crop. But what I need is to keep the lines intersecting a polygon (but not to crop them). In ArcMap there was a possibility for that (something like select by attributes using a polygon).
Some code I created:
library(sp) library(raster) # from the sp vignette: l1 = cbind(c(-35,-32, -31, -18, -15, 0, 22, 24 ), c(38, 39, 41, 44, 45, 48, 55, 66)) rownames(l1) = letters[1:8] l1a = cbind(l1[,1]+25,l1[,2]+25) rownames(l1a) = letters[1:8] l2 <- l1-66 rownames(l2) = letters[1:8] l3 <- l2 - 28.2 rownames(l3) = letters[1:8] Sl1 = Line(l1) Sl2 = Line(l2) Sl3 = Line(l3) S1 = Lines(list(Sl1), ID="a") S2 = Lines(list(Sl2), ID="b") S3 = Lines(list(Sl3), ID = 'c') Sl = SpatialLines(list(S1,S2, S3)) poly <- extent(c(-45, 15, -15, 57)) poly <- as(poly, 'SpatialPolygons') plot(Sl, col = c("red", "blue", 'green')) plot(poly, add = T, lwd = 2) # here I should keep the red and blue lines intersected <- raster::intersect(Sl, poly) plot(intersected) plot(poly, add=T) # I managed only to crop the lines which is not exactly what I wanted.