2010-09-08 4 views
8

J'ai un nuage de points dispersés dans un espace euclidien 2D. Je voudrais calculer la zone à l'intérieur du polygone reliant les points les plus extrêmes (= périphériques) du nuage. En d'autres termes, je voudrais estimer la zone couverte par le nuage dans cet espace. Y a-t-il une formule dans R? Merci beaucoup pour toute réponse JulienZone couverte par un nuage de points avec R

Répondre

15

C'est ce qu'on appelle le problème de la coque convexe; R intégré chull fonction devrait faire le travail. Pour compter la zone, vous pouvez utiliser une formule de here.

EDIT: Encore mieux; Le paquet splancs a la fonction areapl. Ainsi, la fonction résoudre votre problème devrait ressembler à ceci:

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

Par exemple:

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' fonctionne avec des classes créées pour gérer les problèmes spatiaux (voir paquet' sp'). Cela pourrait valoir la peine d'explorer dans cette direction. –

Questions connexes