0

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

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

4

1 回答 1

2

gBuffer(),来自优雅而强大的rgeoswidth包在其参数中接受负值,返回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")

在此处输入图像描述

于 2013-08-07T20:35:16.910 回答