2

dist(coords)ユークリッド距離を使用して距離行列を提供します。また、他のいくつかのオプションも提供します。ただし、harsine 式などのオプションは提供されません。

distHaversine()指定された 2 つの緯度/経度座標のセットについて、必要な距離 (大円) を計算します。hasersine 公式を使用して大圏距離行列を計算する既存のパッケージ/関数があるかどうか疑問に思っています。

4

1 に答える 1

6

既にお気付きかもしれませんがdistHaversine()、単一の点と 2 列の座標行列の間の距離を計算します。

2 つの座標行列間のすべてのペアワイズ距離を計算するには、 を使用apply()して行列の 1 つを行ごとに反復し、各点から他のすべての点までの距離を計算します。

library(geosphere)

## Example coordinates (here stored in two column matrices)
cc1 <- rbind(c(0,0),c(1,1))
cc2 <- rbind(c(90,0),c(90,90), c(45,45))

## Compute matrix of distances between points in two sets of coordinates
apply(cc1, 1, FUN=function(X) distHaversine(X, cc2))
#          [,1]    [,2]
# [1,] 10018754 9907452
# [2,] 10018754 9907435
# [3,]  6679169 6524042

興味深い注記:sp::spDists() ( 2 つの行列間のペアごとの距離を計算する) の内部をざっと見てみると、本質apply()に同一の に基づく戦略を使用していることがわかります。spDistsN1()いくつかの追加のエラー チェックと引数の受け渡し以外の主な違いは、 apply の場所に関数を適用することdistHaversine()です。

于 2014-05-12T17:28:57.497 に答える