簡體   English   中英

使用矩陣的經緯度之間的距離

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM