Gracias a @whuber por ponerme en el camino correcto aquí. Parece que no habrá respuestas adicionales en el futuro, por lo que resolveré esta pregunta publicando mis propias observaciones que pueden ser útiles para que otros aprendan sobre distancias, agrupaciones y proyecciones.
El siguiente código R, mediante el geosphere
, rgdal
y sp
paquetes demuestra que la selección cuidadosa de la proyección adecuada puede dar una matriz de distancia precisa (donde precisa se define como la distancia geodésica) cuando los puntos son de hasta 2000 km entre sí (ejes están en 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))
Las gráficas de los elementos de estas tres matrices de distancia se muestran a continuación. El gráfico a la izquierda indica que la proyección seleccionada está altamente correlacionada con la distancia geodésica a través del rango de distancias utilizadas aquí. Mientras que la gráfica correcta muestra el error considerable que se esperaría si se usaran coordenadas geográficas no proyectadas.