Terima kasih kepada @whuber karena mengatur saya di jalur yang benar di sini. Sepertinya tidak akan ada jawaban tambahan yang akan datang, jadi akan menyelesaikan pertanyaan ini dengan memposting pengamatan saya sendiri yang mungkin berguna untuk orang lain yang belajar tentang jarak, pengelompokan, dan proyeksi.
Kode berikut R, menggunakan geosphere
, rgdal
dan sp
paket menunjukkan bahwa hati-hati memilih proyeksi yang tepat dapat memberikan matriks jarak yang akurat (di mana akurat didefinisikan sebagai jarak geodesik) ketika poin hingga 2000 km terpisah (sumbu berada di meter).
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))
Plot elemen-elemen dari tiga matriks jarak ini ditunjukkan di bawah ini. Plot di sebelah kiri menunjukkan bahwa proyeksi yang dipilih sangat berkorelasi dengan jarak geodesik melintasi rentang jarak yang digunakan di sini. Sementara plot yang tepat menunjukkan kesalahan besar yang akan diharapkan jika koordinat geografis yang tidak diproyeksikan akan digunakan.