Создание многогранника из координат вершин и смещенного многогранника
Моя цель - создать трехмерный многогранник из фрейма данных с координатами x, y и z. Я хотел бы значения, подобные SpatialPolygons
объект, но другие предложения приветствуются. Затем я хотел бы продлить gBuffer
функция 3D многогранников. gBuffer
Выдерживает расстояние от исходной геометрии до новой геометрии и является желательной характеристикой для моей конечной цели.
Код ниже иллюстрирует случай в 2D:
library(sp)
library(rgeos)
#Create a SpatialPolygons object from set of x-y coordinates
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))
plot(xy)
sp1 <- xy2SP(xy)
sp2 <- gBuffer(sp1, width=.2)
sp3 <- gBuffer(sp1, width=.4)
sp4 <- gBuffer(sp1, width=.6)
plot(sp1,xlim=c(-1,4),ylim=c(-1,3))
plot(sp2,add=T,border=2)
plot(sp3,add=T,border=2)
plot(sp4,add=T,border=2)
Моя первая попытка использовать мою функцию xy2SP
с 3 координатами вместо 2, но быстро становится сорванным. В любом случае, есть пример фрейма данных, который представляет вершины трехмерного многогранника.
library(scatterplot3d)
xyz <- data.frame(x=c(0,2,3,1,0,2,3,1),y=c(0,0,2,2,0,0,2,2),z=c(0,0,0,0,2,2,2,2))
sp<-scatterplot3d(xyz,pch=16)
sp1 <- xy2SP(xyz)