経度1度あたりの距離の計算[プログラミング]
(2014-04-14 19:30:05) by shinoda


< ページ移動: 1 2 >

今回、二点間の緯度・経度から距離を出すプログラム書いたことで、三角関数とか久しぶりに触れたのでメモっとく。

まず、地球の半径、円周について。
地球の極半径は6,356.752kmで、赤道半径は6,378.137kmだけど、今回は経度 1度あたりの距離の話なので赤道半径を「地球の半径」と考える。円周は、6,378.137 × 2 × 3.1415(近似値)で 40,073.834km。よく言われる「約 4万km」だよね。

この数値から、赤道部(緯度 0度)では、経度 1度あたりの距離は、円周を 360度で割ればいいので、40,073.834km ÷ 360度で 111.3162km。これも、「約 111km」って表現されてるのを聞いたことがある人もいるだろう。

ところで、緯度 1度あたりの距離は単純である。
極半径 6,356.752kmを元に円周をもとめ、360度で割るだけだ。6,356.752km × 2 × 3.1415 ÷ 360で 110.94297km。地球は自転の関係で赤道半径の方が大きいので、赤道部の経度 1度より短いが、まあ、約 111km だね。厳密に距離を出したのなら、緯度 1度の距離は 110.94297 を使おう。そして緯度 1度は、地球を縦方向(北極、南極を結ぶ線で)に 360等分したものなので、1度あたりの距離は経度がどこであれ変わらない。

問題は、赤道部以外の経度 1度あたりの距離である。

緯度というのは地球を赤道に並行に輪切りにしたものである。つまり、極に近づくほど輪切りにされた円周は短くなる。輪っかが小さくなっていくからな。
そうすると、経度 1度は常にその円周を 360分割したものだから、当然極に近づくほど 1度あたりの距離は短くなっていく。

計算方法は後にして、緯度の違いでどの程度経度 1度あたりの距離が変わってくるか計算すると、


となる。

自宅が経度133度にあって、目的の店は経度134度にあるよ・・・って時に、シベリアなら 38km車で走れば着くが、日本では 91kmも走らないといけないということだ。
だから、物件の緯度・経度で位置を管理し、ある物件から別の物件までの距離を計算するとき、日本国内のみを考えたサービスなら「経度 1度あたりの距離は東京の 91kmを固定でもっておいても、ギリギリなんとかなるかな」という感じだけど、世界を相手にするのなら、きちんと緯度から経度 1度あたりの距離を毎回動的に計算してやらないとどうしようもない・・・ということがわかる。

<画像:20140414_sankaku1.JPG>
そこで、どうやって「ある緯度の経度 1度あたりの距離を計算する」かだ。
何がわかれば 1度あたりの距離が出るかと言うと「その緯度で地球を輪切りにした時の円周」である。
赤道部の円周は 40,073.834kmだから、360で割って 1度あたりの距離は 111kmと出る。
東京のところで輪切りをした円の半径は約5224.66kmである。なので、5224.66 × 2 × 3.1415 で 32,810.864km が円周だ。これを 360で割ると、経度 1度あたりの距離は 91.141288km となるわけだ。

この中で、計算しないとわからないのはなんだろう?
そう、輪切りにした円の半径である。これがわからないと円周も計算できない。
その半径を求めるために、やっと、三角関数の登場である。

輪切りにした円の半径は、輪切りにした面の中心点から地球の中心点に伸びる線(高さ)と、輪切りにした面(底辺)、地球の中心点からその緯度の地表に伸びた線(斜線)で構成される直角三角形の底辺の長さ(コサイン)です。(正確には「長さ」ではなく「斜辺に対する底辺の比」だけど)
C点の角度が直角なので、B点の角度がわかれば、斜辺を 1とした時の底辺の長さが出ます。これが三角関数やね。

< ページ移動: 1 2 >


コメント(3)
TOPへ戻る

Powered by
MT4i 3.0.8