SuperDARN data visualization software: go


last updated on February 24th, 2003


1. before getting started

plotをする前に、ソフトの動作環境に関するごく簡単な準備が必要です。

1.1 login steam01

SuperDARN dataの可視化toolが使えるのは現在のところsteam01(IP: 10.226.83.232, OS:solaris2.6)のみです。解析systemは基本的にこの計算機のresourceのみ(disk, compiler等)を使っています。
steam01はKUINSIIIでnetworkingがなされているため、KUINSIIのhostからremote loginすることはできません。KUINSIIIのhostからならばssh経由でlogin可能です。ただし、steam01にsshでloginして、X windowをforwardingするためには、以下のようにXというoptionをつけてssh loginしてやる必要があります。

   $ ssh -X steam01

この点だけ注意しておいてください。

もちろんconsoleから利用することも可能です。こちらはXのforwardingや、displayの解像度などの面倒を考えることなく利用できます。consoleは実験室の入り口を入ってすぐ左にあります。


1.2 setup startup files

解析systemの設定fileおよび起動scriptのtemplateを用意していますので、自分の作業directoryにcopyしてください。このtemplateはあくまで、設定fileと起動scriptを固めてあるものであって、softwareが使用するC言語、FORTRAN、IDLの各種libraryは含まれていません。

   $ cp /radar01/soft/go/go.tar .

tar ballを展開すると、goという名前のdirectoryができると思います。その中のgoという名前のshell scriptが起動fileです。その他にも幾つかの設定fileが存在します。これについてはあとで詳しく説明します。

   $ tar xfv go.tar
   $ cd go
   $ ./go

goを起動すると、すべてのIDLのroutinesがcompileされいつでも実行可能な状態になります。titleが表示され、

   Go>

というpromptが現れたら起動は終わりです。visualization routinesが使える状態になりました。


1.3 select output device

IDLのbugとして、userが目の前にしているdisplayが、8bitもしくは24bitでないとXの出力を正しく表示できないという問題があります。これは現在地球物理学教室でlicenseを購入しているIDL 5.2では根本的な解決策がない問題です。この問題を回避する(ごまかす)方法は2つあります
  1. Xに出力せずにPostScriptに出力する
  2. 目の前の計算機のDISPLAYの色数を8bitもしくは24bitにする
2を選択した場合はwindowsならば、desktopのpropertyの設定を変更すればよく、Linuxなどのunixならば、startx -- -bpp 8などでX window systemを立ててやればよいことになります。

1を選択した場合には、go/SD_varibles(設定file)の中の記述、default output deviseを以下のように変更してください。defaultのoutput deviseがPostScirptになります。

# If you prefer to use PostScript as a default output devise ...
export IDL_DEVICE=PS
export GO_DEFAULT_DEVICE=PS

以上の手順を踏んでやれば、output deviceは正常に準備されるはずです。Xをoutput deivceに設定した場合は、以下のcommandでwindowを作ってやります。

clear_page

Go> clear_page

このcommandは、windowをrefreshしたいときはいつでも、使えます。黒板消しのようなものです。defaultでは、landscapeのwindowがでてくると思いますが、これをportraitに変更したい場合は、以下のcommandを用います。

set_format, /landscape or /portrait

portraitに変更するには、

Go> set_format, /portrait

としてやった後で、clear_pageをすれば良いことになります。landscapeに再び戻したいときは、

Go> set_format, /landscape

output deviceをPSに設定した場合は、Postscriptのところを参照してください。


2. data description

dataの読み込みについて説明する前にSuperDARNのdataについて簡単に説明します。

2.1 data files

SuperDARNのdata fileの種類は大きく分けて以下の4つがあります。
  1. fit file: FITACFによって導出されたpower,velocity,widthが入っている。拡張子は.fit
  2. inx file: fit fileを早く読むための目次が入っている。拡張子は.inx
  3. smr file: 特定のbeamだけのdataをASCIIで書き出したもの。拡張子は.smr
  4. dat file: ACFが入っている。拡張子は.dat
通常の解析にはfit fileとinx fileがあれば充分です。dat fileはradarのDoppler spectrumなどを見たいときに用いますが、そのようなcaseはごく稀です。

steam01の/radar08というdirectoryに1995年4月から新着(2003年3月現在、2002年後半まで)のdataのfitおよびinx fileが格納されています。計算機の能力が限られていた時代は、smr fileは重宝しましたが、いまはほとんど使いません。dat fileについては、CD-Rの形式で保存されているので、適宜diskにcopyして利用することは可能です。


2.2 filename

SuperDARNのdataは基本的に2時間ごとに区切られたfileになっています。

   例) 1996021412f.fit

この例は、1996年2月14日 12時UTから2時間のfit fileであることを表しています。

拡張子の手前にある"f"はどのradarのdataかを表しているradar IDです。実際のradarとの対応は以下のようになっています。

     Northern Hemisphere radars  radar ID      Southern Hemisphere radars  radar ID     
    ===================== ====== ====================== ======
     Goose Bay g Halley h
     Kapuskasing k Sanae d
     Saskatoon t Syowa South j
     Prince George b Syowa East n
     Kodiak a Tasmania r
     Iceland West w Keruguelen p
     Iceland East e
     Finland f
     Iceland East f
     King Salmon c

