我在这个问题An algorithm for inflating/deflating (offsetting, buffering) polygons中找到了一些有用的链接。
对不起 - 没有'网络访问所以sos
不起作用,所以有人在R中实现了骨架算法吗?
编辑:我想在StackOverflow链接中生成缩小的多边形(顶部图像);或者如http://en.wikipedia.org/wiki/Straight_skeleton所见。
答案 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")