encontrar el centroide de un grupo de puntos

27

Al buscar en la web, las soluciones para encontrar centroides de polígonos surgen con bastante frecuencia. Lo que me interesa es encontrar un centroide de un grupo de puntos. Una especie de media ponderada. Le agradecería si alguien pudiera proporcionar algunos punteros, pseudocódigo (o incluso mejor, un paquete R que ya haya resuelto esto) o enlaces sobre cómo se puede abordar este problema.

EDITAR

La convergencia ha estado en marcha (de nuevo). iant ha sugerido un método para promediar coordenadas y usarlo para el centroide. Esto es exactamente lo que pasó por mi mente cuando vi la imagen correcta en esta página web .

Aquí hay un código R simple para dibujar la siguiente figura que demuestra esto (× es el 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)

ingrese la descripción de la imagen aquí

EDITAR 2

cluster::pam()$medoidsdevuelve un medoide de un conjunto de clúster. Este es un ejemplo robado descaradamente de @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")
Roman Luštrik
fuente
1
¿Hay alguna razón por la cual el centro o centro de la distancia mínima de los puntos no será suficiente?
Andy W
1
@Roman: El gráfico es incorrecto: debe usar la media , no la mediana. Para las nubes de puntos espaciales 2D hay análogos de un centro mediano, pero este no es uno de ellos (porque depende de las coordenadas): vea stats.stackexchange.com/q/1927/919 para una discusión.
whuber
1
También sugeriría revisar el capítulo 4 del libro de crimetat , icpsr.umich.edu/CrimeStat/files/CrimeStatChapter.4.pdf . Es una introducción bastante suave, describe y muestra gráficamente por qué la mediana de las dimensiones superiores no tiene una solución única, y describe otras medidas de tendencia central y varianza de patrones de puntos espaciales.
Andy W
Esto se está volviendo cada vez más interesante. Gracias por sus respuestas. Estoy investigando el asunto.
Roman Luštrik
2
"sugirió un método para promediar coordenadas y usarlo para el centroide". Esta es, de hecho, la definición del centroide, no simplemente algo que hace una buena aproximación.
Colin K

Respuestas:

43

simplemente promedie las coordenadas X e Y (multiplique por un peso si lo desea) y ahí está su centroide.

Ian Turton
fuente
44
+1 Gran solución. También se extiende a los centroides en el esferoide (que es esencial para evitar distorsiones relacionadas con la proyección cuando los puntos se extienden sobre una gran parte del globo): primero convierta (lat, lon) a 3D (x, y, z) ( coordenadas geocéntricas), promediarlas, luego convertir el resultado nuevamente a (lat, lon) (ignorando el hecho casi inevitable de que el promedio 3D estará muy por debajo de la superficie).
whuber
He actualizado mi pregunta para reflejar su respuesta.
Roman Luštrik
1

Puede usar la función centroide del paquete de geosfera.

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

Leonardo Leite Ferraz de Campo
fuente
Bienvenido a GIS StackExchange y gracias por enviar una respuesta. Tómese un momento para revisar el Tour para conocer nuestro formato de preguntas y respuestas. Edite su respuesta para incluir más detalles, ya que generalmente buscamos respuestas más largas (no de 1-2 oraciones) para ayudar al póster original o futuros buscadores. Una modificación que puede hacer es incluir una razón por la que cree que esta herramienta será útil o un fragmento de código / capturas de pantalla.
smiller