たまに"1996021412fa"といったような名前のfileがあります。radar IDのあとにaという文字が付いているのは、operationが2時間の間に変更になったため、別のfileにdataを書き出したことを意味します。日付が変わったときにこの種のfileが現れたりします。


3. load the data file

data fileを読み込んでplotを行うのは、どのplotting routinesでも同じですが、Goはdata fileをmemoryに読み込んだままの状態でintractiveにplotをしていきます。plotの形式を変更するときでもまたあらたに、dataの読み込みは行いません。ここで言うdataは、fitfileとinxfileのことです。この二つのfileは必ず同じdirectoryになければならないことにご注意ください。通常これらのfileはgzipされた形で保存されています。Goは自動的に解凍を行ってdataの読み込みを行いますのでここでは特に気にしないでください。

3.1 set data search path

まずdataが置いてあるdirectoryへpathが切れているかどうかを以下のcommandで確認します。

list_paths

Go> list_paths

Current .fit file search path
------------------------------------------------------------
1 ./
2 /radar04/data/SuperDARN/Fitdata/MSE/
3 /radar04/data/SuperDARN/Fitdata/DSE/
4 /radar04/data/SuperDARN/Fitdata/AGW/
------------------------------------------------------------

これらのdirectoryはあらかじめ、SD_variablesという設定fileの中の、SD_FITROPEN_PATHという環境変数によって指定されているものです。良く使うdataが置かれているdirectoryなどは予めこの設定fileで指定しておくと便利です。Goの起動時に読み込んでくれます。

予め、環境変数SD_FITROPEN_PATHでsearth pathのlistを指定していなくても、簡単に加えることができます。そんな場合には、以下のcommandを用います。

add_path, 'pathname'

もし自分が読みたいfit fileおよびinx fileが

/radar04/data/SuperDARN/Fitdata/FUCK/

にあるとします。このdirectoryをsearch pathに加える為には以下のようにすれば良い訳です。

Go> add_path, '/radar04/data/SuperDARN/Fitdata/FUCK/'

もう一度list_pathsでpathが切れているかを確認します。

Go> list_paths

Current .fit file search path
------------------------------------------------------------
1 ./
2 /radar04/data/SuperDARN/Fitdata/MSE/
3 /radar04/data/SuperDARN/Fitdata/DSE/
4 /radar04/data/SuperDARN/Fitdata/AGW/
5 /radar04/data/SuperDARN/Fitdata/FUCK/
------------------------------------------------------------

ちゃんとFUCK directoryがpathに加わっています。ちなみに、pathをlistからはずしたい時は、

remove_path, 'pathname'

Go> remove_path, '/radar04/data/SuperDARN/Fitdata/FUCK/'

とやってやればOKです。


3.2 list available data files

次に、pathの中のdirectoryにどんなfit fileとinx fileが入っているかを以下のcommandで確認します。

cat, path_id

例えば、list_paths commandの出力で5という番号がついているdirectoryの中身を見たいと思えば、

Go> cat, 5

/radar04/data/SuperDARN/Fitdata/FUCK/ (0/99)
-------------------------------------------------------------------------------

Squashed:
1996021300f  1996021302f  1996021304f  1996021306f  1996021308f
1996021310f  1996021312f  1996021314f  1996021318f  1996021320f
1996021322f  1996021400f  1996021402f  1996021404f  1996021406f
1996021408f  1996021410f  1996021412f  1996021414f  1996021416f
1996021418f  1996021420f  1996021422f

list_pathsの出力で5という番号がついたdirectoryに置かれているdataの一覧が表示されました。Squashedというのは、gzipされた状態でdata fileがあるということを意味します。Goでは、通常、gzipした状態のdataを自動解凍して読みますので、ここでは無視してください。

なお、現在steam01の/radar08には、京都大学にある全てのfit fileおよびinx fileが格納されています。どのradarのdataがどれだけあるかを調べるcommandがあります。

check_data, year, month, day

Go > check_data,2000,10,10
SuperDARN data avairability (steam01 300GB raid: /radar08)
----------------------------------------------------------
No. ID  00--02--04--06--08--10--12--14--16--18--20--22--24
----------------------------------------------------------
01   g    ++  +   +   +   +   +   +   +   +   +   +   +
02   s    -   -   -   -   -   -   -   -   -   -   -   -
03   k    ++  +   +   +   +   +   +   +   +   +   +   +
04   h    ++  +   +   +   +   ++  +   +   ++  +   +   +
05   t    ++  +   +   +   +   +   +   +   +   +   +   +
06   b    ++  +   +   +   +   +   +   +   +   +   +   +
07   a    ++  +   +   +   +   +   +   +   +   +   +   +
08   w    ++  +   +   +   +   +   +   +   +   +   +   +
09   e    ++  +   +   +   +   +   +   +   +   +   +   +
10   f    ++  +   +   +   +   +   +   +   +   +   +   +
11   d    ++  +   +   +   +   +   +   +   +   +   +   +
12   j    +   +   +   +   +   +   +   +   +   +   +   +
13   n    +   +   +   +   +   +   +   +   +   +   +   +
14   r    ++  +   +   +   +   +   +   +   +   +   +   +
15   p    ++  +   +   +   +   +   +   +   +   +   +   +
16   c    -   -   -   -   -   -   -   -   -   -   -   -
17   u    -   -   -   -   -   -   -   -   -   -   -   -
----------------------------------------------------------
+がdataが存在することを示していて、-は、dataが存在しないことをしめしています。これらのfileに対して、pathを切りたいときには以下のようなcommandを用います。

