2010-09-08 3 views
8

У меня есть облако точек, разбросанных по 2D-евклидову пространству. Я хотел бы рассчитать площадь внутри многоугольника, связывающего самые экстремальные (= периферийные) точки облака. Другими словами, я хотел бы оценить область, охваченную облаком в этом пространстве. Есть ли формула в R? Большое спасибо за любой ответ JulienОбласть, покрытая облаком точек с R

ответ

15

Это называется проблемой выпуклого корпуса; R встроенный chull функция должна выполнять работу. Чтобы подсчитать область, вы можете использовать формулу от here.

EDIT: Еще лучше; splancs упаковка есть areapl функция. Таким образом, функция решения вашей проблемы должна выглядеть следующим образом:

cha<-function(x,y){ 
chull(x,y)->i 
return(areapl(cbind(x[i],y[i]))) 
} 

Например:

library(splancs); 
x<-rnorm(20);rnorm(20)->y; 
#Some visualization 
i<-chull(x,y);plot(x,y);polygon(x[i],y[i]); 
#The area 
cha(x,y); 
+0

'rgeos :: gArea' работает с классами, созданных для обработки пространственных задач (см пакета' sp'). Возможно, стоит изучить в этом направлении. –