- 締切済み
緯度経度から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と分かっておりますから、 荒っぽい計算の方が合っています。 小生の計算は、合っているとは思いますが、サジェスチョンをお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kabo-cha
- ベストアンサー率43% (403/928)
>距離(km)=6370*111.9221523=712944.1101Km がよくわかりません。 2点間の距離は111.9秒と出ていますから、 (111.922/3600)*6370*2*pi/360=3.456(km) (pi=円周率) と出ます。 ここで、(111.922/3600)は、秒を度に変換するため、(6370*2*pi)は地球の円周(緯度360度分の長さ)、360で割るのは、それを緯度1度分の長さを出すためです。 普通は度分秒で出された緯度は度に直すものですが。 蛇足かもしれませんが、より精密に計算したい場合は、地球の扁平率(赤道まわりの円周と、北極・南極を通る円周で長さがどれだけ違うかを示したもの)も考えましょう。
お礼
本件、次のように結論づけました。 式中の変数の単位は、ラジアンでしかだめ。 d=Sqrt(((longA-longB)*cos(lat0))^2+(latA-latB)^2) A地点 35度10分08秒、136度53分08秒 --> 126608秒、492788秒0.613794802, 2.389033182 B地点 35度09分46秒、136度55分01秒 --> 126586秒、492901秒0.613688147, 2.389581005 latA= (35*60*60+10*60+08)/3600=126608/3600=35.16888889-->*3.1415/180=0.613794802 longA=(136*60*60+53*60+08)=492788/3600=136.8855556-->*3.1415/180=2.389033182 latB= (35*60*60+09*60+46)=126586/3600=35.16277778-->*3.1415/180=0.613688147 longB=(136*60*60+55*60+01)/3600=492901/3600=136.9169444-->*3.1415/180=2.389581005 lat0=(126608+126586)/2/3600=126597/3600=35.16583333-->*3.1415/180=0.613741475 d=Sqrt(((2.389033182-2.389581005)*cos(0.613741475))^2+(0.613794802-0.613688147)^2)=0.00046037 従って、A-B、2地点の距離(km)は、 距離(km)=6370*0.00046037=2.9325Km ---------------------
補足
ご指摘の通り、秒を使ったのは、小生の間違いです。申し訳ない。 正しくは、下記の通りです。 δ1= (35*60*60+10*60+08)/3600=126608/3600=35.16889 λ1=(136*60*60+53*60+08)/3600=492788/3600=136.8856 δ2= (35*60*60+09*60+46)/3600=126586/3600=35.16278 λ2=(136*60*60+55*60+01)/3600=492901/3600=136.9169 δ0=(126608+126586)/2/3600=126597/3600=35.16583 d=Sqrt(((136.8856-136.9169)*cos(35.16583))^2+(35.16889-35.16278)^2)=0.026402 ------上記は、QNo.249931より引用しています---------- 従って、A-B、2地点の距離(km)は、 距離(km)=6370*0.026402=168.1805Km ここで、 dの次元は、角度です。 従って、2点間の距離は、地球の半径6370Kk*sin(角度) しかし、角度が小さいが故に、半径*角度になっているのだと理解しています。 この2点間の距離は、”距離と方位角の計算”のサイトで調べると、 http://vldb.gsi.go.jp/sokuchi/surveycalc/bl2stf.html 2,938.914(m)と出ます。 最初に参考にさせていただいた、QNo.249931での式が不完全なのではないかと、疑い始めました。