archive, year, month, day, /remove

例えば、2000年10月10日のdataを全てpathに加えようとするならば、

Go> archive, 2000, 10, 10

としてやればよいことになります。dataのdirectoryがpathに加わり、fileの一覧が表示されます。同様にこのdirectoryをpathから削除したい場合は、/remove keywordを用いてください。

Go> archive, 2000, 10, 10, /remove

これで、dataを読む準備が完了しました。


3.3 load the data files

読み込むべきdata fileが特定できたら、あとはdataを取り込むだけです。Goでfileを読み込むには以下のcommandを用います。異常に簡単です。注意すべきは、single quateを忘れないようにすることくらいです。

file,'filename', /append

例えば、1996021412f (1996年2月14日のUT12時から2時間分のFinland radarのdata)を取り込むならば、

Go> file,'1996021412f'

SuperDARNのdata fileは通常2時間ずつに区切られています。append keywordを用いれば、2時間よりも長い時間幅でdataを連続的に取り込むことができます。例えば以下のようにすると、

Go> file,'1996021412f'
Go> file,'1996021414f',/append

1996年2月14日の12時から16時までのdataがmemoryに取り込まれることになります。

また、取り込めるdataの量は、defaultでは2時間となっているのですが、

resize,hours

というcommandを用いて変更が可能です。たとえば8時間分のdataに見合うだけのmemory領域を用意するには、

Go> resize,8

としてやればよいわけです。ここでの時間は、common time normal scanのdata量で定義されるもので、もっと複雑なoperationのdataを読む場合には、余分にとってやる必要があるかもしれません。用意されている配列が足りない場合には以下のような警告が出るのでその場合は多めにresizeしてやってください。

ERROR: fit file larger than available array size, truncating..


3.4 information output

data fileがきちんと読み込めているか確認してみます。確認するには、以下のcommandを用います。

print_file_info

1996021412fというfileを読み込んだ後に、informationの表示をやってみます。

Go > print_file_info
SuperDARN radar Hankasalmi (10)
Current file 1996021412f
Start time 1202 00s (045)
End time 1401 49s (045)
Frequency band 9.900 to 10.000 MHz
Scan mode >  normal (ccw) (127)
No beams 960 (93%)
No scans 60
Maximum file size  2 hours (1028 beams)

radarの名前、ID番号、周波数、scan modeなどが書いてあります。No beamsは読み込んだdataの量をbeamを単位として示してあります。(93%)とあるのは、用意した配列の93%にdataが入っているということを意味しています。

また、SuperDARNのoperationには、以下の3つの種類があります。

  1. common time operation: 基本的に誰でも使用可能。ほとんどの場合noarmal scan mode
  2. discretionay time operation: 各radarが独自にやっているoperation。基本的には許可が必要。
  3. special time operation: SuperDARN全体で特別観測をやっているmode。使用には許可が必要。

このoperation modeを調べるには以下のcommandを用います。

print_scan_mode_info

Go> print_scan_mode_info

 lag to  gate
date and time 1st range length scan mode
----------------------------------------- ------------------------ --------------------- ----------------------------------
14 Feb 1996  1202 00s 180.0 km 45.0 km normal (ccw) (127)
----------------------------------------- ------------------------ --------------------- ----------------------------------
date and time

さて、これでdataをplotする準備が万事整いました。


4. plot RTI plot: 1D visualization

まず、data plotの一番簡単な例としてRTI plotを作ってみようと思います。RTI plotはRange Time Intensityという名前の通り、横軸に時間、縦軸にradarのrange(電波の航続距離)をとってpower、velocity、widthの基本parameterをplotするものです。

横軸は常に時間(UT)ですが、縦軸は、場合によってrange、地理緯度、磁気緯度などに変更することが可能です。

SuperDARNのradarは16本のbeamで扇形の視野を構成しています。RTI plotはひとつのbeamのdataしかplotすることができないので、plotするbeamを随時変更し、自分が見たい情報を引き出します。

4.1 plot single RTI panel

RTI plotを作成するには、以下のcommandを用います。

plot_rti

まず何も考えずに以下を実行してみます。

Go> plot_rti

すると、beam 0のpowerが読んだ時間の分だけ出力されると思います。縦軸はrange gateになっていると思います。SuperDARNの観測ではrange gateは45kmごとに区切られており、75個のbinに分けられています。また、最初のrange gateは通常180kmに設定されています。

このplot_rtiというcommandが全ての基本です。これから、plotするbeamや縦軸横軸に関する指定を加えていき、自分の見たいplotにしていきます。


4.2 setup parameter to be plotted

まずは、beamを指定します。beamの指定は以下のcommandで行います。

