緯度・経度からExcelで距離を計算したいのですが、わかりやすい方法を教えてください。わかっているのは出発点・到着点の緯度・経度です。式の名前とか出所も一緒に教えていただけるとありがたいです。お願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/10/18 15:48:05
  • 終了:--

回答(5件)

id:osarivan No.1

osarivan回答回数1511ベストアンサー獲得回数32005/10/18 15:54:02

ポイント16pt

http://www.hatena.ne.jp/1105008401

人力検索はてな - (1)インプットに住所、アウトプットに径度、緯度を実現するサイト、またはプロクラム、ASPを紹介ください (2)二地点の径度、緯度情報から二点間の距離をメートル単位で算出..

既質問でありましたので紹介します。

こちらの5番の回答にあります。

こちら参考にしてみてください。

id:T-pon No.2

T-pon回答回数423ベストアンサー獲得回数32005/10/18 15:55:22

ポイント16pt

http://www2.neweb.ne.jp/wd/nobuaki/New_Homepage/okinawa703.htm

�ܓx�E�o�x�ɂ��鋗���v�Z

ここに式が載っているので参考にされてはいかがでしょう?このページに直接値を入れて計算できるみたいですが。

id:yamanity No.3

yamanity回答回数22ベストアンサー獲得回数02005/10/18 16:02:46

ポイント16pt

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の逆関数です。

id:nitscape No.4

nitscape回答回数526ベストアンサー獲得回数02005/10/18 16:04:16

ポイント30pt

地球は球面ですから遠い距離での計算は面倒ですが、平面として考えてしまえば簡単です(自分で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)


という感じの式で計算できると思います。

id:hamabe

ありがとうございます。早速やってみます。

2005/10/18 19:47:49
id:yamanity No.5

yamanity回答回数22ベストアンサー獲得回数02005/10/18 16:14:42

ポイント16pt

先ほど回答したものです。

申し訳ありませんが、訂正をさせてください。

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で与えられます。

コメントはまだありません

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません