http://www.hatena.ne.jp/1105008401
人力検索はてな - (1)インプットに住所、アウトプットに径度、緯度を実現するサイト、またはプロクラム、ASPを紹介ください (2)二地点の径度、緯度情報から二点間の距離をメートル単位で算出..
既質問でありましたので紹介します。
こちらの5番の回答にあります。
こちら参考にしてみてください。
http://www2.neweb.ne.jp/wd/nobuaki/New_Homepage/okinawa703.htm
�ܓx�E�o�x�ɂ��鋗���v�Z
ここに式が載っているので参考にされてはいかがでしょう?このページに直接値を入れて計算できるみたいですが。
URLはダミーです。
数学的な計算で求まります。
出発地点の経度、緯度をそれぞれθ、φとし、到着地点の緯度、経度をそれぞれθ’、φ’とします(ラジアン)。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)
Dist = R・h
で、Distが求める距離です。
ちなみに、角度は全てラジアンに統一して計算してください。たとえば経度120度緯度30度の場合は、θ=π・120/180, φ=π・30/180という変換式で変換されます。
また、acosというのは、cosの逆関数です。
地球は球面ですから遠い距離での計算は面倒ですが、平面として考えてしまえば簡単です(自分でGPSを持って歩くような用途では十分です)。
経度や緯度が同じなら、経度や緯度と距離の関係はURLから
経度7分30秒で10km
緯度5分で10km
になります。これは直角三角形の直角を挟んだ横と縦に相当しますから、ピタゴラスの三角から簡単に斜め方向の距離が求まりますよね。
たとえば出発点に対して
経度7分30秒=450秒
緯度5分=300秒
だけ移動した場合は、2点間の距離は√(10km^2+10km^2)=10×√2=14kmになります。
実際に計算するときは経緯度が●度●分●秒だと計算が面倒なので単位を秒に戻します。
(秒)=度*60*60+分*60+秒
です。
つまりA点の秒単位の経度x、緯度yをそれぞれAx、Ayとし、同じようにB点をBx、Byとすると
Ax = Ax/450*10
By = By/300*10
距離(km)=√((Ax-Bx)^2+(Ax-By)^2)
という感じの式で計算できると思います。
Yahoo! JAPAN
先ほど回答したものです。
申し訳ありませんが、訂正をさせてください。
h = acos(g)
ではなく、
h = acos(g/R^2)
でした。
計算の内容の概略を説明すると、
地球の中心を原点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で与えられます。
ありがとうございます。早速やってみます。