在R中寻找骨架或多边形偏移算法

时间:2013-08-07 17:30:39

标签: r skeletal-mesh

我在这个问题An algorithm for inflating/deflating (offsetting, buffering) polygons中找到了一些有用的链接。 对不起 - 没有'网络访问所以sos不起作用,所以有人在R中实现了骨架算法吗?

编辑:我想在StackOverflow链接中生成缩小的多边形(顶部图像);或者如http://en.wikipedia.org/wiki/Straight_skeleton所见。

1 个答案:

答案 0 :(得分:1)

gBuffer(),来自优雅且功能强大的 rgeos 包,在其width参数中接受负值,并按给定金额返回“缩小”的SpatialPolygons

library(sp)
library(rgeos)

## Create a SpatialPolygons object from set of x-y coordinates (the hard part!)
xy2SP <- function(xy, ID=NULL) {
    if(is.null(ID)) ID <- sample(1e12, size=1)
    SpatialPolygons(list(Polygons(list(Polygon(xy)), ID=ID)),
                    proj4string=CRS("+proj=merc"))
}
xy <- data.frame(x=c(0,2,3,1,0), y=c(0,0,2,2,0))
SP <- xy2SP(xy)

## Shrink the SpatialPolygons object by supplying a negative width to gBuffer()
plot(SP)
plot(gBuffer(SP, width=-0.2), add=TRUE, border="red")

enter image description here