OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

緯度・経度からの距離計算

  • 困ってます
  • 質問No.249931
  • 閲覧数4531
  • ありがとう数64
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 77% (27/35)

ある地点の緯度・経度ともう一方のある地点の緯度・経度が
わかっているとして、その各緯度・経度より2地点間の距離を
計算できないのでしょうか?
計算方法を知りたいのです。
なんか公式みたいなものはないのでしょうか?
なんかヒントになるサイトのURLでもかまいません。
お願いします。教えて下さい。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル14

ベストアンサー率 57% (1002/1731)

簡略バージョン(地球を完全な球とみなす)と,精密バージョン(地球を回転楕円体とみなす)があります。

まずは簡略バージョン。
ある地点の緯度・経度をδ1・λ1,もう一方の地点はδ2・λ2とします。
経度は,東経を正,西経を負。緯度は,北緯を正,南緯を負とします。(実は逆でもよい。要は,東と西,北と南で,それぞれ符号が異なっていればよいのです)
また,2地点間の角度(地球の中心から見た時の)をdとします。
すると,球面三角法の公式より,
cos d = (sinδ1)×(sinδ2) + (cosδ1)×(cosδ2)×cos(λ1-λ2)
となります。ここに緯度・経度をあてはめて,cos dが求まります。
cos dから角度dが逆三角関数cos^-1で求まります。電卓のcos^-1キーを使うと便利です。ただし,dはラジアンで求めてください。(緯度・経度は度単位でかまいません)
あとは,距離(km)=6370×dで2地点間の距離が出ます。(6370kmは地球の平均半径です)

やや精密バージョンは,No.1の参考URLに出ています。楕円体であるため,地心緯度と地理緯度にわずかながら差が生じているので,それを補正します。

以上の方法の問題点は,2地点間が近い時に誤差が大きくなることです。
たとえば,2地点間の距離が1kmのとき,d=0.9999999877となりますが,末尾を四捨五入してd=0.999999988とすると,距離=0.54kmとなってしまいます。
これはcosを使っているからです(cosは角度が小さいとほとんど変化しませんね)。

そのような場合は,次の近似式が使えます。
2地点の緯度の平均(ふつうに足して2で割る)をδ0とすると,
d=√[{(λ1-λ2)×(cosδ0)}^2 + (δ1-δ2)^2]
角度は度でもラジアンでも構いません(式中の値がすべて同じ単位であれば)。

もっと精密な方法は,国土地理院のページに載っています。(参考URL)
コンピュータならよいのですが,手計算で試みるのはかなり大変そうです。
お礼コメント
jcos

お礼率 77% (27/35)

すごい・・・・。
なんかめちゃ専門知識ですね。
ありがとうございます。
投稿日時 - 2002-04-10 12:07:14
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 56% (1020/1799)

「緯度 経度 距離計算」で検索をかけたら以下のサイトが見つかりましたがどうでしょうか。 http://www2.neweb.ne.jp/wd/nobuaki/New_Homepage/okinawa703.htm ...続きを読む
「緯度 経度 距離計算」で検索をかけたら以下のサイトが見つかりましたがどうでしょうか。

http://www2.neweb.ne.jp/wd/nobuaki/New_Homepage/okinawa703.htm
お礼コメント
jcos

お礼率 77% (27/35)

どうもありがとうございます。参考にさせていただきます。
投稿日時 - 2002-04-10 12:03:30


  • 回答No.3
レベル14

ベストアンサー率 57% (1002/1731)

補足です。 距離が近い時の救済策として,cosがだめならsinを使おう!という方法もあります。 以下,2地点の緯度の差をΔδ,経度の差をΔλと書きます。 回答No.2で書いた公式を少し変形すると, sin^2 (d/2) = sin^2 (Δδ/2) + (cosδ1)×(cosδ2)×sin^2 (Δλ/2) これを用いてsin^2(d/2)を求め,ルートをとって,arcsinをとって(ラ ...続きを読む
補足です。
距離が近い時の救済策として,cosがだめならsinを使おう!という方法もあります。

以下,2地点の緯度の差をΔδ,経度の差をΔλと書きます。
回答No.2で書いた公式を少し変形すると,
sin^2 (d/2) = sin^2 (Δδ/2) + (cosδ1)×(cosδ2)×sin^2 (Δλ/2)
これを用いてsin^2(d/2)を求め,ルートをとって,arcsinをとって(ラジアンで),2倍すれば,dが求まります。

回答No.2で書いた近似式は,2地点を結ぶ線を長方形の対角線とみなしているわけです。
いいかえれば,λ1-λ2に対応する距離は,どちらの地点の緯度でも同じとみなしています。
したがって,2地点の緯度差が大きくなると,誤差も増えます。
しかし,ここで書いた方法は,近似式ではなく,もとの式と同値です(証明してみてください)ので,2地点が南北に離れていても使えます。
お礼コメント
jcos

お礼率 77% (27/35)

ありがとうございます。
投稿日時 - 2002-04-10 12:07:44
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