trova il centroide di un gruppo di punti


27

Durante la ricerca nel web, le soluzioni per la ricerca di centroidi di poligoni escono piuttosto spesso. Quello che mi interessa è trovare un centroide di un gruppo di punti. Una sorta di media ponderata. Gradirei se qualcuno potesse fornire alcuni puntatori, pseudo codice (o ancora meglio, un pacchetto R che lo ha già risolto) o collegamenti su come affrontare questo problema.

MODIFICARE

La convergenza è in corso (di nuovo). iant ha suggerito un metodo per calcolare la media delle coordinate e usarlo per il centroide. Questo è esattamente ciò che mi è passato per la testa quando ho visto l'immagine giusta su questa pagina web .

Ecco un semplice codice R per disegnare la seguente figura che dimostra questo (× è il centroide):

xcor <- rchisq(10, 3, 2)
ycor <- runif(10, min = 1, max = 100)
mx <- mean(xcor)
my <- mean(ycor)

plot(xcor, ycor, pch = 1)
points(mx, my, pch = 3)

inserisci qui la descrizione dell'immagine

MODIFICA 2

cluster::pam()$medoidsrestituisce un medoid di un set di cluster. Questo è un esempio spudoratamente rubato da @Joris Meys:

library(cluster)
df <- data.frame(X = rnorm(100, 0), Y = rpois(100, 2))
plot(df$X, df$Y)
points(pam(df, 1)$medoids, pch = 16, col = "red")

1
C'è un motivo per cui il centro o il centro medio della distanza minima dei punti non è sufficiente?
— Andy W,

1
@Roman: la grafica non è corretta: devi usare la media , non la mediana. Per le nuvole di punti spaziali 2D ci sono analoghi di un centro mediano, ma questo non è uno di questi (perché dipende dalle coordinate): vedere stats.stackexchange.com/q/1927/919 per una discussione.
— whuber

1
Suggerirei anche di consultare il capitolo 4 della cartella di lavoro di crimestat , icpsr.umich.edu/CrimeStat/files/CrimeStatChapter.4.pdf . È un'introduzione piuttosto delicata, descrive e mostra graficamente perché la mediana per dimensioni superiori non ha una soluzione unica e descrive altre misure di tendenza centrale e varianza dei modelli di punti spaziali.
— Andy W,

Questo sta diventando sempre più interessante. Grazie per le tue risposte. Sto esaminando la questione.
— Roman Luštrik,

2
"ha suggerito un metodo per calcolare la media delle coordinate e usarlo per il centroide." Questa è, in effetti, la definizione del centroide, non semplicemente qualcosa che rende una buona approssimazione.
— Colin K,

Risposte:


43

basta fare una media delle coordinate X e Y (moltiplicare per un peso se lo si desidera) e c'è il centroide.


4
+1 Ottima soluzione. Si estende anche ai centroidi sullo sferoide (che è essenziale per evitare distorsioni legate alla proiezione quando i punti sono sparsi su una grande porzione del globo): prima converti (lat, lon) in 3D (x, y, z) ( geocentriche), eseguirne la media, quindi riconvertire il risultato in (lat, lon) (ignorando il fatto quasi inevitabile che la media 3D sarà profonda sotto la superficie).
— whuber

Ho aggiornato la mia domanda per riflettere la tua risposta.
— Roman Luštrik,

1

È possibile utilizzare la funzione centroide dal pacchetto geosfera.

https://www.rdocumentation.org/packages/geosphere/versions/1.5-5/topics/centroid


Benvenuto in GIS StackExchange e grazie per aver inviato una risposta. Ti preghiamo di dedicare un momento alla revisione del Tour per conoscere il nostro formato di domande e risposte mirato. Modifica la tua risposta per includere ulteriori dettagli poiché generalmente cerchiamo risposte più lunghe (non 1-2 frasi) per aiutare il poster originale o i futuri ricercatori. Una modifica che puoi fare è includere un motivo per cui ritieni che questo strumento sia utile o uno snippet di codice / schermate.
— Smiller
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.