ben bu hata olsun ".pointsToMatrix (p1) 'de hata: enlem> 90". Herkes neden ve nasıl çözüleceğini açıklayabilir mi?
hata enlem kapsam dışı olan daha büyük 90 değerleri var olduğunu söyler:
library(geosphere)
distHaversine(c(4,52), c(13,52))
# [1] 616422
distHaversine(c(4,52), c(1,91))
# Error in .pointsToMatrix(p2) : latitude > 90
Yalnızca kabul aralıkları içindeki koordinatları ile distHaversine
besleyerek bu sorunu çözebilir.
bazı enlem ve boylam arasındaki mesafeyi hesaplamak bir döngü içinde R distHavrsine işlevi kullanmak için çalışıyorum bir kaç yüz satırlar için koordine eder. mesafe az 50 metre ise (...) ben
kolayca birkaç yüz satır için bir uzaklık matrisi hesaplayan distm
fonksiyonuna bir göz, var olan satırları kaydetmek istediğiniz (yani gevreksiz). Varsayılan olarak distHaversine
kullanır. Örneğin, 650.000 metre sonra yakın olan veri çerçevesi satırları almak için:
df <- read.table(sep=",", col.names=c("lon", "lat"), text="
4,52
13,52
116,39")
(d <- distm(df))
# [,1] [,2] [,3]
# [1,] 0 616422 7963562
# [2,] 616422 0 7475370
# [3,] 7963562 7475370 0
d[upper.tri(d, T)] <- NA
(idx <- which(d < 650000, arr.ind = T))
# row col
# [1,] 2 1
cbind(df[idx[, 1], ], df[idx[, 2], ])
# lon lat lon lat
# 2 13 52 4 52
küçük tekrarlanabilir örnek – akrun
Olası kopyası sağlamak için dikkate alınız ([Haversine kullanarak iki farklı veri kareler arasında en yakın mesafeyi nasıl bulunur] https://stackoverflow.com/questions/44608687/how-to-find-the-nearest-distance-between-two-different-data-frames-using-haversi) –