• ベストアンサー

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

puni2の回答

  • ベストアンサー
  • puni2
  • ベストアンサー率57% (1002/1731)
回答No.2

簡略バージョン(地球を完全な球とみなす)と,精密バージョン(地球を回転楕円体とみなす)があります。 まずは簡略バージョン。 ある地点の緯度・経度をδ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) コンピュータならよいのですが,手計算で試みるのはかなり大変そうです。

参考URL:
http://vldb.gsi.go.jp/sokuchi/surveycalc/bl2salfa/bl2salfa.html
jcos
質問者

お礼

すごい・・・・。 なんかめちゃ専門知識ですね。 ありがとうございます。

関連するQ&A

  • 緯度・経度からの角度計算

    A船の所在位置の緯度・経度と、B船の所在位置の緯度・経度がわかっている場合、A船からみると、B船は今自分のどの角度にあるのか?このような各緯度・経度より2地点間の角度を計算する計算公式はないでしょうか? もしわかる方があれば、是非僕に教えてくださいよう、よろしくお願いします。(今すごく悩んでいます、もしできるなら、EXCELに取り込みたいです) もしヒントになるサイトのURLがあれば、それもかまいません。 どうぞよろしくお願いします。教えて下さい。

  • 緯度・経度から距離を計測するには、どう計算すればいいのでしょうか

    ある地点の、緯度・経度から、ある地点の、緯度・経度まで 距離を計測するには、どう計算すればいいのでしょうか? 教えてください。 よろしく、お願いいたします。

  • 緯度経度と方位・距離の計算方法

    今緯度・経度のデータを扱うプログラムを組んでいて、この計算をどうするかで悩んでいます。 この手の話は検索でそれなりにヒットするんですが、なかなかまとまった情報が得られないので教えてください。 緯度経度と方位・距離の計算について、 1) 地点Aから地点Bへの方位と距離を求める 2) ある地点から任意の方位・距離を与えた先の地点を求める と2通りありますが、これらを計算する方法はどういったものがあるでしょうか。またそれらの精度はどれぐらいなのでしょうか。 加えてですが、2点間の距離を計算する方法として「ヒュベニの式」というものがあり、割と簡単な計算でそこそこの精度が得られることを調べて知りました。 そこで、この式を拡張して距離だけでなく方位も計算したり、上の 2) を計算するといったものはないのでしょうか。 よろしくおねがいします。

  • 緯度経度について

    緯度経度について ここにある1つの緯度経度情報があります。 それに方位(16方位まで)と距離を与えて、もう1つの緯度経度情報を求めたいのですが、計算式などがのっていて参考になるサイトとかってありませんか? 宜しくお願いします。

  • 緯度経度から2点間の距離を求める

    緯度経度から2点間の距離を求めることを考えております。 QNo.249931 http://oshiete1.goo.ne.jp/qa249931.html を参考に、色々、やっておりますが、どうも、うまく行きません。 サジェスチョンをお願いいたします。 今欲しいケースは、極めて近距離です。概略2Km程度ですので、 下記を使っております。 >ある地点の緯度・経度をδ1・λ1,もう一方の地点はδ2・λ2とします。 >2地点の緯度の平均(ふつうに足して2で割る)をδ0とすると, >d=√[{(λ1-λ2)×(cosδ0)}^2 + (δ1-δ2)^2] >角度は度でもラジアンでも構いません(式中の値がすべて同じ単位であれば)。 >あとは,距離(km)=6370×dで2地点間の距離が出ます。(6370kmは地球の平均半径です) 具体例 A地点 35度10分08秒、136度53分08秒 --> 126608秒 、492788秒 B地点 35度09分46秒、136度55分01 秒 --> 126586秒、492901秒 δ1= 35*60*60+10*60+08=126608 λ1=136*60*60+53*60+08=492788 δ2= 35*60*60+09*60+46=126586 λ2=136*60*60+55*60+01=492901 δ0=(126608+126586)/2=126597 d=Sqrt(((492788-492901)*cos(126597))^2+(126608-126586)^2)=111.9221523 従って、A-B、2地点の距離(km)は、 距離(km)=6370*111.9221523=712944.1101Km 一方で、荒っぽく、1秒を緯度、経度ともに、30.9mとすると、 (地球1周≒4万km、全周=360度→360*60*60=1296000秒 (∴ 40000km*1000m/1296000秒≒30.9m) δ1-δ2=(126608-126586)=22 λ1-λ2=(492788-492901)=-113 距離(m)=sqrt(22~2+113^2)=3557.25975 この2地点間の距離は、大体3Kmと分かっておりますから、 荒っぽい計算の方が合っています。 小生の計算は、合っているとは思いますが、サジェスチョンをお願いいたします。

  • 緯度経度から距離を計算する方法

    住所から緯度経度を知り、そのデータで 距離を距離を計算する方法を 教えてください。 ネット上の、2つのサイトで計算したら、 異なる数値が算出されてしまい 困惑してります。 何卒、宜しくお願い申し上げます。

  • 指定地点(緯度・経度)から指定半径内にの地点情報(緯度・経度)を取得す

    指定地点(緯度・経度)から指定半径内にの地点情報(緯度・経度)を取得する方法がわかりません。 JavaとMySQLを使用して、DB内にデータ管理している施設情報を 現在地点(緯度・経度)と、半径距離数(100m,500m,1kmなど)を指定し、 その半径内の緯度・経度に含まれる施設情報を取得したいです。 http://d.hatena.ne.jp/ilo/20090212/1234448136 上記のサイトを参考にしていますが、距離からの度数の計算方法がわかりません。 Javaでの、距離からの度数の計算方法を教えてください。 宜しくお願いします。

  • 2点の緯度経度から2点の交点の緯度経度を求めるには?

    ある2地点の緯度経度及び方位角がわかっている場合、ある地点で2点の延長線が交わった地点の緯度経度を求めるにはどうすればよいのですか。 また、3地点の緯度経度、方位角がわかっていて、3地点の延長線上が交わらず(各2点は交わる)各2地点の交点で三角形ができたとき、この重点の緯度経度を求めるにはどうすればよいのですか。 地図上で線を引いて求めると思いますがもっと正確に求める計算式を教えてください。

  • 緯度・経度の計算方法

    地図中に緯度・経度の記入をしたいのですが、計算方法を教えて下さい。 緯度が34°5'と34°33333333'の位置とその2点間の距離が18497550mmであり、 経度が133°と133°25'の位置とその2点間の距離が22872700mmであることがわかっています。 このことから、緯度が34°4'の位置と経度が133°30'の位置を求める式を教えて下さい。

  • PHPで2地点間の緯度経度の求め方を教えてください

    PHPで2地点間の緯度経度の求め方について教えてください。 地点A(始点)と地点Z(終点)までを直線とした場合に、 地点Aから地点Z間の緯度経度を求めたいです。 求める地点Aから地点Z間の緯度経度の数は php側で吸収し地点Aから地点Z間で、1地点(N)求めた場合、 地点Aから地点Nの距離 = 地点Nから地点Zの距離 としたい。(求める地点数を等間隔にしたい) 分かっている情報としては ・地点Aと地点Zの緯度経度 ・地点Aから地点Zの距離 です。 そもそも求めることができるのでしょうか? 地点A(始点)と地点Z(終点)までの距離を求める方法等は、 サイトに載っていますが。 どなたかよろしくお願いいたします

    • ベストアンサー
    • PHP