set_beam, beam_number

例えば、beam 9をplotしたければ、

Go> set_beam, 9

次に、plotするparameterの指定を以下のcommandで行います。

set_parameter, parameter_name

指定するparameterの名前は、powerが'pwr_l'、velocityが'vel'、そして、widthが'width_l'です。例えば、pwr_lをplotするparameterとして指定したいときは、以下のようにします。

Go> set_parameter,'pwr_l'

基本3 parameterに関しては、以下のようにその名前を打ってやるだけで、parameter指定も可能です。

Go> pwr_l (set_parameter,'pwr_l'のalias)

Go> vel (set_parameter,'vel'のalias)

Go> width_l (set_parameter,'width_l'のalias)

また、plotする時間幅も読み込んだ時間範囲の中であれば、以下のcommandで自由に変更できます。

time, start_time, end_time

UTで12時から14時までを指定したければ、以下のようにすればよいことになります。

Go> time, 1200, 1400

次に、縦軸の座標の指定を行います。

defaultは、'gate'になっていますが、地理座標、地磁気座標、range (in km)などに変更することが可能です。

set_coords, 'geog' or 'mag' or 'range' or 'gate'

地磁気座標に変換するなら以下のようにしてやればよいことになります。

Go> set_coords,'mag'

縦軸を指定したら、その範囲も指定したくなります。そんな時は、以下のcommandを使います。

map, y=[ymin,ymax]

地磁気座標を指定した後に、以下のようにしてやれば、

Go> map,y=[70,80]

としてやれば磁気緯度で70度から80度までの範囲に縦軸を設定できます。

地理および地磁気座標を縦軸にとって、南半球のdataをplotするときには、縦軸の上側を極方向にとりたくなります。Goはdefaultでは北半球のdataをplotするように設定されているので、南半球のdataをplotするにはいくらかの小細工が必要です。

以下のcommandを縦軸の座標設定の前に使ってやります。

set_invert,'on' or 'off'

これは縦軸の上下を反転させるオマジナイです。例えば、南半球のdataを地磁気座標で、-70度から-80度までplotしようと思えば、オマジナイに引き続いて以下のような操作をします。

Go> set_invert,'on'
Go> set_coords,'mag'
Go> map,y=[-80,-70]
Go> plot_rti

これで、南半球のdataも北半球と同じように、縦軸上側を極方向にとってplotできます。

SuperDARNのechoには、ionosphere起源とground起源のものがあるので、それらを選択的にplotしてやることもできます。plotするechoの種類を決定するのは以下のcommandです。

set_scatter, 0 or 1 or 2 or 3

0: 全てのbackscatterをplot
1: ground scatterのみをplot
2: ionospheric scatterのみをplot
3: 全てのbackscatterをplot (ただし、velをplotするときには、ground scatterをgreyで表現)

ground scatterを取り除きたい場合には、以下のようにしてやります。なお、defaultは3になっています。

Go> set_scatter, 2

plotのcolour scaleをdefaultの設定から変更するのは以下のcommandで行います。

set_scale, min, max

例えば、velocityをplotするparameterとして設定している状態で、scalingを-2000m/sから2000m/sまでに変更したいときには、

Go> set_scale, -2000, 2000

とやってやれば良いわけです。defaultのscaleに戻すには、

Go> default_scale

としてやればよいです。

defaultでは、pwr_lについては0-30 [dB]、width_lについては0-500 [m/s]、velocityは-1000-1000 [m/s]となっています。小さい値まで細かく変動をみたいときや、非常に大きな値までplotする場合には、適宜、変更が必要になります。


4.3 plot multiple RTI panels

これまでは、plot_rti commandをつかって、1つのoutput deviceについて一枚のpanelを書いてきましたが、1つのdeviceに複数のpanelを書くことも可能です。plot_rtiの正確なusageは以下のようです。

plot_rti,columns,rows,beams=[n,n, ...],/allbeams

16本のbeamを一枚のoutput deviceに描きたいと思えば、

Go> plot_rti, /allbeams

とやってやればOKです。16枚のpanelが4x4のformatで出力されると思います。

また、特定のbeamsのみを出力することも可能です。2行2列にpanelを並べて、0,5,10,15の4本のbeamだけをplotするには、以下のようにしてやります。

Go> plot_rti, 2, 2, beams=[0,5,10,15]

これらの機能を用いれば、dataのpreviewをするぶんには十分かと思います。しかし、論文や学会発表などのために、さらに清書のplotを作成するときは、以下のcommandのほうが思い通りのplotが作れるかもしれません。

plot_rti_panel, columns, rows, column, row, beam=n, position=[x1,y1,x2,y2], /info

このcommandは、1つのoutput deviceを横方向にcolumns、縦方向にrowsに分割し、そのcolumn番目とrow番目のpanelにRTI plotを出力するというものです。注意すべきは、columnおよびrowは0から始まるということです。例えば、deviceを縦方向に3つに分割し、上からpwr_l、vel、width_lをplotしたいときは、

Go> pwr_l
Go> plot_rti_panel, 1, 3, 0, 0, /info
Go> vel
Go> plot_rti_panel, 1, 3, 0, 1, /info
Go> width_l
Go> plot_rti_panel, 1, 3, 0, 2, /info

