2010-09-08 9 views
8

bedeckt Ich habe eine Wolke von Punkten in einem 2D Euklidischen Raum verstreut. Ich möchte den Bereich innerhalb des Polygons berechnen, der die extremsten (= peripheren) Punkte der Wolke verbindet. Mit anderen Worten, ich würde gerne den Bereich der Wolke in diesem Raum schätzen. Gibt es eine Formel in R? Vielen Dank für jede Antwort JulienBereich von einer Punktwolke mit R

Antwort

15

Dies ist das konvexe Rumpfproblem genannt; R eingebaute chull Funktion sollte die Arbeit erledigen. Um den Bereich zu zählen, können Sie eine Formel aus here verwenden.

EDIT: Noch besser; splancs paket hat areapl funktion. So ist die Funktion Ihr Problem lösen sollte wie folgt aussehen:

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

Zum Beispiel:

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' arbeitet mit Klassen geschaffen, um räumliche Probleme zu behandeln (siehe Paket' sp'). Vielleicht lohnt es sich, in diese Richtung zu gehen. –

Verwandte Themen