「東京駅から見て、大阪城はどの方角にあるんだろう?」 「2つの緯度経度の情報から、片方がもう片方から見てどの方角にあるか、角度で知りたい!」 「地図アプリみたいな計算って、Pythonでどうやってやるの?」 こんにちは! Pythonプログラミング探検隊、隊長のPythonistaです! 今回から始まる新シリーズでは、プログラミングと地理情報を組み合わせた、少し専門的で非常に面白い「地理空間計算」の世界に足を踏み入れます。 その第一歩として、今回は 「2つの地点の緯度経度から、始点から見た終点の方位角(ほういかく)を計算する方法」 を探求します。方位角とは、 真北を0度として、時計回りに測った角度 のことです。例えば、真東は90度、真南は180度、真西は270度となります。 この計算を、まずは外部ライブラリを使わずに、Pythonに標準で付属している math モジュール だけを使って実装してみます。三角関数など少し数学的な要素も出てきますが、その原理を理解することで、より深く地理計算の世界を楽しめるようになりますよ。さあ、Pythonで地球を舞台にした計算を始めましょう! 1. 計算の考え方:地球を「完全な球」として捉える 今回私たちが行う計算は、地球を「完全な球体」と仮定した 球面三角法(きゅうめんさんかくほう) という考え方に基づいています。※詳しくは wikipediaの説明 をご覧ください。 実際の地球は、赤道方向に少し膨らんだ「回転楕円体」に近い形をしていますが、多くのアプリケーションや、特に2点間の距離がそれほど長くない場合には、この「完全な球」というモデルでも非常に精度の良い近似計算が可能です。何より、このモデルは計算の基本的な原理を理解するのに最適です。 2. 方位角計算の「材料」たち 方位角を計算する数式は少し複雑に見えるかもしれませんが、必要な「材料」となるPythonの機能は非常にシンプルです。 2.1. 緯度経度とラジアン (Radian) 私たちが普段使う角度の単位は「度(°)」ですが、Pythonの math モジュールに含まれる三角関数( sin , cos など)は、角度の単位として 「ラジアン (radian)」 を使います。そのため、計算を始める前に、まず緯度と経度を度からラジアンに変換する必...
コメント
コメントを投稿