緯度経度から距離を計算

出発地点の経度、緯度をそれぞれθ、φとし、到着地点の緯度、経度をそれぞれθ’、φ’とします(ラジアン)。Rを地球の半径
(6000km程度?)とするとき、以下のような計算になる。

a = R・cosφ・cosθ

b = R・cosφ・sinθ

c = R・sinφ

d = R・cosφ’・cosθ’

e = R・cosφ’・sinθ’

f = R・sinφ’

g = a・d + b・e + c・f

h = acos(g/R^2)

Dist = R・h

で、Distが求める距離。

ちなみに、角度は全てラジアンに統一する。たとえば経度120度緯度30度の場合は、
θ=π・120/180, φ=π・30/180という変換式で変換される。

なお、acosというのは、cosの逆関数。

計算の内容の概略を説明すると、
地球の中心を原点Oにとり、出発点Aの3次元的位置を(a,b,c)、到着点Bの3次元的位置を(d,e,f)とおいて、
その2点の内積を求める(ad+be+cf)。
その内積があらわすのは、R^2・cos(∠AOB)の値となり。
これをR^2で割れば、cos(∠AOB)が得られるので、∠AOB = acos(cos(∠AOB))となる。

∠AOBがラジアンならば、弧ABの長さはR・∠AOBでで求められる。

Last update: 2008年1月13日 18:10