Métrica de distância apropriada para agrupamento espacial de coordenadas geográficas

8

Eu tenho um conjunto de locais nas coordenadas geográficas e gostaria de agrupar os pontos usando o agrupamento hierárquico seguido de corte de árvores em várias "alturas" para calcular as médias de variáveis ​​agrupadas em cada local.

O agrupamento hierárquico da matriz de distância das coordenadas geográficas, presumo, pode ser uma maneira enganosa de formar grupos porque a latitude e a longitude não são igualmente espaçadas.

Posso então imaginar dois caminhos a seguir:

  1. Usando a grande distância do círculo para a métrica de distância.
  2. Convertendo as coordenadas geográficas em uma projeção igualmente escalada e, em seguida, encontrando a distância euclidiana.

Além da opção dois ser mais complicada de executar, essas abordagens são equivalentes? E qual é exatamente o significado da altura de corte de árvores nesses casos?

digitalmaps
fonte
2
Re 2: Não existe uma "projeção igualmente escalada": a matriz de distância obtida com qualquer projeção será diferente daquela que usa distâncias geodésicas. No entanto, se todos os pontos estiverem próximos - digamos, a alguns milhares de quilômetros um do outro - haverá muitas projeções cujas matrizes de distância são aproximações razoavelmente próximas da correta. Para trabalhar em toda a Terra, uma terceira opção está disponível: considere usar a matriz de distância 3D. É fácil de calcular e, em geral, deve fornecer resultados semelhantes à distância geodésica.
whuber

Respostas:

6

Obrigado a @whuber por me colocar no caminho certo aqui. Parece que não haverá respostas adicionais por vir, então resolveremos essa questão postando minhas próprias observações que podem ser úteis para outras pessoas que aprendem sobre distâncias, agrupamentos e projeções.

O código a seguir R, usando o geosphere, rgdale sppacotes demonstra que a seleção cuidadosa da projeção certo pode dar uma matriz exata distância (onde precisa é definido como a distância geodésica) quando os pontos são de até 2000 km uma da outra (eixos estão em metros).

library(sp)
library(rgdal)
library(geosphere)

## Produce 200 randomly positioned geographic coordinates
## in central Canada
xyLatLon <- data.frame(lon=(runif(200)*-30)-85,
                       lat=(runif(200)*5)+50)

## Convert to a Lambert Conformal Conic projection that should
## reasonably approximate the true distance
newProj <- "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675
            +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000
            +ellps=GRS80 +units=m +no_defs" 
xyLcc <- spTransform(SpatialPoints(xyLatLon, proj4string=CRS("+proj=longlat")), CRS(newProj))


## Find the geodesic distance matrix from geographic coordinates
## assuming the WGS84 ellipsoid
xyDist1 <- distm(xyLatLon, fun=distMeeus)

## Find the Euclidean distance matrix from the projection
xyDist2 <- as.matrix(dist(coordinates(xyLcc)))

## Find the Euclidean distance matrix of the geographic coordinates
xyDist3 <- as.matrix(dist(xyLatLon))

Gráficos dos elementos dessas três matrizes de distância são mostrados abaixo. O gráfico à esquerda indica que a projeção selecionada está altamente correlacionada com a distância geodésica ao longo da faixa de distâncias usada aqui. Enquanto o gráfico correto demonstra o erro considerável que seria esperado se coordenadas geográficas não projetadas fossem usadas.

insira a descrição da imagem aqui

digitalmaps
fonte
Oi @digitalmaps Estou tentando agrupar dados de temperatura em uma grade lat-lon regularmente espaçada. Gostaria de levar em consideração as distâncias geográficas, não apenas os valores temporários. Preciso calcular uma matriz de distância como você explica? Obrigado
pacomet 11/11