获取向量中点之间的最大距离 (R)

Get maximum distance between points in a vector (R)

我有两个纬度和经度向量。我想找到点之间的最大距离。在我看来,我应该得到所有点之间的距离矩阵并得到其中的 max

到目前为止我已经完成了(对最后一个命令使用 geosphere 包):

> lat = dt[assetId == u_assetIds[1000], latitude]
> lon = dt[assetId == u_assetIds[1000], longitude]
> 
> head(cbind(lat, lon))
           lat       lon
[1,] 0.7266145 -1.512977
[2,] 0.7270650 -1.504216
[3,] 0.7267265 -1.499622
[4,] 0.7233676 -1.487970
[5,] 0.7232196 -1.443160
[6,] 0.7225059 -1.434848
> 
> distm(c(lat_1K[1], lon_1K[1]), c(lat_1K[4], lon_1K[4]), fun = distHaversine)
         [,1]
[1,] 2807.119

如何将最后一条命令转换为给我所有成对距离的矩阵?我不熟悉如何在 R 中执行此操作,在 Python.

方面有更多经验

谢谢。

简单阅读了distm的帮助文档,发现如下:

distm(x, y, fun=distHaversine)

x: longitude/latitude of point(s). Can be a vector of two numbers, a matrix of 2 columns (first one is longitude, second is latitude) or a SpatialPoints* object

y: Same as x. If missing, y is the same as x

所以你应该做的就是简单地输入你的 cbind(lat, lon) 作为第一个参数 x。这是一些测试:

> lat <- c(0.7266145, 0.7270650, 0.7267265, 0.7233676, 0.7232196, 0.7225059)
> lon <- c(-1.512977, -1.504216, -1.499622, -1.487970, -1.443160, -1.434848)
> distm(cbind(lon,lat))
          [,1]      [,2]      [,3]     [,4]      [,5]      [,6]
[1,]    0.0000  976.4802 1486.6045 2806.912 7780.5544 8708.6036
[2,]  976.4802    0.0000  512.7471 1854.601 6809.6464 7738.0538
[3,] 1486.6045  512.7471    0.0000 1349.813 6296.9308 7225.3240
[4,] 2806.9123 1854.6008 1349.8129    0.000 4987.8561 5913.8213
[5,] 7780.5544 6809.6464 6296.9308 4987.856    0.0000  928.6189
[6,] 8708.6036 7738.0538 7225.3240 5913.821  928.6189    0.0000