1. ホーム
  2. math

[解決済み] 複数の緯度経度座標ペアの中心点を計算する

2022-04-22 21:27:36

質問

緯度と経度の点の集合があるとき、その集合の中心点(すべての点を中心に見ることができる点)の緯度と経度を計算するにはどうしたらよいか?

EDIT: 私が使ったことのあるPythonのソリューション。

Convert lat/lon (must be in radians) to Cartesian coordinates for each location.
X = cos(lat) * cos(lon)
Y = cos(lat) * sin(lon)
Z = sin(lat)

Compute average x, y and z coordinates.
x = (x1 + x2 + ... + xn) / n
y = (y1 + y2 + ... + yn) / n
z = (z1 + z2 + ... + zn) / n

Convert average x, y, z coordinate to latitude and longitude.
Lon = atan2(y, x)
Hyp = sqrt(x * x + y * y)
Lat = atan2(z, hyp)

解決方法は?

平均化するという単純な方法では、359'から0'に戻るときに角度が変なエッジケースになります。

A SOに関する以前の質問 は、コンパスの角の集合の平均を求める問題でした。

そこで推奨されているアプローチを球座標用に拡張すると、次のようになります。

  • 各緯度経度のペアを単位長さの3Dベクトルに変換する。
  • 各ベクトルの和
  • 結果のベクトルを正規化する
  • 球座標への逆変換