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.
Sl1a
in your example. I guess itsSl1a = Line(l1a)
?