2010-09-08 17 views
8

Tengo una nube de puntos dispersos en un espacio euclidiano 2D. Me gustaría calcular el área dentro del polígono que une los puntos más extremos (= periféricos) de la nube. En otras palabras, me gustaría estimar el área cubierta por la nube en este espacio. ¿Hay una fórmula en R? Muchas gracias por cualquier respuesta JulienÁrea cubierta por una nube de puntos con R

Respuesta

15

Esto se conoce como el problema del casco convexo; La función incorporada de R chull debe hacer el trabajo. Para contar el área, puede usar una fórmula del here.

EDITAR: Aún mejor; splancs paquete tiene areapl función. Por lo que la función de resolver su problema debería tener este aspecto:

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

Por ejemplo:

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' trabaja con clases creadas para manejar los problemas espaciales (véase el paquete' sp'). Puede valer la pena explorar en esa dirección. –

Cuestiones relacionadas