とやってやれば良い訳です。info keywordを指定するとは、beam numberや横軸の時間幅などの情報が表示されます。set_beam commandでもplotするbeamの指定はもちろん行えますが、beam optionで指定してやることも可能です。

また、お好みの位置にpanelを出したい時は、position keywordを用います。device座標で、panelの角の座標を指定してやります。device座標は、縦横ともに、0から1の範囲で設定されています。具体的な使い方は以下のようになります。

Go> plot_rti_panel, position=[0.2, 0.3, 0.8, 0.7]

ただし、position keywordで位置の指定を行うと、info keywordで出力される情報が正しい位置にでませんので併用することは不可能です。ご注意ください。

plot_rti, plot_rti_panelの双方のcommandにおいて、/no_xというkeywordを設定することが可能です。このkeywordが指定されれば、横軸の座標が表示されません。縦方向にpanelを連ねていく場合に、使うことになります。

縦方向にpanelを重ねていく場合、各panelは縦方向にある程度の間隔をもって出力されます。このspaceが無駄と思えるならば、各panelを縦方向にくっつけて表示することも可能です。それには、formatの指定を行う以下のcommandを予め用いてやる必要があります。

set_format, /sardines, /guppies

panelをくっつけて表示するには、

Go> set_format, /sardines

元のように、離して表示するには、

Go> set_format, /guppies

です。先ほどの例と同じように、deviceを縦方向に3分割し、各panelをくっつけた形で、上から基本3parameterをplotするならば、

Go> set_format, /sardines
Go> pwr_l
Go> plot_rti_panel, 1, 3, 0, 0, /no_x
Go> vel
Go> plot_rti_panel, 1, 3, 0, 1, /no_x
Go> width_l
Go> plot_rti_panel, 1, 3, 0, 2

各panelをくっつけるので、一番上のpanelと真ん中のpanelを描くときには、横軸を出力しない/no_x keywordを加えてやる必要があります。ご注意を。

plot_rti commandでは、colour barを自動的に出力してくれますが、plot_rti_panel commandでは、その機能はありません。よって、独立にcolour barを描くcommandを使う必要があります。

plot_colour_bar, rows, row, position=[x1, y1, x2, y2]

colour barの位置は、defaultで、右端に設定されていて、縦方向(row)を指定するだけでその位置に出力されます。縦方向に3つに分割して、その一番上にcolour barを描く場合は、以下のようにします。

Go> plot_colour_bar, 3, 0

この場合も、rowのcountは0から始まることに注意してください。また、任意の場所にdevice座標で位置を指定してcolour barを出力することももちろん可能です。例えば以下のようになります。

Go> plot_colour_bar, position=[0.80, 0.50, 0.83, 0.70]

またまた、上の例で用いた基本3parameterを縦方向に並べたplotをcolour bar付きで表示することを考えれば、

Go> set_format, /sardines
Go> pwr_l
Go> plot_rti_panel, 1, 3, 0, 0, /no_x
Go> plot_colour_bar, 3, 0
Go> vel
Go> plot_rti_panel, 1, 3, 0, 1, /no_x
Go> plot_colour_bar, 3, 1
Go> width_l
Go> plot_rti_panel, 1, 3, 0, 2
Go> plot_colour_bar, 3, 2

以上でRTI plotを作成する際に用いるcommandの説明は全て終わりました。


5. plot map panels: 2D visualization

RTI plotの作り方がだいたいわかったので、今度は、2次元のvisualizationをやってみます。地理もしくは磁気緯度経度の座標軸の上に、dataをscan毎にplotしてゆきます。normal scanにおいては、約2分かけて16本のbeamをsweepし、扇形の視野全域においてdataを取得します。

5.1 plot single map panel

map panelを作成するには、以下のcommandを用います。

plot_map

fileを読み込みを行った状態で、以下を実行してみます。

Go> set_coords,'mag'
Go> plot_map

すると、横軸磁気経度、縦軸磁気緯度のframeの上に、現在指定してあるparameterがplotされるはずです。これが、map panelです。ここでは、磁気緯度経度で座標を指定しましたが、地理緯度経度で指定することも以下のようにすれば可能です。

Go> set_coords,'geog'
Go> plot_map

plotするparameterの指定はRTI plotで説明したのと全く同じで、

set_parameter, 'parameter_name'

で、OKです。基本3 parameterについてはその名前を打つだけでも指定が可能です。

ここで、横軸の経度および縦軸の緯度の範囲はradarごとに予め決められていますが、随時変更することも可能です。その時は、以下のcommandを用います。

map, x=[x1,x2], y=[y1,y2]

x軸(経度)を例えば、-20度から120度までの範囲にし、y軸(緯度)を60度から80度にしたければ、以下のようにします。

Go> map, x=[-20,120], y=[60,80]

x軸、y軸のどちらかだけを指定することももちろん可能です。これでもう一度、

Go> plot_map

とやってやれば、お好みの範囲でplotを作成することができます。

