大型短波レーダーのネットワーク観測である SuperDARN(Super Dual Auroral Radar Network)の観測データを可視化するソフトウェアの使い方の解説です.
読者として想定しているのは, 福田・田口研究室に新しく配属されて, SuperDARN のデータ解析に取り組むことになった卒研生もしくは M1 です.
SuperDARN そのものについて知りたい場合は このドキュメント を参照すると良いでしょう.
データ解析ソフトの名前は Go といいます. IDL(Interactive Data Language)という言語を用いて書かれています.
オリジナルヴァージョンは 英国 Leicester 大学の Steve Milan 博士 によって開発されました.
その後, SuperDARN 各加盟国の研究機関のデータ解析環境に移植され, それぞれが機能を追加する形で発展してきています.
Steve による 英語での解説 もありますので, 英語で勉強してみたいという人はそちらを参照してみてください.
1. 可視化を始める前に
Go は Unix 上でのみ動きます. 使い始める前に, 動作環境に関するごく簡単な準備が必要です.
1.1. 福田・田口研究室データ解析用計算機(darndeb)にログイン
Go は観測データを可視化する(要はプロットを作る)ソフトウェアなので, 画像を出力する X Window 環境も手元の端末計算機に持ってこなければなりません. 例えば, darndeb01 に ssh でログインして, X window を手元の計算機に持ってくるためには, 以下のように -X というオプションをつけて ssh コマンドを実行する必要があります. また, 通信を圧縮し, 描画速度を改善するために -C というオプションもつけたほうが良いでしょう.
1.2. Go を起動する
Go を起動すると, IDL で書かれた可視化コマンド群が順次コンパイルされ, 実行可能な状態になります. ヒエログリフによる Go というタイトルが表示されて,
というコマンドプロンプトが現れたら起動は完了です.
1.3. プロット画面をつくる
このコマンドは, ウィンドウをリフレッシュしたいときはいつでも使えます. 黒板消しのようなものです. clear_page といちいち打つのが面倒なので, このコマンドは c でも代用できるように設定されています.
ウィンドウの大きさを変えたい場合は,
というコマンドを使います. 引数である window_size に好みの大きさをディスプレイのピクセルの単位で指定し, 再度 clear_page を実行するとウィンドウの大きさが変わります.
また, いくつものウィンドウを作りたい場合は set_window というコマンドを使います.
デフォルトの出力ウィンドウの番号は 1 ですが, set_window の引数である window_id に 1 より大きい数字を入れて行くとどんどん新しいウィンドウができ, そのウィンドウがアクティブ(プロットの出力先になる)になります.
もとのウィンドウ(例えばデフォルトの 1 番)をアクティブにしたい場合は,
とします. 邪魔なウィンドウを消したい場合は, 以下の dw というコマンド(delete window の意味)を用います.
また, clear_page や set_window でウィンドウを作成した場合, デフォルトでは, portrait(縦置き)のウィンドウが出てくると思いますが, これを landscape(横置き)に変更したい場合があります. そんな場合は, 以下の set_format というコマンドを用います.
landscape に変更したい場合は,
とした後で, clear_page をすれば良いことになります. clear_page をしないと変更が反映されないので注意してください. portrait に再び戻したいときは,
としてから clear_page を行います.
Output device(出力先)を印刷が可能なポストスクリプト(Postscript: PS)ファイルに変更したい場合は,「8. ポストスクリプトファイルへの出力」のところを参照してください.
2. レーダーのデータについて
観測データの読み込みについて説明する前に SuperDARN のデータについて簡単に説明します.
2.1. データファイルの種類
- rawacf file: 受信信号の自己相関関数(ACF).
受信電波のドップラースペクトルが得られる. 拡張子は .rawacf
- fitacf file: ACF をフィッティング(FITACF)したデータ.
FITACF によって導出された power, Doppler velocity, spectral width が入っている. 拡張子は .fitacf
以下の directory に 1995 年 4 月から新着分までの fitacf file が格納されています
rawacf file については, 以下の directory に格納されています.
2.2. データファイル名について
このファイルは, 2000 年 7 月 10 日 10 時 10 分 00 秒 UT から 2 時間分のデータが格納された fitacf file です.
拡張子 .fitacf の手前にある "kap" はどのレーダーのデータかを示しているレーダー ID です. 実際のレーダー名との対応は以下のようになっています.
北半球
Goose Bay gbr グーズベイ Kapuskasing kap カプスケイシング Saskatoon sas サスカツーン Prince George pgr プリンスジョージ Kodiak kod コディアック Stokkseyri sto ストックセイリ Pkkvibaer pyk シィックバイル Hankasalmi han ハンカサルミ King Salmon ksr キングサーモン Wallops wal ワロプス Hokkaido hok 北海道 Blackstone bks ブラックストーン Rankin Inlet rkn ランキンインレット Inuvik inv イヌヴィク
南半球
Halley hal ハレー Sanae san サナエ Syowa East sye 昭和基地東 Syowa South sys 昭和基地南 Keruguelen ker ケルグエレン Tiger tig タイガー Unwin unw アンウィン
これらのレーダーの一覧を表示するには以下のコマンドを使います.
また, レーダーの視野をポーラーマップ(中央が地磁気極)上に描くには以下のコマンドを用います.
例えば, 2003 年 10 月 10 日に稼働していた全てのレーダーの視野を書くには, 引数 date に日付を 8 桁で与えます.
ここでは, 磁気緯度・磁気経度で定義されたポーラーマップの上に, normal scan の時のレーダーの視野(観測開始レンジ = 180 km, ゲートの間隔 = 45 km, ゲートの数 = 75)が描かれています. 左側が北半球, 右側が南半球です. また, EISCAT レーダー(北欧にある非干渉性散乱レーダー)の場所を上書きするには以下のように eiscat というキーワードを指定します.
ここで, /eiscat としているのは, 以下のように eiscat というキーワードに 1 を指定していることと等価です.
IDL で用いるキーワードは, そのまま値を与えればよい引数とは異なり, keyword=? というような形式で指定してやる必要があります. これ以降もキーワードは頻繁に出てきますので, 少しずつ慣れてください.
さらに, 様々な光学観測機器(OMTI, NIPR, THEMIS カメラなど)のおおよその視野を上書きするには以下のようにします.
以下のように, plot_polar_fov の引数 hhmm にプロットしたい時刻を UT で与えると, 視野が磁気緯度・磁気地方時(MLT)で定義されたポーラーマップの 上に表示されます. 上側が 12 MLT, 下側が 24 MLT です. 南半球は, 北半球の極から地球を透過させて見ているように描かれています.
与える hhmm を変えると地球の自転に伴ってレーダーの位置する MLT が変わるのが分かると思います.
3. データの読み込み
データファイルを読み込んでプロットを行うのは, どのようなプロットソフトでも同じですが, Go は読んだデータをメモリに格納したままの状態でインタラクティブにプロットすることができます. 同じデータについてプロットの形式を変更するときも, 再度データの読み込みをする必要はありません. ここで言うデータは, fitacf file のことです. 通常 fitacf file は圧縮(bzip2)された形で保存されていますが, Go は自動的に解凍を行ってデータの読み込みを行いますのでここでは特に気にしなくても問題ありません.
3.1. データの読み込み
id には上で説明した 3 文字のレーダー ID を, stime には読み出すデータの開始時刻を 10 桁で, duration には読み出すデータの時間幅を指定します.
注意すべきは, レーダー ID を指定するときに single quate で囲うことを忘れないようにすることです. 例えば, 1999 年 2 月 27 日の 06 UT から 4 時間ぶんの Hankasalmi レーダーのデータを読む場合は,
とします. ごくたまに, 長い時間幅のデータ(例えば 70 時間分)を読み込む際に, 以下のような警告がでることがあります.
これは, データの読み出しに確保しているメモリの量よりも大きいデータを読もうとする場合に起こります. Go のデフォルトでは, 48 時間分のデータ量に対応したメモリを確保するようになっています. それよりも長いデータを読みたい場合は, archive コマンドを実行する前に以下の resize コマンドを実行して, 確保するメモリの量を増やしておいてください.
例えば 72 時間分のデータに見合うだけのメモリ領域を用意するには,
のようにします. ここで指定する時間は, normal scan(後述)のデータ量で定義されるもので, それよりも時間分解能の高い(単位時間あたりのデータ量が多い)特別観測のデータを読む場合には, 時間幅よりも余分にとってやる必要があるかもしれません. 但し, 100 以上の大きな値を resize の引数とすると darndeb 全体のメモリが足りなくなりますので, 上限は 100 にしてください.
3.2. データの確認
レーダー名, データファイル名, データの開始・終了時刻, 周波数, スキャンモード(後述)などが書いてあります. No beams は読み込んだデータの量を観測したビームの本数を単位として示してあります. 隣に(7%)と書いてあるのは, 用意した配列(メモリ)の 7 % にデータが入っているということを意味しています. これらの情報は, データを読み込んだ状態であれば以下のコマンドを用いていつでも確認できます.--------------------------------------------- SuperDARN radar Hankasalmi (10) Current file 19990227.0600.00.han.fitacf.bz2 (appended) Start time 0600 00s (058) End time 0959 48s (058) Frequency band 12.300 to 12.500 MHz Scan mode > normal (ccw) (150) No beams 1920 (7%) No scans 120 Maximum file size 48 hours (24672 beams) ---------------------------------------------
データを読み込んだ状態でずっと作業をしていて, データの内容を忘れてしまった場合などに用います.
3.3. スキャンモードについて
- Common Time:
全てのレーダーが共通観測を行わなければならない時間帯.
最低でもその月の全観測時間の 50 % 程度は確保されている. 通常は 20 days / month 程度.
観測開始レンジは 180 km, ゲートの間隔は 45 km, 1 ビームのゲートの数は 75.
Common Time で行われるスキャンモードと cpid の対応は以下のようになっている.
150: normal scan: 7 sec / beam, 2 min / scan 151: fast normal scan: 3 sec / beam, 1 min / scan 152: stereo normal: 7 sec / beam, 2 min / scan on channel A 153: stereo fast normal: 3 sec / beam, 1 min / scan on channel A 9050: normal sound: normal scan with frequency optimization 9060: fast normal sound: normal scan with frequency optimization - Discretionary Time:
各レーダーが勝手に観測モードを決めて良い時間帯.
衛星との共同観測などはこの時間帯を使って, 特別観測モードを走らせる.
基本的には, 観測提案を行ったグループが解析する.
cpid がマイナスである場合は Discretionary Time のデータ.
- Special Time:
全レーダーが参加して特殊な観測モードを行う時間帯. 最近は殆ど行われない.
cpid がプラスで, 150, 151, 152, 153, 9050, 9060 以外のもの.
データの開始時間や観測開始ゲート(first gate)までの距離, ゲートの間隔などが表示され, 最後にスキャンモードと cpid が表示されています. ここで(ccw)と書いてあるのは, ビームを反時計回り(counter clockwise: ccw)に掃引しているということを示しています. ちなみにビームの番号は beam 0 がもっとも西で, beam 15 がもっとも東と決められています. ビームの掃引方向が ccw であるか cw(時計回り: clockwise)であるかはレーダーによって決められています.lag to gate date and time 1st range length scan mode ------------------------------------------------------------------------ 27 Feb 1999 0600 00s 180.0 km 45.0 km normal (ccw) (150) ------------------------------------------------------------------------
3.4. STEREO レーダーのデータの読み出し
以下では, Hankasalmi レーダーの 2005 年 1 月 1 日の 10 UT から 2 時間分のデータを例に取って解説します. まず, archive コマンドで普通にデータの読み出しを行います.
上で解説したデータの情報として以下のようなものが表示されます.
ここで注意したいのは, Scan mode が 2 つ表示されているということです. cpid が -26006 のモードと 152 のモード(stereo normal)です. これは, ふたつのチャンネルのデータが両方読み込まれている状態であることを意味しています. どちらかの cpid のデータだけを取り出したい場合は, 以下の make_mono というコマンドを使います.--------------------------------------------- SuperDARN radar Hankasalmi (10) Current file 20050101.1002.00.han.fitacf.bz2 Start time 1002 00s (001) End time 1200 08s (001) Frequency band 11.000 to 11.300 MHz Scan mode unknown (-26006) > stereo normal (ccw) (152) No beams 1892 (7%) No scans 120 Maximum file size 48 hours (24672 beams) ---------------------------------------------
例えば cpid が 152 の stereo normal のデータだけを取り出す場合は, 引数 cpid に 152 を指定します.
これで, cpid が -26006 のデータはメモリから削除され, cpid が 152 のモードのデータだけが残った状態になります.
4. RTI プロットの作成
まずプロットの一番簡単な例として RTI プロットを作ってみようと思います. RTI は Range Time Intensity の略です.
その名前の通り, 横軸に時間(UT), 縦軸にレーダーからのレンジ(電波の航続距離)をとって,
特定のビームに沿った power, Doppler velocity, spectral width の 3 つの基本パラメータを時系列で表示するものです.
横軸は常に時間(UT)ですが, 縦軸は, 必要に応じてゲート, レンジ距離, 地理緯度, 磁気緯度などに変更することが可能です.
SuperDARN レーダーは 16 本のビームで扇形の視野を構成しています.
RTI プロットはひとつのビームのデータしかプロットすることができないので,
プロットするビームを随時変更し, 自分が見たい情報を引き出す必要があります.
4.1. ひとつの RTI プロットを描く
Hankasalmi レーダーには 2002 年頃から STEREO 機能が付加されましたが, ここでは 1999 年のデータを用いるので, make_mono を使って片方のチャンネルのデータを取り出す必要はありません.
RTI プロットを作成するには, 以下のコマンドを用います.
データを読み込んだあとで, まず何も考えずに以下を実行してみます.
すると, beam 0 に沿った power のデータが読んだ時間の分だけ出力されると思います. 縦軸はゲートになっているはずです. SuperDARN の Common Time の観測ではゲートは 45 km ごとに区切られており, 75 個の bin に分けられています. また, 最初のゲートは通常 180 km に設定されています.
この plot_rti というコマンドが全ての基本です. これから, プロットするビームや縦軸横軸に関する指定を加えていき, 自分の見たいプロットにしていきます.
4.2. RTI プロットの各種設定の変更
例えば, beam 9 をプロットしたい場合は以下のように set_beam でビームの指定を行ったあとで, 再度 plot_rti コマンドで RTI プロットの描画を行います.
次に, プロットするパラメータの指定を以下のコマンドで行います.
指定する parameter_name の名前は, power が 'pwr_l', Doppler velocity が 'vel', そして, spectral width が 'width_l' です. Power は電波の受信強度(dB), Doppler velocity は散乱体の視線方向 Doppler 速度(m/s: 正の値がレーダーに近づく向き, 負の値がレーダーから遠ざかる向き), spectral width は Doppler スペクトルの広がり(m/s: 散乱体の不規則性に関する指標)を表しています. 例えば, pwr_l をプロットするパラメータとして指定したいときは, 以下のようにします.
基本の 3 パラメータに関しては, 以下のようにその名前を打ってやるだけでパラメータ指定をすることも可能です.
また, プロットする時間幅も読み込んだ時間範囲の中であれば, 以下のコマンドで自由に変更できます.
UT で 06 時から 12 時までを指定したければ, 以下のようにすればよいことになります.
例えば, 日付をまたいでデータを読み込んでいて, 24 UT を超えてデータをプロットしたい場合は以下のようにします.
この例では, 20 UT から翌日の 04 UT までのデータを表示します.
次に, 縦軸の座標の指定を行います. デフォルトでは縦軸はゲート番号になっていますが, 以下のコマンドを用いて, 地理座標, 地磁気座標, レンジ距離(実際の距離)などに変更することが可能です.
地磁気座標に変換するなら以下のようにしてやればよいことになります.
地理座標に変換するなら以下のようにしてやればよいことになります.
レンジ距離に変換するなら以下のようにしてやればよいことになります.
ゲートに戻したい場合は, 以下のようにします.
縦軸を指定したら, その範囲も指定したくなります. そんな時は, 以下のコマンドを使います.
地磁気座標を指定した後に, 以下のようにしてやれば,
磁気緯度で 70 度から 80 度までの範囲に縦軸を設定できます.
SuperDARN のエコーには, 電離圏散乱エコー(Ionospheric Scatter: IS)と地面・海面散乱エコー(Ground Scatter: GS)がありますが, Go では, それらを選択的にプロットしてやることもできます. プロットするエコーの種類を決定するのは以下のコマンドです.
Ground Scatter を取り除いて Ionospheric Scatter のみをプロットしたい場合には, 以下のようにしてやります.0: 全てのエコーを プロット (IS + GS) 1: Ground Scatter のみをプロット. 2: Ionospheric Scatter のみをプロット. 3: 全てのエコーをプロット(ただし, vel をプロットするときには, GS をグレーで表現)
なお, Go のデフォルトは上記の 3 になっています.
プロットのカラースケールをデフォルトの設定から変更するのは以下のコマンドで行います.
例えば, Doppler velocity をプロットするパラメータとして設定している状態で, スケールを -2000 m/s から 2000 m/s までに変更したいときには,
とやってやれば良いわけです. デフォルトのスケールに戻すには,
としてやります.
スケールは, デフォルトでは, power については 0-30 dB, spectral width については 0-500 m/s, Doppler velocity は -1000-1000 m/s となっています. 小さい値まで細かく変動をみたいときや, 非常に大きな値までプロットする場合には, 適宜, 変更が必要になります.
特定の時刻に縦線を引きたい場合は, time_line キーワードを使います.
この例では, 0840, 0920 UT に線を引いています.
また, 横方向に線を引くこともできます. 例えば磁気緯度 75, 80 度に線を引く場合は,
のようにします. 縦軸をゲートや地理緯度, レンジ距離に変えてもこの y_line キーワードを使うことは可能です.
Go はデフォルトでは北半球のデータをプロットするように設定されているので, 南半球のデータをプロットするにはいくらかの小細工が必要です.
ここでは, 例として 1999 年 10 月 12 日の 08 UT から 4 時間分の Syowa East レーダーのデータを用います. まずは archive コマンドでレーダーのデータを読みます.
縦軸をゲートにして, 普通に plot_rti を実行すると,
何の問題もなくデータが表示されるのですが, 縦軸を磁気緯度にすると,
上下逆さまのプロット(上が赤道側)が出てくると思います. 縦軸の上側を極方向にとって見やすいプロットにするには, 以下のような手順を踏みます.
まず, 以下のコマンドを縦軸の座標設定の前に使ってやります.
これは縦軸の上下を反転させるオマジナイです. 例えば, 南半球のデータを地磁気座標で, -70 度から -80 度までプロットしようと思えば, オマジナイに引き続いて以下のような操作をします.
これで, 南半球のデータも北半球と同じように, 縦軸上側を極方向にとってプロットできます. 南半球のデータをプロットした後で, 北半球のデータをプロットしたい場合は,
とやってからプロットを行う必要があることに注意してください.
4.3 複数の RTI プロットを 1 つの画面に描画する
これまでは, plot_rti コマンドをつかって, 1 つの画面に 1 枚のパネルを書いてきましたが, 1 つの画面に複数のパネルを書くことも可能です. plot_rti の正確な使い方は以下のようです.
全 16 本のビームを 1 枚の画面に描きたいと思えば,
とします. 16 枚のパネルが 4 x 4 のフォーマットで出力されると思います.
また, 特定のビームのみを出力することも可能です. 2 行 2 列にパネルを並べて, 0, 5, 10, 15 の 4 本のビームだけをプロットするには, 以下のようにしてやります.
これらの機能を用いれば, データのプレビューをするぶんには十分かと思います. しかし, 論文や学会発表などのための清書のプロットを作成するときは, 以下のコマンドのほうが思い通りのプロットが作れるかもしれません.
このコマンドは, 1 つの画面を横方向に columns, 縦方向に rows に分割し, その column 番目と row 番目のパネルに RTI プロットを出力するというものです. 注意すべきは, column および row は 0 から始まるということです. 例えば, 画面を縦方向に 3 つに分割し, 上から pwr_l, vel, width_l をプロットしたいときは,
のようにします. info というキーワードを指定すると, ビーム番号や横軸の時間幅などの情報が表示されます. また, beam キーワードにビーム番号を指定することで, set_beam コマンドを使わないでもプロットするビームを選ぶことができます.
ここで注意してほしいのは, plot_rti_panel は clear_page をしてくれないので, 実行するまえには clear_page を使って画面をリフレッシュしておく必要があるということです.
また, お好みの位置にパネルを出したい時は, position というキーワードを用います. Device 座標で, パネルの四隅の座標を指定してやります. Device座標は, 縦横ともに, 0から1の範囲で設定されています. 具体的な使い方は以下のようになります.
ただし, position キーワードで位置の指定を行うと, info キーワードで出力される情報が正しい位置にでないので併用することは不可能です.
plot_rti_panel コマンドにおいて, no_x というキーワードを設定することが可能です. このキーワードが指定されれば, 横軸の座標が表示されません. 縦方向にパネルを連ねていく場合に, 使うことになります.
縦方向にパネルを重ねていく場合, 各パネルは縦方向にある程度の間隔をもって出力されます. このスペースが無駄と思えるならば, 各パネルを縦方向にくっつけて表示することも可能です. それには, フォーマットの指定を行う以下のコマンドを予め用いてやる必要があります.
パネルをくっつけて表示するには,
元のように, 離して表示するには,
です. 先ほどの例と同じように, 画面を縦方向に 3 分割し, 各パネルをくっつけた形で, 上から 3 つの基本パラメータをプロットするならば,
各パネルをくっつけるので, 一番上のパネルと真ん中のパネルを描くときには, 横軸を出力しない no_x キーワードを加えてやる必要があります.
plot_rti コマンドでは, カラーバーを自動的に出力してくれますが, plot_rti_panel コマンドでは, その機能はありません. よって, 別途, カラーバーを描くコマンドを使う必要があります.
カラーバーの位置は, デフォルトで, 右端に設定されていて, 縦方向の位置(row)を指定するだけでその位置に出力されます. 縦方向に 3 つに分割して, その一番上にカラーバーを描く場合は, 以下のようにします.
この場合も, row は 0 から始まることに注意してください. また, 任意の場所に Device 座標で位置を指定してカラーバーを出力することももちろん可能です. 例えば以下のようになります.
3 つの基本パラメータを縦方向に並べたプロットをカラーバー付きで表示するには,
のようにします. 以上で RTI プロットを作成する際に用いるコマンドの説明は全て終わりました.
5. 2次元の可視化 - マッププロット
RTI プロットの作り方がだいたいわかったので, 今度は 2次元の可視化をやってみます. Normal scan では, 約 2 分かけて 16 本のビームをスウィープし, 扇形の視野全域においてデータを取得します. 地理もしくは磁気緯度経度の座標軸の上に, データをスキャン毎にプロットしていきます. この形式のプロットをマッププロットと呼びます.
5.1. ひとつのマッププロットを描く
マッププロットを作成するには, 以下のコマンドを用います.
データを読み込みを行った状態で, 以下を実行してみます.
横軸磁気経度, 縦軸磁気緯度のフレームの上に, 現在指定してあるパラメータがプロットされるはずです. これが, マッププロットです. ここでは, 磁気緯度経度で座標を指定しましたが, 地理緯度経度で指定することも以下のようにすれば可能です.
プロットするパラメータの指定は RTI プロットで説明したものと全く同じです.
ここで, 横軸の経度および縦軸の緯度の範囲はレーダーごとに予め決められていますが, 随時変更することも可能です. その時は, 以下のコマンドを用います.
x軸(経度)を例えば, -20 度から 120 度までの範囲にし, y軸(緯度)を 60 度から 80 度にしたければ, 以下のようにします.
x軸, y軸のどちらかだけを指定することももちろん可能です. これでもう一度,
とやってやれば, お好みの範囲でplotを作成することができます.
次に, 何番目のスキャンをプロットするかを指定する方法を説明します. これには, 二つの方法があります. ひとつ目は, スキャンの番号で指定する方法です.
normal scan では, 2時間のデータファイルに 2 分ごとに 60 のスキャンが入っています. 読み込んだデータが何スキャン分あるかは print_file_info の No scans を参照すればわかります. 例えば, 5 番目のスキャンをプロットしたければ,
とし, その上で, plot_map を実行すれば良いことになります. スキャンの番号は 0 から数え始めることにご注意ください. 現在何番目のscanが指定されているかを知るには,
を使います.
などと情報を得ることができます.
スキャンを指定する二つ目の方法は, 時刻で指定する方法です. 4 桁で時刻を与えれば, その時刻にもっとも近いスキャンを自動的に選んでくれます.
例えば, 8 時 30 分 UT のスキャンをプロットするならば,
とします.
5.2. 情報を上書きする
使い方は以下のような感じです.
outline キーワードは視野の外枠だけを描く場合に用います.
つぎに, オーロラオーバルのモデル(Feldstein モデル)を上書きしてみます.
Kp キーワードで指定された Kp の時のオーバルのモデルを上書きします. デフォルトでは, Kp=3 になっています.
5.3. 1 つの画面に複数のマッププロットを描画する
columns と rows はそれぞれ, 横方向, 縦方向のパネルの数です. この引数を指定せずに plot_map を実行すると 1 枚のパネルになりますが, 指定すると複数のパネルにスキャンを順に進めて行きながらデータをプロットすることができます. 例えば, 2 行 2 列にパネルを並べて, 4 つの連続したスキャンをプロットするには, 以下のようにしてやります.
また, スキャンを 5 つずつスキップして(2 分で 1 スキャンとするならば, 10 分おきに 1 枚のマップというように)表示するには, 以下のようにします.
また, 視野やオーバルのモデルを上書きすることもできます.
この場合は, 視野と Kp=3 のときのオーロラオーバルを上書きしています.
これらの機能を用いれば, データのプレビューをするぶんには十分かと思います. しかし, 論文や学会発表などのための清書のプロットを作成するときは, 以下のコマンドのほうが思い通りのplotが作れるかもしれません.
このコマンドは, 1 つの画面を横方向に columns, 縦方向に rows に分割し, その column 番目と row 番目のパネルにマッププロットを出力するというものです. 注意すべきは, column および row は 0 から始まるということです. 例えば, 画面を縦方向に 3 つに分割し, 上からあるスキャンの pwr_l, vel, width_l を順にプロットしたいときは,
とやってやれば良い訳です. info キーワードを指定するとはスキャンの時刻, 周波数などが表示されます.
また, お好みの位置にパネルを出したい時は, position というキーワードを用います. Device 座標で, パネルの四隅の座標を指定してやります. Device 座標は, 縦横ともに, 0 から 1 の範囲で設定されています. 具体的な使い方は以下のようになります.
ただし, position キーワードで位置を指定した場合, info キーワードで出力される情報は正しい位置に表示されません. また, plot_map_panel では, plot_map のように自動でカラーバーが出力されませんので, 適宜, plot_colour_bar コマンドでカラーバーを出力してください.
6. 2次元の可視化 - ポーラープロット
RTI プロットやマッププロットの作り方がだいたいわかったので, 次にポーラープロットを作ってみます. このプロット形式は, 極域を地磁気極の方向から見下ろした時に見えるであろう景色を想定しています. 半径方向に磁気余緯度(90 - 磁気緯度)をとっています. 上側が常に 12 MLT(太陽方向), 下側が 24 MLT(真夜中), 右側が 06 MLT(朝側), 左側が 18 MLT(夕方側)になっています. マッププロットをより研究に実用的な形にしたものと言えます.
6.1. ひとつのポーラープロットを描く
ポーラープロットを作成するコマンドは以下です.
まず, 何も考えずに,
を実行すると, 極域全体のポーラープロットが出てくるかと思います. レーダーの周囲だけをズームしてプロットしたいときは, clip というキーワードをつけてやります.
これで, データを読み込んだレーダーの周囲だけにフォーカスしたポーラープロットがでてくると思います. 常に, 上側が太陽方向(24 MLT)であることに注意してください. また, ポーラープロットは磁気緯度と MLT の座標系でのみ利用可能です. 地理緯度と LT でプロットすることはできません.
プロットするパラメータの指定はこれまでに説明したものと全く同じです.
読み込んだデータの時間幅の範囲であれば任意のスキャンについてポーラープロットを出すことができます. 5.1 のマッププロットの箇所で説明したように, 以下のどちらかのコマンドで行います.
6.2. 情報を上書きする
レーダーの視野を上書きするには,
を用います. 普通に実行すれば,
視野の外枠が出力されます. また, beams キーワードで特定のビームのみの輪郭をトレースすることも可能です. 例えば, beam 7 だけを描きたければ,
とします.
Feldstein のオーロラオーバルモデルを上書きするには, 以下のコマンドを用います.
例えば, Kp が 2 の時のモデルを描くには,
とします. Kp キーワードをつけなければ, デフォルトの Kp=3 の時のオーバルが出力されます.
太陽天頂角(solar zenith angle)を上書きするには,
使い方は以下のようです.
大陸の形を描いてやるには,
北半球ならば,
南半球ならば,
ここで注意して欲しいのは, 南半球のポーラープロットは南半球を下から見上げているのではなく, 地球が透き通っているとして北極から南半球を見下ろしているように書いているという点です. 南北半球共に, 上側が常に 12 MLT, 下側が 24 MLT, 右側が 06 MLT, 左側が 18 MLT となります.
以上が良く使うお飾りです. これらを使うとデータの相対的な位置取りがはっきりしますが, 度が過ぎるとややこしくなるので注意が必要です.
これらの上書きコマンドは, plot_polar コマンドのキーワードとしても指定できます.
以下のように複数を同時に指定することもできます.
試してみてください.
6.3. 1 つの画面に複数のポーラープロットを描画する
columns と rows はそれぞれ, 横方向, 縦方向のパネルの数です. この引数を指定せずに plot_polar を実行すると 1 枚のパネルが出力されるだけですが, 指定すると複数のパネルにわたって連続するスキャンをプロットすることができます. 例えば, 2 行 2 列にパネルを並べて, 4 つの連続したスキャンをプロットするには, 以下のようにします.
自動的にスキャンが前へ進んでいくことがわかるかと思います. また, スキャンを 5 つずつスキップして(2 分で 1 スキャンとするならば, 10 分おきに 1 枚のパネル)表示するには, 以下のようにします.
これらの機能を用いれば, データのプレビューをするぶんには十分かと思います. しかし, 論文や学会発表などのための清書のプロットを作成するときは, 以下のコマンドのほうが思い通りのプロットが作れるかもしれません.
このコマンドは, 1 つの画面を横方向に columns, 縦方向に rows に分割し, その column 番目と row 番目のパネルにポーラープロットを出力するというものです. 注意すべきは, column および row は 0 から始まるということです. 例えば, 画面を縦方向に 3 つに分割し, 上からあるスキャンの pwr_l, vel, width_l をプロットしたいときは,
とします. info キーワードを指定するとスキャンの時刻, 周波数などが表示されます.
xrange, yrange キーワードではそれぞれ横方向, 縦方向の描画領域の範囲を指定できます. デフォルトの描画範囲は, 横(x)方向, 縦(y)方向ともに [-30,30] です. 例えば, 緯度が 80 度以上の領域を重点的に描きたい場合は,
のようにします.
好みの位置にパネルを出力したい時は, position キーワードを用います. Device 座標で, パネルの四隅の座標を指定してやります. Device 座標は, 縦横ともに, 0 から 1 の範囲で設定されています. 具体的な使い方は以下のようになります.
ただし, position キーワードで位置を指定した場合, info キーワードで出力される情報は正しい位置に表示されません. また, plot_polar_panelでは, plot_polar のように自動でカラーバーが出力されませんので, 適宜, plot_colour_bar コマンドでカラーバーを出力してください.
7. 各種ラインプロットの作成
ここでは, レーダーのデータをラインプロットで表示する方法について解説します. ここで作成するラインプロットの縦軸はすべてパラメータ(pwr_l, vel, width_l)の値です. パラメータが pwr_l にセットされているならば, pwr_lですし, vel にセットされているならば, velということになります. それに対して, 横軸は, 時間にする場合とレンジゲート(もしくは, 磁気緯度, 地理緯度, 実際のレンジ距離)にする場合があります.
7.1. 特定のセルのデータの時系列プロット
Pykkvibaer レーダーには 2002 年頃から STEREO 機能が付加されましたが, ここでは 1999 年のデータを用いるので, make_mono を使って片方のチャンネルのデータを取り出す必要はありません.
まずは, RTI プロットで状況を確認します.
ここでは Beam 7 をプロットしました. ゲート 5 から 10 にかけて連続的にエコーが得られているようです. このあたりのデータを切り出してラインプロットを作ってみたいと思います. 特定のビームの特定のゲートのデータを時系列でラインプロットには以下のコマンドを用います.
例えば, Beam 7 の Gate 5 のデータをラインプロットにするには以下のようにします.
時系列のラインプロットが出力されたと思います. パネルの一番上にデータの場所(ビーム番号・ゲート番号)が示されています. プロットをよく見ると, データポイントに塗りつぶされた四角とそうでない四角があることが分かります. 塗りつぶされた四角は Ionospheric Scatter を, そうでないものは Ground Scatter であることを示しています. ラインプロットにするエコーの種類は set_scatter コマンドで変えることができます.
Ground Scatter のみをプロットする場合,
Ionospheric Scatter のみをプロットする場合,
データポイントに描かれる四角が不要な場合は, nopoints キーワードをつけます.
以上の例では beams, ranges というキーワードでプロットするデータの場所を指定しましたが, 以下の set_cell というコマンドでも指定することができます.
例えば, beam 8 の gate 10 をプロットしたい場合は,
のようにします.
プロットする時間幅の指定は, RTI プロットのところで説明した time コマンドで行います.
プロットの縦軸の範囲は, y というキーワードで指定することができます.
もちろん set_scale コマンドで別途指定してもかまいません.
また, y 軸のある範囲以外のデータをプロットしないようにしたい場合は, exclude というキーワードを用います.
この例では, velocity が -500 m/s から 500 m/s の範囲のデータのみをプロットしています.
これまでの例では, ひとつの画面に 1 枚のパネルを描きましたが, 複数のパネルを描くことも可能です. 例えば, beam 1,2,3,4 の gate 5 のデータを 2 x 2 のパネルに描きたい場合は,
のようにします. beams, ranges キーワードに複数の場所を指定します.
また, 好みの場所にプロットをすることも可能です.
このコマンドは, 1 つの画面を横方向に columns, 縦方向に rows に分割し, その column 番目と row 番目のパネルにラインプロットを出力するというものです. 注意すべきは, column および row は 0 から始まるということです. 例えば, 画面を縦方向に 3 つに分割し, Beam 7, Gate 5 のデータを上から pwr_l, vel, width_l についてラインプロットしたいときは,
info というキーワードをつけることでプロットされているデータの場所(ビーム・ゲート)が各パネルの上に出力されます. また bar というキーワードをつけることで, パネルの横にカラーバーを描くスペースを確保することができます.
7.2. 特定のビームのデータをレンジ方向にプロット
プロットするビームを set_beam コマンドで指定したあとで, plot_range を実行します.
横軸がゲート, 縦軸がパラメータの値のプロットが出力されると思います. 横軸の時間幅, 縦軸の範囲など plot_range コマンドにキーワードとして指定できるものの殆どは plot_graph コマンドと共通です.
また, 好みの場所にプロットをすることも可能です.
このコマンドは, 1 つの画面を横方向に columns, 縦方向に rows に分割し, その column 番目と row 番目のパネルにラインプロットを出力するというものです. 注意すべきは, column および row は 0 から始まるということです. 例えば, 画面を縦方向に 3 つに分割し, Beam 7 のデータを上から pwr_l, vel, width_l についてラインプロットしたいときは,
info, bar キーワードなども plot_graph_panel と共通です.
8. ポストスクリプトファイルへの出力
fuck.ps という名前の PS ファイルに出力したければ,
のようにします. もし, filename を指定しなければ, piccy.ps という名前の PS ファイルが自動的に生成されます.
PS ファイルを開いた後で, landscape か portrait かを指定することができます(defaultはportrait). それを行うのは, 以下のコマンドです.
開いた PS ファイルは見たり印刷したりする前に, 閉じる必要があります. PS ファイルを閉じるには,
を用います.
できた PS ファイルを gv で閲覧するときは,
もし, filenameを指定しない場合は, もっとも最近開いた PS ファイルを gv で開きます.
作成した PS ファイルを印刷したいときは,
などとしてください. $ は, Go の上で UNIX のコマンドを実行するためのおまじないです.
IDL の PS フォント(helvetica)を利用したいときは, 以下のコマンドを PS ファイルを開く前に使ってください.
ps fontを使わなくするには,
としてやってください.
以下に PS ファイルへの出力の一連の過程をまとめて示します.
9. バッチ処理について
このように @ を先頭に付けて実行してやればよいだけです. 例えば, sample.go の中身は,
このファイルの中で, ; で始まる行は, コメント行になります.;--------------------------------------------------------- ; 72 時間分の memory 領域を確保する resize,72 ; 1999 年 2 月 27 日の 00 UT - 24 UT までの Hankasalmi のデータを取り込む archive,'han',1999022700,24 ; プロットするパラメータを Doppler velocity に指定 vel ; sample.psという名前の PS ファイルを Portrait で開く ps_open,'sample.ps' ps_portrait ; プロットするビームを 6 に設定 set_beam,6 ; RTI プロットの縦軸を磁気緯度にして, 範囲を 70 度から 90 度にする set_coords,'mag' map,y=[70,90] ; RTI プロットの横軸の範囲を 06 UTから 10 UT にする time,0600,1000 ; ページを一度クリアする clear_page ; RTI プロット描く, 縦線を 0840 UT にひく plot_rti_panel,1,2,0,0,time_line=[0840] ; カラーバーを出す plot_colour_bar,2,0 ; ポーラープロットを書く時間を 0800 UT に設定 go_time,0840 ; ポーラープロットを作成 plot_polar_panel,1,2,0,1,/clip ; レーダーの視野を上書き overlay_polar_beams ; Beam 6 の位置を上書き overlay_polar_beams,beams=[6,7] ; Feldstein のオーロラオーバルモデルを上書き overlay_polar_oval,Kp=4 ; 太陽天頂角を上書き overlay_polar_zenith ; カラーバーを書く plot_colour_bar,2,1 ; sample.psを閉じる ps_close ; sample.ps をプレビューする ps_preview ;---------------------------------------------------------
このようなバッチファイルを作っておくと, 作業を楽に, かつ再現性を持った形で行うことができます.