[英]distance between lat and long using a matrix
這是我在矩陣中的數據。 很長很長。 我想要點1和2、2和3、3和4等之間的距離。
> mat<-as.matrix(b)
> mat
buoy.LON buoy.LAT
[1,] -86.34816 43.19014
[2,] -86.34337 43.18656
[3,] -86.34013 43.18268
[4,] -86.33468 43.17484
[5,] -86.33091 43.16549
[6,] -86.32912 43.15925
[7,] -86.32786 43.14887
dis<-distGeo(mat[2,],mat[3,]) #distance in meters
did
[1] 505.1605
上面的公式很好用,但是我想做一個循環來快速做到這一點,並且我希望將數據添加到矩陣中。
我創建了這個循環
for (i in mat[1:169,]) {
distGeo(mat[i,], mat[i+1,])
}
但我總是得到回報
196
如何使for循環正常工作,如何將答案添加到矩陣中?
在安阿伯(Ann Arbor)? 我傾向於幫助。
看起來distgeo可以完全完成您想要的操作而無需循環。
distGeo(p1,p2,a = 6378137,f = 1 / 298.257223563)
爭論
p1點的經度/緯度。 可以是兩個數字的向量,2列的矩陣(第一列是經度,第二列是緯度)或SpatialPoints *對象
所以...
distGeo(mat)
#[1] 556.6029 505.1605 977.2286 1083.0404 708.3580 1157.7188
並將其作為矩陣添加到矩陣中,您需要為第一個插槽(或最后一個插槽,取決於要表示距離的點)添加一個空格:
geodists <- distGeo(mat)
mat <- cbind(mat, dists = c(NA,geodists))
mat
# dists
#[1,] -86.34816 43.19014 NA
#[2,] -86.34337 43.18656 556.6029
#[3,] -86.34013 43.18268 505.1605
#[4,] -86.33468 43.17484 977.2286
#[5,] -86.33091 43.16549 1083.0404
#[6,] -86.32912 43.15925 708.3580
#[7,] -86.32786 43.14887 1157.7188
變藍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.