また、defaultのx軸、y軸の範囲は、go directory以下のpreferenceという名前のdirectoryにあるradar_plot_lims.datというfileで指定されています。おのおののradarについての記述があって、1行目が地理緯度経度、2行目が磁気緯度経度についての範囲指定です。defaultの値を変更したい場合はこのfileをeditしてください。

次に、何番目のscanをplotするかを指定する方法を説明します。これには、二つの方法があります。ひとつ目は、scanの番号で指定する方法です。

goto_scan, scan_number

normal scan modeでは、2時間のfileに2分ごと60個のscanが入っています。読み込んだdataが何scan分あるかはprint_file_infoなどを参照すればわかります。例えば、5番目のscanをplotしたければ、

Go> goto_scan, 5

とし、その上で、plot_mapを実行すれば良いことになります。scanの番号は0から数え始めることにご注意ください。現在何番目のscanが指定されているかを知るには、

print_scan_info

を使います。

Go> print_scan_info
Scan 5 (0-64)     Scan time 00020 00s (284)

などと情報を得ることができます。

また、scanを指定する二つ目の方法は、時刻で指定する方法です。4桁で時刻を与えれば、その時刻にもっとも近いscanを自動的に選んでくれます。

go_time, hhmm

例えば、12時30分のscanをplotするならば、

Go> go_time, 1230
Go> plot_map

とやってやれば良いです。

また、便利なcommandとして、以下の二つがあります。

next_map

prev_map

これらは、それぞれ、次のmap、前のmapを自動的に表示してくれるものです。dataをざっと眺めていくのに便利かと思います。


5.2 overlay information

plot_mapをするだけでdataのpreviewには充分ですが、さらに情報を追加することも可能です。

まず、radarの視野をdataの上にoverplotするには以下を使います。

plot_beams, /outline, /square

outline keywordは視野の外枠だけ、square keywordはそれに中心線と、0,15,30, ... 75のrange gateを加えたものを描きます。defaultは、square keywordが効くようになっています。

つぎに、Feldsteinのauroral oval modelをoverplotしてみます。

overlay_oval, Kp=Kp

Kp keywordで指定されたKpの時のovalのmodelをoverplotします。defaultでは、Kp=3になっています。

また、plot_map commandのkeywordでも以上の二つのお飾りをつけることは可能です。

plot_map, /beams, oval=Kp

例えば、視野と、Kpが2の時のoval modelをつけたmap panelを作成したいときは、

Go> plot_map, /beams, oval=2

とでもやってやればよいことになります。

5.3 plot multiple map panels

これまでは、plot_map commandをつかって、1つのoutput deviceについて一枚のpanelを書いてきましたが、1つのdeviceに複数のpanelを書くことも可能です。plot_mapの正確なusageは以下のようです。

plot_rti,columns,rows, /beams, oval=Kp, skip=n, /allbeams

columnsとrowsはそれぞれ、横方向、縦方向のpanelの数です。この引数を指定せずにplot_mapを実行すると一枚のpanelになりますが、指定すると複数のpanelにscanを順に進めて行きながらplotすることができます。例えば、2行2列にpanelを並べて、4つの連続したscanをplotするには、以下のようにしてやります。

Go> plot_map, 2, 2

また、scanを5つずつskipして(2分で1scanとするならば、10分おきに一枚のpanel)表示するには、以下のようにします。

Go> plot_map, 2, 2, skip=5

これらの機能を用いれば、dataのpreviewをするぶんには十分かと思います。しかし、論文や学会発表などのために、さらに清書のplotを作成するときは、以下のcommandのほうが思い通りのplotが作れるかもしれません。

plot_map_panel, columns, rows, column, position=[x1,y1,x2,y2], /info

このcommandは、1つのoutput deviceを横方向にcolumns、縦方向にrowsに分割し、そのcolumn番目とrow番目のpanelにmap plotを出力するというものです。注意すべきは、columnおよびrowは0から始まるということです。例えば、deviceを縦方向に3つに分割し、上からあるscanのpwr_l、vel、width_lをplotしたいときは、

Go> pwr_l
Go> go_time, 1230
Go> plot_map_panel, 1, 3, 0, 0, /info
Go> vel
Go> plot_map_panel, 1, 3, 0, 1, /info
Go> width_l
Go> plot_map_panel, 1, 3, 0, 2, /info

とやってやれば良い訳です。info keywordを指定するとはscanの時刻、周波数などが表示されます。

また、お好みの位置にpanelを出したい時は、position keywordを用います。device座標で、panelの角の座標を指定してやります。device座標は、縦横ともに、0から1の範囲で設定されています。具体的な使い方は以下のようになります。

Go> plot_map_panel, position=[0.2, 0.3, 0.8, 0.7]

ただし、position keywordで位置を指定した場合、info keywordで出力される情報は正しい位置に表示されません。また、plot_map_panelでは、plot_mapのように自動でcolour barが出力されませんので、適宜、plot_colour_bar commandでcolour barを出力してください。

plot_colour_bar, rows, row, position=[x1, y1, x2, y2]

詳しい使い方は、4.3を参照してください。


6. plot polar panels: advanced 2D visualization

RTI plotの作り方がだいたいわかったので、次にpolar plotを作ってみます。この形式は、極域を磁気軸の方向から見下ろした時に見えるであろう景色を想定しています。map plotをより実際的にしたものと考えられます。

