Ищем алгоритм смещения скелета или полигона в R

Я нашел несколько полезных ссылок в этом вопросе SO . Алгоритм для надувания / сдувания (смещения, буферизации) полигонов. Извините - нет сетевого доступа sos не работает, так у кого-нибудь есть реализация алгоритма скелета в R?

Изменить: я хотел бы генерировать дефлированные полигоны, как в ссылке Stackru (верхнее изображение); или как видно на http://en.wikipedia.org/wiki/Straight_skeleton.

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")

Другие вопросы по тегам