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.