(Application) AMeDAS データ描画スクリプト dclAMe
作成者:辻野智紀
概要
気象庁のホームページにおいて, 過去のアメダスデータが CSV 形式でダウンロードできるようになった. これにより, アメダスデータがより多くの人に扱われることになる. 本スクリプトはそのような新たなアメダスデータユーザを対象にしたスクリプトであり, ダウンロードされたアメダスデータをそのまま地図上に描画することができる.
まだ, ソース自体は汚いので, 要編集.
また, 本スクリプトは気象庁のアメダスデータダウンロードページからダウンロードされるデータのみに特化した仕様になっているため, いくつかの変数が決め打ちになっている.
ソースファイル
- 関連一式 : dclAMedat.zip. (2014/03/27, 22:00 JST; バグフィックス)
中身 :
./dclAMedat/ |-- dclAMe # メインスクリプト |-- AMEDAS.dat # アメダス点リストファイル |-- ML.dat # 重複地点一覧リストファイル `-- data.csv # サンプルデータ
アメダス地点一覧
アメダス点データの位置等は気象庁の 該当 PDF にて公開されているので, これを csv 形式に変換したものが AMEDAS.dat である. 本スクリプトは平成 25 年 12 月 17 日時点でのアメダスデータ点で実行することを想定している.
しかし, 気象庁のアメダスデータダウンロードページからダウンロードされるデータには, アメダス地点の名前しか格納されていない.
そこで, 地点名の重複がある場合は別ファイル ML.dat に特記しておき, 重複点が描画に指定された場合は後述する処理を行う.
依存ライブラリ
- NArray
- Ruby-DCL
- GGraph
使い方
- 本スクリプトの実行には, ソースファイルと同じディレクトリに, アメダス点リストファイル "AMEDAS.dat" と重複点リストファイル "ML.dat", ダウンロードしたアメダスデータファイル (サンプルの場合は data.csv) を設置する必要がある.
- 引数等を何もつけずに実行すると, usage が出力される.
$ ./dclAMe [usage] : ./dclAMe [options] [filename] [options] : --title="string" : draw the title. --save-mode="string" : save file format "string" : "PS" => post script, "PNG" => png default = "PNG" --undef="string" : set the undefined value. --set-crange=[min:max] : set the color range. --set-xrange=[min:max] : set the x axis range. --set-yrange=[min:max] : set the y axis range. --fact=float : uzfactor. --csize=float : size of circle (default : 0.02) [example] : dclplot --set-crange=[0.0:1.0] --title="hoge" test.dat [NOTE] : --set-crange is neccesary.
サンプル
サンプルとして置いている data.csv は東海地方の主なアメダス点データをあらかじめダウンロードしてきた 2013/03/16 - 2013/03/20 までの日平均気温データの入ったファイルである. このデータを元に主な動作を示す.
そのまま実行.
$ ./dclAMe --set-crange=[5.0:15.0] data.csv
アメダス点が重複している場合
ZIP に同梱したサンプルデータ data.csv にはアメダス地点名の重複が見られる点が複数格納されている (例えば, 「八幡」など).
この場合, 各重複点について, 重複の候補点を標準出力し, 使用者が適切な場所を標準入力で指定する仕様になっている.
実際に, サンプルデータで実行すると,
#*** Detect multi point (det_AMeDAS) *** Select your point in candidate points : 津(気温・雨) => 1 津(風・日照) => 2
などと聞かれる. この時点で入力待ちの状態になるので, 適宜入力を行う. サンプルプログラムで重複点を全て指定した場合の結果は以下.
#*** Detect multi point (det_AMeDAS) *** Select your point in candidate points : 津(気温・雨) => 1 津(風・日照) => 2 1 *** Detect multi point (det_AMeDAS) *** Select your point in candidate points : 豊田(愛知) => 1 豊田(山口) => 2 1 *** Detect multi point (det_AMeDAS) *** Select your point in candidate points : 新城(北海道) => 1 新城(愛知) => 2 2 *** Detect multi point (det_AMeDAS) *** Select your point in candidate points : 八幡(岐阜) => 1 八幡(広島) => 2 八幡(福岡) => 3 1 *** Detect multi point (det_AMeDAS) *** Select your point in candidate points : 中津川(山形) => 1 中津川(岐阜) => 2 2
これで以下のように出力される.
重複していたアメダス点の修正
アメダス点が重複していた場合, 描画の終了後に以下のような文章が出力される.
#*** MESSAGE (main) *** Do you modify multiple points ? [y/N]
これは, data.csv の重複が見られた点について, 2. で標準入力した地点名となるように data.csv を修正するかどうかの質問である.
デフォルトは修正しないが, "y" と答えると, オリジナルデータ名の末尾に ".out" という名前のついた別のファイルが出力されており, このファイルはアメダス重複地点を修正したファイルとなっている.
この次から実行する際, この修正済みデータを指定すると, 2. のような質問は出力されず, 以前に標準入力で指定した地点として描画が行われる.
描画領域を指定する (--set-xrange, --set-yrange)
$ ./dclAMe --set-crange=[5.0:15.0] --set-xrange=[136.0:139.0] --set-yrange=[34.0:36.0] data.csv.out
Post Script への出力 (--save-mode)
$ ./dclAMe --set-crange=[5.0:15.0] --set-xrange=[136.0:139.0] --set-yrange=[34.0:36.0] \ --save-mode=PS data.csv.out
アメダスデータのダウンロードおよび前処理
- 気象庁のアメダスデータダウンロードページ にアクセスする.
地点を選ぶ
各都道府県をクリックすると, その都道府県の各アメダス点を直接指定できる
項目を選ぶ
このとき, ダウンロードする変数は本スクリプトの仕様上, 1 変数のみに限られる.
期間を選ぶ
表示オプションを選ぶ (以下のように固定)
- CSV ファイルをダウンロード
- data.csv というファイル名でダウンロードされているはず.
shiftjis でダウンロードされているので, euc-jp に変換する. nkf を用いる場合は
$ nkf --overwrite -e -Lu data.csv
キーワード:
参照: