我得到這個錯誤 「錯誤在.pointsToMatrix(P1):緯度> 90」。 誰可以解釋爲什麼以及如何解決?
錯誤告訴你,你得到了緯度值大於90,這是超出範圍:
library(geosphere)
distHaversine(c(4,52), c(13,52))
# [1] 616422
distHaversine(c(4,52), c(1,91))
# Error in .pointsToMatrix(p2) : latitude > 90
您可以只按所接受的範圍內的座標餵養distHaversine
解決這個問題。
我嘗試使用R中的distHavrsine功能,一個循環裏面 計算某些緯度和經度座標之間的距離 了幾百行。 (......),如果距離小於50米 我想它來記錄這些行
看一看的distm
功能,輕鬆地計算出你的幾百行的距離矩陣(即沒有循環)。它默認使用distHaversine
。例如,爲了獲得更接近然後65萬米數據幀行:
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
請考慮提供一個小的可重複的例子的 – akrun
可能的複製[如何找到採用半正矢兩個不同的數據幀之間的最近距離( https://stackoverflow.com/questions/44608687/how-to-find-the-nearest-distance-between-two-different-data-frames-using-haversi) –