6.1 plot single polar panels

polar plotを作成するcommandは、以下です。

plot_polar

まず、何も考えずに、

Go> plot_polar

と打ってやると、polar mapが出てくるかと思います。極域全体を描いたものになっているかと思います。radarの周囲だけをzoomしてplotしたいときは、clip keywordをつけてやります。

Go> plot_polar,/clip

これで、dataを読み込んだradarの周囲だけにfocusしたpolar plotがでてくると思います。常に、上側が太陽方向であることに注意してください。また、polar plotは磁気緯度とMLTの座標系でのみ利用可能です。地理緯度とLTでplotすることはできません。ご注意ください。

plotするparameterの指定はRTI plotで説明したのと全く同じで、

set_parameter, 'parameter_name'

で、OKです。基本3 parameterについてはその名前を打つだけでも指定が可能です。

読み込んだdata時間幅の範囲であれば任意のscanについてpolar mapを出すことができます。指定は、5.1で説明したように、以下のどちらかのcommandで行います。

goto_scan, scan_number

go_time, hhmm

基本的に、map panelで説明したことと同じなので、重複をさけるためここでは詳しく説明しません。5.1を参照してください。

6.2 overlay informations

基本的なpolar mapができればあとは、お飾りをつける作業をします。

radarのfield-of-viewをoverplotするには、

overlay_polar_beams, beams=[n,n, ...]

を用います。普通に実行すれば、

Go> overlay_polar_beams

視野の外枠が出力されます。またbeams keywordで特定のbeamsのみの輪郭をtraceすることも可能です。例えば、beam 0だけを描きたければ、

Go> overlay_polar_beams, beams=[0,1]

としてやれば良いです。

Feldsteinのoval modelをoverplotするには、

overlay_polar_oval, Kp=n

Kpが2の時のovalを描くには、

Go> overlay_polar_oval, Kp=2

とやってやれば良いです。Kp keywordをつけなければ、Kp=3の時のovalが出力されます。

solar zenith angleをoverplotするには、

overlay_polar_zenith

使い方は以下のようです。

Go> overlay_polar_zenith

大陸の形を描いてやるには、

overlay_polar_coast, hemisphere=-1 or 1

北半球ならば、

Go> overlay_polar_coast, hemisphere=1

南半球ならば、

Go> overlay_polar_coast, hemisphere=-1

以上が良く使うお飾りです。これらを使うとdataの相対的な位置取りがはっきりしますが、度が過ぎるとややこしくなるので注意が必要です。

これらのoverlay commandsは、plot_polar commandのkeywordでも指定できます。

plot_polar, /zenith, /coast, /beams, oval=Kp

複数を同時に指定することもできます。試してみてください。

6.3 plot multiple polar panels

これまでは、plot_polar commandをつかって、1つのoutput deviceについて一枚のpanelを書いてきましたが、1つのdeviceに複数のpanelを書くことも可能です。plot_polarの正確なusageは以下のようです。

plot_polar,columns,rows, /clip, /zenith, skip=n, /coast, /beams, oval=Kp

columnsとrowsはそれぞれ、横方向、縦方向のpanelの数です。この引数を指定せずにplot_polarを実行すると一枚のpanelになりますが、指定すると複数のpanelにscanを順に進めて行きながらplotすることができます。例えば、2行2列にpanelを並べて、4つの連続したscanをplotするには、以下のようにしてやります。

Go> plot_polar, 2, 2

自動的にscanが前へ進んでいくことがわかるかと思います。また、scanを5つずつskipして(2分で1scanとするならば、10分おきに一枚のpanel)表示するには、以下のようにします。

Go> plot_polar, 2,2, skip=5

これらの機能を用いれば、dataのpreviewをするぶんには十分かと思います。しかし、論文や学会発表などのために、さらに清書のplotを作成するときは、以下のcommandのほうが思い通りのplotが作れるかもしれません。

plot_polar_panel, columns, rows, column, position=[x1,y1,x2,y2], /info, /no_axis

このcommandは、1つのoutput deviceを横方向にcolumns、縦方向にrowsに分割し、そのcolumn番目とrow番目のpanelにmap plotを出力するというものです。注意すべきは、columnおよびrowは0から始まるということです。例えば、deviceを縦方向に3つに分割し、上からあるscanのpwr_l、vel、width_lをplotしたいときは、

Go> pwr_l
Go> go_time, 1230
Go> plot_polar_panel, 1, 3, 0, 0, /info, /no_axis
Go> vel
Go> plot_polar_panel, 1, 3, 0, 1, /info, /no_axis
Go> width_l
Go> plot_polar_panel, 1, 3, 0, 2, /info, /no_axis

とやってやれば良い訳です。info keywordを指定するとはscanの時刻、周波数などが表示されます。no_axis keywordは、座標軸の値を描かないというoptionです。

また、お好みの位置にpanelを出したい時は、position keywordを用います。device座標で、panelの角の座標を指定してやります。device座標は、縦横ともに、0から1の範囲で設定されています。具体的な使い方は以下のようになります。

Go> plot_polar_panel, position=[0.2, 0.3, 0.8, 0.7]

