How to define an area at +- 1 along a road?

50 Views Asked by At

Considering a geographical line defined by the following spatiallinedataframe

library(sp)
library(rgeos)

## from the sp vignette:
l1 <- cbind(c(1, 2, 3), c(3, 2, 2))
Sl1 <- Line(l1)
S1 <- Lines(list(Sl1), ID = "a")
Sl <- SpatialLines(list(S1))

## sample data: line lengths
df <- data.frame(len = sapply(1:length(Sl), function(i) gLength(Sl[i, ])))
rownames(df) <- sapply(1:length(Sl), function(i) Sl@lines[[i]]@ID)


## SpatialLines to SpatialLinesDataFrame
Sldf <- SpatialLinesDataFrame(Sl, data = df)

plot(Sldf)

I want to build a spatialpolygon that reaches exactly 1 all around this line, like an "area of influence". My first guess was to use elide() from the maptools package and shift the line by +-1, but I need to have every corner taken care of. Second guess was to build discs of array one along the line and merge them, but that sounds too much 'gas-factory' to be good.

Using gBuffer from rgeos (thanks Henrik), it works

surf <- gBuffer(spgeom=Sldf,width=1)
plot(surf,add=T)
0

There are 0 best solutions below