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