ただし、position keywordで位置を指定した場合、info keywordで出力される情報は正しい位置に表示されません。また、plot_polar_panelでは、plot_polarのように自動でcolour barが出力されませんので、適宜、plot_colour_bar commandでcolour barを出力してください。

plot_colour_bar, rows, row, position=[x1, y1, x2, y2]

詳しい使い方は、4.3を参照してください。


7. plot single time series

ここでは、radarのdataをline plotで表示する方法について解説します。ここで作成するline plotの縦軸はすべてparameterの値です。parameterがpwr_lにsetされているならば、pwr_lですし、velにsetされているならば、velということになります。それに対して、横軸は、時間にする場合とrange gate(もしくは、磁気緯度、地理緯度、range in km)にする場合の2 patternがあります。


7.1 plot time series of specified range


まず、ある特定beamのrange gateのdataを時系列でline plotで表示する方法について説明します。用いるcommandは、

plot_graph, columns, rows, beams=[], ranges=[], y=[y1,y2], exclude=[y1,y2], /nopoints, /bar

7.2 plot time series of specified multiple range

plot_stack, columns, rows, beams=[], ranges=[], exclude=[y1,y2], /nopoints, /zeros

7.3 plot parameter as a function of range gate along the beam

plot_range, columns, rows, y=[y1,y2], exclude=[y1,y2], /nopoints, /noline, /bar

8. postscript output


基本的にSuperDARNのdata visualizationはX windowで楽しむものですが、PostScript (PS)に出力したい場合があります。そのような時は、一連のcommandを実行する前にps_start commandを用いて、ps fileを開いておきます。

ps_start, 'filename'

fuck.psという名前のps fileに出力したければ、

Go> ps_start, 'fuck.ps'

のようにします。もし、filenameを指定しなければ、piccy.psという名前のfileが自動的に生成されます。

ps fileを開いた後で、landscapeかportraitかを指定することができます(defaultはportrait)。それを行うのは、以下のcommandです。

ps_landscape

ps_portrait

開いたps fileは見たり印刷したりする前に、閉じる必要があります。psを閉じるには、

ps_close

を用います。

できたpsをghostviewで閲覧するときは、

ps_preview, 'filename'

Go> ps_preview, 'fuck.ps'

もし、filenameを指定しない場合は、もっとも最近開いたps fileをghostviewは開きます。

作成したps fileを印刷したいときは、

ps_print, /colour or /bw

Go> ps_print, /colour (colour印刷: steam05のprinterに出力)

Go> ps_print, /bw (black/white印刷: steps0kuのprinterに出力)

IDLのps font(helvetica)を利用したいときは、以下のcommandをps fileを開く前に使ってください。

set_ps_font, 'on' or 'off'

Go> set_ps_font, 'on'

ps fontを使わなくするには、

Go> se_ps_font, 'off'

としてやってください。

まとめて、例を示すと

Go> set_ps_font,'on'
Go> ps_start, 'fuck.ps'
Go> plot_polar
Go> ps_close
Go> ps_preview
Go> ps_print, /colour

などのようになるかと思います。

9. custom commands

commandを連続的に実行したいときは、goという拡張子のfileをcurrent directoryに作成し、

Go> @ian.go

このように@を先頭に付けて実行してやればよいだけです。たとえば、ian.goの中身は、

;---------------------------------------------------------
; 5時間分のmemory領域を確保する
resize,5

; 1996年2月14日の1200UT-1600UTまでのdataを取り込む
file,'1996021412f'
file,'1996021414f',/append

; plotするparameterをvelocityに指定
vel

; ian.psという名前のPostScript fileをportraitで開く
ps_open,'ian.ps'
ps_portrait

; plotするbeamを10に設定
set_beam,10

; rti plotの縦軸を磁気緯度にして、範囲を68度から78度にする
set_coords,'mag'
map,y=[68,78]

; rti plotの横軸の範囲を1200UTから1600UTにする
time,1200,1600

; rti panelをplotする、vertical lineを1430UTにひく
plot_rti_panel,1,2,0,0,time_line=[1430]

; colour barを出す
plot_colour_bar,2,0

; polar plotを書く時間を1430UTに設定
go_time,1430

; polar plotを作成
plot_polar_panel,1,2,0,1,/clip

; radarのfovをoverplot
overlay_polar_beams

; beam 10の位置をoverplot
overlay_polar_beams,beams=[10,11]

; Feldstein ovalをoverplot
overlay_polar_oval,Kp=4

; solar zenith angleをoverplot
overlay_polar_zenith

; colour barを書く
plot_colour_bar,2,1

; ian.psを閉じる
ps_close

; ian.psをpreviewする
ps_preview

;---------------------------------------------------------

このようなcustom commandを作っておくと、作業を楽に、かつ再現性を持った形で行うことができます。current directoryに存在するgo fileの一覧は、custom commandで確認することができます。

Go> custom

Custom commands available:
------------------------------------------------------------------------------
ian.go john.go
reni.go mani.go
------------------------------------------------------------------------------


10. some notes for professional use


switch to www-step.kugi.kyoto-u.ac.jp/~hosokawa/codes/codes.html