2010-09-08 24 views
8

Ho una nuvola di punti sparsi in uno spazio euclideo 2D. Vorrei calcolare l'area all'interno del poligono che collega i punti più estremi (= periferici) del cloud. In altre parole, mi piacerebbe stimare l'area coperta dalla nuvola in questo spazio. Esiste una formula in R? Grazie mille per qualsiasi risposta JulienArea coperta da una nuvola di punti con R

risposta

15

Questo è chiamato il problema dello scafo convesso; La funzione integrata R chull dovrebbe funzionare. Per contare l'area, è possibile utilizzare una formula da here.

MODIFICA: Ancora meglio; Il pacchetto splancs ha la funzione areapl. Così la funzione di risolvere il tuo problema dovrebbe essere simile a questo:

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

Per esempio:

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' lavora con classi create per gestire problemi spaziali (vedi pacchetto' sp'). Potrebbe valere la pena esplorare in quella direzione. –

Problemi correlati