encontre o centróide de um conjunto de pontos

27

Ao pesquisar na web, as soluções para encontrar centróides de polígonos aparecem com bastante frequência. O que me interessa é encontrar um centróide de um conjunto de pontos. Uma média ponderada das sortes. Eu apreciaria se alguém pudesse fornecer alguns ponteiros, pseudo-código (ou melhor ainda, um pacote R que já tenha resolvido isso) ou links de como esse problema pode ser resolvido.

EDITAR

A convergência está em andamento (novamente). iant sugeriu um método para calcular coordenadas médias e usá-lo para o centróide. Foi exatamente isso que me passou pela cabeça quando vi a foto certa nesta página da web .

Aqui está um código R simples para desenhar a figura a seguir que demonstra isso (× é o centróide):

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)

insira a descrição da imagem aqui

EDIT 2

cluster::pam()$medoidsretorna um medóide de um conjunto de clusters. Este é um exemplo descaradamente roubado 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
fonte
1
Existe uma razão para o centro médio ou centro da distância mínima dos pontos não ser suficiente?
Andy W
1
@ Roman: O gráfico está incorreto: você precisa usar a média , não a mediana. Para nuvens de pontos espaciais 2D, existem análogos de um centro mediano, mas esse não é um deles (porque depende de coordenadas): consulte stats.stackexchange.com/q/1927/919 para uma discussão.
whuber
1
Eu também sugeriria verificar o capítulo 4 da pasta de trabalho crimestat , icpsr.umich.edu/CrimeStat/files/CrimeStatChapter.4.pdf . É uma introdução bastante gentil, descreve e exibe graficamente por que a mediana para dimensões mais altas não possui uma solução única e descreve outras medidas de tendência central e variação de padrões de pontos espaciais.
Andy W
Isso está ficando cada vez mais interessante. Obrigado por suas respostas. Estou investigando o assunto.
Roman Luštrik
2
"sugeriu um método para calcular coordenadas médias e usá-lo para o centróide". Essa é, de fato, a definição do centróide, não simplesmente algo que faz uma boa aproximação.
Colin K

Respostas:

43

apenas calcule a média das coordenadas X e Y (multiplique por um peso, se quiser) e o seu centróide está lá.

Ian Turton
fonte
4
+1 Ótima solução. Também se estende aos centróides no esferóide (o que é essencial para evitar distorções relacionadas à projeção quando os pontos estão espalhados por uma grande parte do globo): primeiro converta (lat, lon) para 3D (x, y, z) ( geocêntrico) coordena, calcula a média e depois converte o resultado de volta para (lat, lon) (ignorando o fato quase inevitável de que a média 3D estará bem abaixo da superfície).
whuber
Atualizei minha pergunta para refletir sua resposta.
Roman Luštrik
1

Você pode usar a função centróide do pacote geosfera.

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

Leonardo Leite Ferraz de Campo
fonte
Bem-vindo ao GIS StackExchange e obrigado por enviar uma resposta. Reserve um momento para revisar o tour e aprender sobre o nosso formato de perguntas e respostas focado. Edite sua resposta para incluir mais detalhes, pois geralmente procuramos respostas mais longas (não de uma ou duas frases) para ajudar o pôster original ou os futuros pesquisadores. Uma modificação que você pode fazer é incluir um motivo pelo qual você acha que essa ferramenta será útil ou um snippet / captura de tela de código.
Smiller