パ ソ コ ン で の 大 圏 地 図 作 画
JH1FXF 藤崎 久司
はじめに
私がこのプログラムを作成しようと思い立った時には、あまり目に付くものはありませんでしたが、最近では市販のソフトでFBなものがあるようです。 まあしかし、長い年月と莫大な工数を投入したものですので、あえてこの紙面をかりて発表させていただきます。 そもそもパソコン上でフーリエ変換(FFT)を行い、その結果を複素周波数表示するときに、周波数、実数成分、虚数成分の3次元表示とし、立体的なイメージが得られるように、見る方向を変化させるような座標変換プログラムを作成していました。
たまたまそのころ、友人が自動車電話の現地立ち上げのため、9V1、G、9K2、などにいっては、現地からQRVしており、彼の話で「JAとかW以外のカントリーでは、コンディションの予報はおろか、その国を中心とした大圏地図の入手すら困難でビーム方向を決めるのにも困る。」というようなことを聞きました。 そこでとりあえず、緯度経度を入力すれば、その地点を中心とした大圏地図を作り、できればいわゆる”グレーライン”を求め、ローバンドのコンディションの予想がある程度できるようにしたいと思い考え始めました。大圏地図なんて座標変換をすれば簡単にできると苦難の道に突入・・・
大失敗
その頃ワープロとして、LANWORDを(いやいや)使用しており、N5200が手近にあったので、5200のBASIC(PTOS)で作り始めてしまいました。 BASICであれば、グラフィックの命令は異なっても基本的な命令は同じなので、他の機種にも移植は簡単だろうと思ってましたが、驚くべきことに5200から98への変換は全く出来ないのです。(誰か知っている人がいたら教えて!LANWORDから文豪、文豪から一太郎が出来るのだから、出来るんじゃないの?) という訳で、涙を流しつつ再度98で入力し、ほぼめどがたったので今回の報告となった次第で、めでたし、めでたし。
大圏地図作成の原理
まず、緯度・経度で表現される地球表面上の位置を、地球の中心を原点とするXYZの直交座標に変換します。このときZ軸を地球の自転軸とします。一方、これから描く大圏地図の中心となる地点をZ軸が貫く(すなわち北極とする)別の直交座標系を想定します。この2つの直交座標系の変換をEuler 角を使って行います。
さて、自分が北極に立てばしめたもので、他の地点の方角は経度から、距離は緯度からなんの苦もなく計算できます。つまり変換前の座標系の北極(本当の北極)がある方角が北になります。また地球の円周を4万Kmとすれば緯度45度当りの距離は5000Kmということになります。
その他の地図投象方
蛇足としてその他の地図の変換方法について、簡単に述べておきます。 まずおなじみのMercator図法ですが、これは航海に便利なようにすべての子午線と一定の角をなす曲線が図上で直線として表される等角写像です。地球の半径をR、緯度をφ、経度をλとすると、平面上の直交座標がX、Yの点と緯度φ、経度λの点が次式の関係になります。
Mercator : X=R×λ Y=R×Logtan(π/4+φ/2)
同じく等角写像のLambert の正角円錐図法はちょっと複雑なので省略して、次に面積が正しくなる等積写像について2例変換式をのせておきます。
Eckert : X=R×k×λ Y=(R/k)sinφ
Mollweide : X=(2√2/π)Rλcos(g(φ))
Y=√2Rsin(g(φ))
但し 2g(?)+sin(2g(φ))=πsinφ
グレーライン
さて大圏地図が描けたら、次はいよいよグレーライン(昼夜の境界線)を描きます。ゾーンのどちらが昼でどちらが夜かをはっきりさせるため、昼のゾーンの中心つまり、太陽が真上にある地点と、その対照点である夜のゾーンの中心地点も求めます。
まず、地球の自転軸の傾き(23°26′21.45″)θと日付から公転角ψ、時間から経度0度を基準とした自転角θを求めます。
春分の日または秋分の日には、UTC 12:00に緯度0度、経度0度の地点(実際は海の上だが)の真上に太陽がきます。この地球の公転面を基準とした直交座標系から、自転軸を基準とした直交座標系への変換は、やはりEuler
角として、θ、ψ、を使用して求めますが、太陽の位置はYおよびZ軸が0である点に留意します。逆に、昼夜境界線はX軸が0であるY、Z平面の半径Rの円となります。これらの座標を自転軸を基準とした直交座標系に変換した後、更に自分を中心とした直交座標系に変換すれば、大圏地図の上に描画することができます。
プログラム
実際に作成したプログラムは1000行以上あるためリストは掲載しませんが、座標変換の主要な部分を掲載しておきますので参考にして下さい。関数の計算やグラフィックの手法については、色々なテクニックがあると思いますが省略させていただきます。
基本的なプログラムのフローは次のようになっております。まず最初に中心となる地点の緯度・経度を入力し、大圏地図を描画します。このグラフィック画面をGETしておきパソコンのタイマーを読み取って、日付と時刻を表示するとともに昼夜境界線を描画します。描画の更新は1分毎に行います。 地図には30度おきに等緯度線、等経度線を表示することも出来ます。 また中心地点からの方角と等距離線を表示することも可能です。更に、DXの緯度・経度を入力すれば、その方角とそこ迄の距離がわかります。 これはいづれプリフィックスによって判定するようにしたいと考えております。
プログラムをちょっと変更して、地球の裏側を通り越してまた自分の所までをひとつの大圏地図に描画すると、チョット見慣れないロングパス/ショートパスが一目でわかる奇妙な地図が出来ます。(第3図参照) また最近のRS232Cインタフェース付のローテータと接続し、アンテナの方向を表示することは簡単にできると思います。その時はビーム方向のDXカントリーをロングパス/ショートパス別あるいは距離に応じて表示すると良いのではないかと考えています。
この座標変換を使えば、衛星からみた地球を描くこともできますし、逆にその衛星が見えるエリアを地図に描くこともできます。また自分のところからの衛星の方角や仰角を求めることも可能です。 但し当局は衛星通信にあまり興味を持っていないので、実際にプログラムを作った訳ではありません。 あしからず。
終わりに
現時点では、98バージョンは完成しておりません。 希望される方には完成した時点で配布したいと思いますのでしばらくお待ち下さい。
UHFのDXer向けにグリッド・ロケータあるいはJCC・JCGナンバーと連動した国内地図(BV、HLを含む)も考えてみたいと思っています。(そんなヒマない?)
XY0RR、ZA1A,ZA1TL等QSO出来ましたか?
FBDX! CU AGN & 73 de JH1FXF
注)この文章は1991年頃にJR1ZTIの会報記事として書いたものです。
1)極座標(球座標) (r,θ,φ)
x=rsinθcosθ, y=rsinθsinφ, z=rcosθ
r=√(x2+y2+z2), φ=arctan(y/x), θ=arctan(√(x2+y2)/z)
θ,φはそれぞれ天頂角、方位角と呼ばれる。
2)Eulerの角
原点を共有する2組の直交座標系(x,y,z,),(ξ,η,ζ)に対し、z軸とζ軸とのなす角をθ、zx平面とzζ平面とのなす角をφ、xy平面とξη平面の交線OKとη軸とのなす角(あるいはzζ平面とξη平面の交線OLとξ軸とのなす角)をψとする。θ,φ,ψをEulerの角という。
一方の座標軸の他の座標系に対する方向余弦は次の通りである。
x | y | z | |
ξ | cosφcosθcosψ−sinφsinψ | sinφcosθ+cosφsinψ | −sinθcosφ |
η | −cosφcosθsinψ−sinφcosψ | −sinφcosθsinψ+cosφcosψ | sinθsinψ |
ζ | cosφsinθ | sinφsinθ | cosθ |
愛読書 岩波数学辞典より引用
以下は最新版の描画サンプルです。
第1図 JA中心の大圏地図
第2図 VKφ(マッコリー)中心の大圏地図
第3図 W6中心の大圏地図