all-sky airglow imager visualization routine: go-asi
last updated on October 1st, 2006
Canada の Nunavut 州 Resolute Bay (地理緯度 74.73, 地理経度 265.07, 磁気緯度 82.9, 磁気経度 302.7) に設置されている高感度全天大気光 Imager OMTI (Optical Mesosphere Thermosphere Imager) の観測 data を可視化する IDL routines の使い方を説明します.
観測 data は, OMTI @ Resolute で公開されています. また, 他の OMTI の data については 名古屋大学の site で公開されています.
1. startup the routines
まず, go を起動します. そののちに, imager_routines.pro という component を以下のようにして compile してあげてください. 必要な IDL routines が順に compile されます.
Go> .run imager_routines
これで必要な IDL の procedure が全て compile されて使用可能な状態になります. 解析環境を start させるには以下の command を使います.
start_asi
prompt で, 以下のように実行すると prompt が Go-asi > に変わり, 解析準備が整います.
Go > start_asi
参考) この imager_routines.pro の実体は,
/radar01/work/Imager/Visualize/imager_routines.pro
にあります. 自分でこの procedure を customize したい場合は, 適宜自分の directory に copy して編集してください.
2. load the data
OMTI は, 複数の分光 filter を用いて, 異なる波長の光を別々に捕らえることができます. 我々が主として用いるのは, 緑色の光 (green-line: 557.7 nm) と赤い光 (red-line: 630.0 nm) の観測 data です. 前者は高度 110 km 程度, 後者は高度 250 km 程度で発光していると考えられています.
観測 data を読み出す前に, どちらの波長の data を可視化するかを設定します. その設定には以下の command を用います.
set_flt_asi, 'red' | 'gre'
もし, 557.7 nm の green line の data を読みたい場合は, 以下のようにします.
Go-asi > set_flt_asi, 'gre'
630.0 nm の red line の data を読みたい場合は, 以下のようにします.
Go-asi > set_flt_asi, 'red'
ただし, 起動した直後は, 自動的に red-line を読み出すように設定されているので, 最初に red-line の data の読み出しを行う場合は, 以上の操作は必要ありません.
続いて, 観測 data の読み出しを行います. 観測 data の読み出しには以下の command を用います.
file_asi, 'date'
例えば, 2005 年 1 月 11 日の data を読み込むには, 以下のようにします. 日付は, 文字列変数で与えなければならないので, 前後の quotation を忘れないように気をつけてください.
Go-asi > file_asi, '20050111'
読み出した画像の file 名が順に画面上を流れて行き, 最後に読み出した data に関する情報が表示されます.
これで、2 分毎に撮像された大気光 data が計算機の memory の上に乗りました. go-asi では, data を計算機の memory の上に置いたまま, 様々な作業を行っていきます. plot の形式を変えたい時にも, 改めてデータを読み込むことはしません.
ただし, red-line と green-line の data を同時に memory に読み込むことはできません. 解析する波長を変える場合は, 必ず set_flt_asi を使って解析波長の変更を行ったうえで, file_asi を用いて data の loading を行ってください.
3. navigating images
通常の解析では green-line もしくは red-line の画像を用います. どちらの波長についても基本的には 2 分毎に画像が取得されています. ただし, green-line は, 背景光の測定を行う際に撮像を skip する関係で, 20 分に 1 度撮像が行われないことを覚えておいてください.
まずは, どの時間に画像が取られているかを確認してみます. 以下の command を用います.
print_asi_info, image_info=image_info
まず keyword を何も指定せずに実行すると以下のような情報が得られます. これは data の読み出すために file_asi という command を使ったとき, 最後に表示された message と同じものです.
--------------------------------------------------------------------------- Optical Mesosphere Thermosphere Imager (OMTI) Resolute Bay --------------------------------------------------------------------------- Date 20050309 (068) Current Data Type RAW-data Filter Type C61 (557.7 nm) No. Available Images 216 images Current Image 0075th image Current Image Time 0230 01s UT Time limits for Keogram 0000 UT to 2400 UT ---------------------------------------------------------------------------それぞれの意味している内容を簡単にまとめると以下のようになります.
Date: 読み込んだ data の日付. この例では 2005 年 3 月 9 日. () の中は通し日 (Julian Day). Current Data Type: data の type. RAW, ABS, AVG, DEV の 4 種類がある. 詳細は 7. を参照のこと. Filter Type: 読み込んだ data の波長 (C61: green-line, C62: red-line ....) No. Available Images: 読み込まれた画像 file の数 Current Image: 現在の image. plot command を実行して表示される image. Current Image Time: Current image に対応する時刻 (UT). Time limits for Keogram: keogram で表示を行う場合の横軸 (UT) の範囲.
また, 以下のように image_info という keyword を指定すると,
Go-asi > print_asi_info, /image_info
各時間についての画像の有無の一覧が表示されます. image がある場合はその時刻 (UT) が, 無い場合は no image という文字列が表示されます. red-line は 2 分毎に連続的に撮像されているので, 観測が行われている間は連続的に data が得られますが, green-line は 20 分に 1 度撮像をお休みするので, 10 枚毎に欠測があることに注意してください.
以下 (4. 以降) では, 各時刻に取得された個々の画像を 2 次元的に表示する手順を解説しますが, どの時刻の画像を表示するかを指定する場合には以下の command を用います.
go_time_asi, hhmm
例えば 1400 UT の画像へ jump するには以下のようにします.
Go-asi > go_time_asi, 1400
もし, 画像が取得されていない時刻 (太陽または月が視野中にある) に jump しようとした場合は以下のような警告が出て, 移動ができませんので注意してください.
WARNING: Image out of range (i.e. you choose daytime!)
上の警告は, 「太陽がまだ空にある時間に jump しようとしていますよ」ということを意味しています (太陽光が視野内に入る場合は当然大気光観測はできない).
4. plot the data in all-sky image
data の読み込みが終わったら、何にも考えずに以下の command を実行してみてください。
Go-asi > plot_asi
一枚の panel に data が全天画像として表示されたかと思います. ラフに上方向が北, 下が南となっています.
もちろん, 複数の panel を並べて表示することも可能です.
plot_asi, xmaps, ymaps
xmaps に横方向の panel の数, ymaps に縦方向の panel の数を指定してやります. 以下のように実行すると,
Go-asi > plot_asi, 2, 3
2 行 3 列の panel 群 (計 6 枚) が出てくるはずです. この command を実行しているときは, 現在の画像 (Current Image) は, increment (1 つずつ進んでいく) していっていることに注意してください. また, xmaps, ymaps に何も指定しない場合は, 上の最初の例のように 1 枚の panel が表示されます.
お好みの位置に panel を 1 枚だけ表示するには以下を用います.
plot_asi_panel, xmaps, ymaps, xmap, ymap
xmaps, ymaps はそれぞれ横方向, 縦方向の panel の数です. xmap, ymap ではその何番目に panel を置くかを指定します. 画面を上下・左右に 3 分割 (9 panel 分) して, 真ん中に panel を plot する場合は以下のようにします.
Go-asi > plot_asi_map_panel, 3, 3, 1, 1
xmap, ymap は, 0 から始まることに注意してください.
5. plot the data in geographic and geomagnetic coordinates
全天画像はあくまで観測点から空を見上げたときにどう見えるかを表示したものです. 大気光の発光高度を仮定し, 全天画像 data を緯度・経度の map 上に展開することで, 他の観測と比較したりすることが可能となり, Science に使える data となります. ここでは, その展開の仕方を解説します.
まずは, 何も考えずに以下を実行します.
Go-asi > plot_asi_map
縦軸に地理緯度, 横軸に地理経度をとった座標系の上に data が表示されました.
上書きされているのは, imager の天頂からの角度 (zenith angle) です. 全天 Imager なので, 天頂 (0度) から地平線 (90 度) まで data を取得することができますが, 一般には 地平線に近い部分の data (zenith angle 80 度以上) は誤差が大きく, 信頼度が落ちると考えられています.
default では, red-line の場合, 発光高度は 250 km, green-line の場合は, 110 km と仮定して全天画像 data の展開を行っていますが, この仮定高度を変えることももちろん可能です. 以下の command を用います.
file_asi_fov, alt=alt
alt という keyword を指定しなければ, 上で説明した default の発光高度が仮定されます. 以下のように, alt に, 自分の求める発光高度を入れてcommand を実行すれば,
Go-asi > file_asi_fov, alt=180
この例では, 発光高度を 180 km に設定しました. この設定を行ったうえで, 再度 plot_asi_map を実行すれば, default とは異なった結果が得られるはずです.
4. 説明した plot_asi と同じで, 以下のようにして, 複数の panel を plot することが可能です.
plot_asi_map, xmap, ymap
2 行 3 列で panel を並べたい場合は以下のようにします.
Go-asi > plot_asi_map, 2, 3
また, 横軸・縦軸を地理座標ではなく磁気座標にしたい場合は以下の command を実行してから plot_asi_map を再度実行します.
set_coords_asi, 'geog' | 'mag'
磁気座標にする場合は,
Go-asi > set_coords_asi, 'mag'
地理座標に戻す場合は,
Go-asi > set_coords_asi, 'geog'
お好みの位置に panel を 1 枚だけ表示するには以下を用います.
plot_asi_map_panel, xmaps, ymaps, xmap, ymap
xmaps, ymaps はそれぞれ横方向, 縦方向の panel の数です. xmap, ymap ではその何番目に panel を置くかを指定します. 画面を上下に分割して, 上半分に panel を plot する場合は以下のようにします.
Go-asi > plot_asi_map_panel, 1, 2, 0, 0
xmap, ymap は, 0 から始まることに注意してください.
6. plot the data in polar panel
何にも考えずに以下の command を実行してみてください.
Go-asi > plot_asi_polar
全天画像 data が, 極域全体を北から見下ろした format で表示されたと思います. 上が 12 MLT, 下が 24 MLT です.
plot_asi の時と同じで, 複数の panel を並べて表示することも可能です.
plot_asi_polar, xmaps, ymaps, clip=clip, coast=coast, pot=pot
xmaps に横方向の panel の数, ymaps に縦方向の panel の数を指定してやります. 以下のように実行すると,
Go-asi > plot_asi_polar, 2, 3
2 行 3 列の panel 群(計 6 枚)が出てくるはずです. この command を実行しているときは, 現在の scan は increment (1 scan ずつ進んでいく) していっていることに注意してください. また, xmaps, ymaps に何も指定しない場合は, 上の最初の例のように 1 枚の panel が表示されます.
ここで以下のように clip という keyword をつけて実行すると, OMTI の視野の周辺のみが表示されます.
Go-asi > plot_asi_polar, /clip
この場合もやはり上が 12 MLT, 下が 24 MLT であることには変わりはありません.
また, coast という keyword をつけると地図が上書きされます.
Go-asi > plot_asi_polar, /coast
これまでの 2 次元 plot と同じで, お好みの位置に panel を 1 枚だけ表示するには以下を用います.
plot_asi_polar_panel, xmaps, ymaps, xmap, ymap, clip=clip, coast=coast, pot=pot
xmaps, ymaps はそれぞれ横方向, 縦方向の panel の数です. xmap, ymap ではその何番目に panel を置くかを指定します. 画面を上下に分割して, 上半分に panel を plot する場合は以下のようにします.
Go-asi > plot_asi_map_panel, 1, 2, 0, 0
xmap, ymap は, 0 から始まることに注意してください.
plot_asi_polar, plot_asi_polar_panel 共に, pot という keyword をつけると, SuperDARN によって得られた potential map が上書きされます. 例えば以下のように実行します.
Go-asi > plot_asi_polar_panel, 2, 2, 0, 0, /pot
もちろん, clip や coast といった keyword と併用することも可能です. ただ, 最初に実行した時のみ potential data の読み込みに時間がかかります.
7. setting data type and maximum luminocity
全天 imager の画像 data には 4 つの種類があります.
1. raw: 生 data. OMTI で取得された data そのもの. 背景の明るさなどは差し引いていない 2. abs: raw data に対して, 感度校正を行い絶対発光強度 (単位は Rayleigh) に変換したもの. 通常はこれを用いる. 3. avg: abs data について 1 時間の移動平均を取った data. ほとんど使わない. 4. dev: abs data から avg data を差し引いたもの. 変動成分だけを抽出. red-line で patch の解析を行う際に用いる.
これら 4 種類の data のうち, どの type の data を用いるかを設定するには以下の command を用います.
set_typ_asi, 'raw' | 'abs' | 'avg' | 'dev'
data を読み込んだ時点では data type は abs に設定されています. patch の解析などで, 非常に微弱な光を扱う場合には, 以下のようにして dev dataを指定します.
Go-asi > set_typ_asi, 'dev'
これらの 4 種類の data はそれぞれに強度の値が大きく異なります. 最大値で言うと, raw は 10000 count 以上, abs, avg は数 1000 Rayleigh, dev は, 数 100 Rayleigh 程度になっています. また, dev data は平均値 (avg data) からの差分であるため, 正負両方の値を取ることに注意してください.
これらを図にする場合は, それぞれに最適の最大値・最小値で colour scale を調整して表示してやる必要があります. 最大値・最小値を設定するには以下の command を用います.
set_lev_asi, min, max
例えば, abs data を plot する場合, 最大値を 5000 Rayleigh にしたい場合は, 以下のように用います.
Go-asi > set_lev_asi, 0, 5000
また, dev data を plot する場合, -300 Rayleigh から 600 Rayleigh の幅で colour 表示したい場合は以下のように用います.
Go-asi > set_lev_asi, -300, 600
ここで設定した最大値・最小値は, set_typ_asi で data 形式を変更すると default の値に戻ります. default の値は以下のようになっています.
data type 最小値 最大値 1. raw data 0 cnt 30000 cnt 2. abs data 0 Rayleigh 1000 Rayleigh 3. avg data 0 Rayleigh 1000 Rayleigh 4. dev data -100 Rayleigh 100 Rayleigh
8. plot the data in keogram format
これまでは, 画像 data を 2 次元で表示する方法を解説してきましたが, ここでは画像をある断面で切り取って時系列に並べた plot (以下ではこの形式の plot を keogram と呼びます) の作成方法を解説します.
まずは, 何も考えずに以下の command を実行してみてください.
plot_asi_keo
4 枚の panel が出てくると思います. 元となる data は全て同じで, 横軸はすべての panel で UT となっていますが, 4 枚の panel で切り取る断面が異なっています. 上から下に以下のような断面で切り取っています. 言うまでもないことかもしれませんが, 縦軸の中央が天頂となっています.
SE to NW: 南東 - 北西断面 0 SW to NE: 南西 - 北東断面 1 South to North: 南北断面 2 East to West: 東西断面 3
切り取る断面によって, data の見え方が変わってくると思います. 任意の断面だけを plot するには以下の command を用います.
plot_asi_keo_panel, xmaps, ymaps, xmap, ymap, keo=keo, no_x=no_x, no_bar=no_bar
xmaps, ymaps はそれぞれ横方向, 縦方向の panel の数です. xmap, ymap ではその何番目に panel を置くかを指定します.
また, keo という keyword に番号を指定することで, どの断面で切り取るかを指定します. 何も指定しない場合は上の表の一番上の の SE to NW 断面が選択されます. 断面を指定する番号は上の表の右端のようになっています.
例えば, 画面を上下に 4 分割し, 上から「南北断面」「東西断面」「南東-北西断面」「南西-北東断面」を順に表示するには以下のようにします.
Go-asi > plot_asi_keo_panel, 1, 4, 0, 0, keo=2
Go-asi > plot_asi_keo_panel, 1, 4, 0, 1, keo=3
Go-asi > plot_asi_keo_panel, 1, 4, 0, 2, keo=0
Go-asi > plot_asi_keo_panel, 1, 4, 0, 3, keo=1
また, 以上で plot した 4 つの断面と IMF の data を同時に表示することもできます. 以下の command を用います.
plot_asi_keo_summary, ps=ps, sky=sky
ps という keyword をつけると PostScript 形式で出力されます. file 名は yyyymmdd_summary.ps となります.
Go-asi > plot_asi_keo_summary, /ps
また, sky という keyword をつけるとそのときの天候情報が同時に plot されます.
Go-asi > plot_asi_keo_summary, /sky
ここで表示された天候の情報の見方は以下です. p か s であれば, data 解析に値します.
c: overcast or rain (全天曇りか降雨) → 使ってはならない. m: many clouds and a few star (たくさんの雲があるが, 星が少し確認できる) → 用途を限れば使える可能性がある. p: a few clouds and many stars (雲が少しあるものの, 多くの星が確認できる) → 注意しながら使える data. s: clear sky with stars (晴天) → 使用可能.
9. Misc routines
ここでは, 上で解説した以外で使いそうな command についてまとめます.
colour bar を書くには以下の command を用います.
plot_asi_colour_bar, ymaps, ymap
ymaps は縦方向に何分割するか, ymap はその何番目に bar を書くかをあらわします. 以下のように何も引数を取らずに実行した場合,
Go-asi > plot_asi_colour_bar
画面の右端に 1 つの bar が出力されます. また, 以下のようにすると右端を縦に 3 分割してその一番上に bar が出力されます.
Go-asi > plot_asi_colour_bar, 3, 0
この場合も ymap は, 0 から始まることに注意してください.
plot に title をつける場合は以下の command を用います.
plot_asi_title, long=long
_panel がついた command では title が出ませんのでそのような場合に用います. long という keyword は横長の画面の場合につけると balance が多少良くなります.
10. Making mpeg movie
ここでは, 全天カメラの画像を movie にする方法を解説します.
まず, これまでに解説した全ての 2 次元表示形式, 「全天画像」, 「地理緯度・経度 map」, 「磁気緯度・経度 map」, 「polar map」 をすべて同時に描画する movie を作成するには以下の command を用います.
make_asi_map_movie, stime, etime, max_val=max_val, min_val=min_val, coast=coast
この command を実行する前には, data はすでに読み込んだ状態で, data の type も指定しておく必要があります. movie の開始時間と終了時間を指定する必要があることに注意してください. 例えば 0200 UT から 0800 UT までの movie を作りたい場合は以下のように実行します.
Go > make_asi_map_movie, 0200, 0800
colour scale 最大値・最小値を指定したい場合は, max_val, min_val という keyword を用います. これらの keyword をつけない場は, set_lev_asi で指定してある最大値・最小値が使われます. dev data を最大値 200, 最小値 -200 で plot したい場合は以下のようにします.
Go > make_asi_map_movie, 0200, 0800, max_val=200, min_val=-200
こうして作成された movie は, 日付と data type と colour scale の最大値からなる file 名の mpeg file として current directory に保存されます. 例えば, 2005 年 1 月 11 日の abs type の data を colour scale 最大値 3000 Rayleigh で movie にした場合, file 名は, 20050111_abs_3000_map.mpeg となります. 最後の map は, いろいろな map を同時に表示している movie であるという意味です.
できた movie は Windows で再生します. Windows へのデータコピーは Windows 側で WinSCP というソフトを用いてください.
また, 右上の polar map に地図を上書きしたい場合は coast という keyword をつけます.
Go > make_asi_map_movie, 0200, 0800, /coast
polar map の形式の movie を作成するには以下の command を用います.
make_asi_polar_movie, stime, etime, max_val=max_val, min_val=min_val, coast=coast, pot=pot, clip=clip, small=small
使い方は上の make_asi_map_movie と基本的に同じです. 例えば 0200 UT から 0800 UT までの movie を作りたい場合は以下のように実行します.
Go > make_asi_polar_movie, 0200, 0800
地図を上書きしたい場合は coast という keyword をつけます. SuperDARN の potential map を上書きしたい場合は, pot という keyword をつけます. imager の視野付近のみを plot するには clip という keyword を用います. これらの keyword は以下のように全て重複して使用することが可能です.
Go > make_asi_polar_movie, 0200, 0800, /coast, /pot, /clip
small という keyword は, title などを省いて, 小さい movie を作る場合に用います.
こうして作成された movie は, 日付と data type と colour scale の最大値からなる file 名の mpeg file として current directory に保存されます. 例えば, 2005 年 1 月 11 日の abs type の data を colour scale 最大値 3000 Rayleigh で movie にした場合, file 名は, 20050111_abs_3000_pol.mpeg となります. 最後の pol は polar movie の意味です.
最後に, abs, dev 両方の data を同時に表示し, IMF の data も加えた movie を作成する方法を解説します. 以下の command を用います.
make_asi_all_movie, stime, etime, max_val=max_val, min_val=min_val, coast=coast, pot=pot, clip=clip
使い方は上の 2 つとまったく同じで, 開始時刻と終了時刻を以下のように指定します.
Go > make_asi_all_movie, 0300, 0500
こうして作成された movie は, やはり mpeg file として current directory に保存されます. 例えば, 2005 年 1 月 11 日の data を colour scale 最大値 3000 Rayleigh で movie にした場合, file 名は, 20050111_bot_3000_all.mpeg となります. bot は abs, dev 両方(both)の data を movie にしたことを意味しています. ひとつ注意してもらいたいのは, gree-line の data には dev 形式のものがなく, かつ green-line は 20 分に一度観測をお休みするので, そのような場合には No Image という表示がでるということです.
Keyword は基本的には上と同じですが, max_val, min_val だけが少し違います. ここで指定する最大値・最小値は abs data の最大・最小です. dev data の最大・最小は, abs data の最大値の 0.2 倍になるように自動的に設定されます. 例えば max_val で 3000 を指定した場合は, dev data は -600 から 600 の間で colour scale を取って plot されます.
switch to gwave.ice.uec.ac.jp/~hosokawa/codes/codes.html