【ある点から与えられた距離にある点を地図の上にプロットする】

球面三角法を用いると、 ある点から、距離と方位が指定された点の緯度と経度は、 以下の関係で与えられます。 ここでは、これらの式から、緯度と経度を計算します。

例として、松代(Matsushiro;東経138.2度 北緯36.5度)という場所から 距離50度にある点を地図にプロットしてみましょう。 上の式での「基準となる点の緯度と経度」が、松代の緯度と経度にあたります。

まず、A列に計算したい方位の値(度)を (ここの例では、0度から3度おきに360度までにしました)、 B,C列の1行目に、松代の経度と緯度を、 B2に計算したい距離(度)をいれておきます。

松代から角距離50度の点の緯度を計算します。 上の式に従って、C3のところに、緯度を計算する 式を入力します。基準となる位置(ここでは松代)の経度と緯度、 距離は、各行で同じなので、絶対参照にしてあります。 DEGREESは、ラヂアンを度に変換する関数です。

次に、経度を計算します。

経度を計算するとき、以下のようにATAN2を使ってください。これは、 ATAN2(X, Y)というように、X,Yと2つの値を与えて、それに相当する角度、 つまり、arctanを計算します。ASINでは、-90から90度の角度しか 調べられませんが、ATAN2は、X,Yの2つの正負の符号を利用できるので、 -180から180(あるいは0から360)度の範囲の値を調べられます。

両方ともできると、以下のようになります。

散布図で、3行目以下の経度と緯度をプロットしたものが、以下です。 各点が、松代から距離50度にある位置になります。

上の図では、経度がすべて正の値になっています。 一番最初の回に使った 世界地図の上にプロットしたいので、経度がすべて正の値というのは、 実はちょっと都合が悪いです。

そこで、180度を超えてしまう経度を、負の値に計算しましょう。 これは、IFという関数を使ってできます。

IF(条件 , 条件が正しいときに代入する式 , 条件が正しくないときに代入する式)

という風に使います。 新しい列(下ではC列)を追加して、そこに計算します。 下の場合、180度より大きい時には 値から360を引き、 そうでない時には、そのままにするようになっています。

下の行も計算すると、以下のようになります。180度を超えた値の時に 負の値になっているかを確認してください。

できた経度と緯度をプロットすると(3行目以下をプロット)、

地図にあわせるために、 プロットする範囲を、経度はー180〜+180、 緯度はー90〜+90にしています。各点が松代から距離50度にある点 に当たります。

そして、 一番最初の回 にならって、世界地図を背景に読み込むと、

松代から距離50度にある点が、どこになるのか、よくわかるように なります。