考虑由以下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)
我想建立一个空间多边形,在这条线的周围恰好达到1,就像一个影响区域#34;。 我的第一个猜测是使用maptools包中的elide()并将行移动+ -1,但我需要处理每个角落。第二个猜测是沿着线构建一个阵列的光盘并将它们合并,但这听起来太多了“天然气工厂”。要好。
使用rgeos中的gBuffer(感谢Henrik),它可以正常工作
surf <- gBuffer(spgeom=Sldf,width=1)
plot(surf,add=T)