http://researhmap.jp/muuokv4p4-1772021/#_1772021 GrADS 講 習 会 第 一 回 GrADSに 関 して 詳 しいページ GrADS-Note GrADSコマンドやスクリプトのメモ インストールについて GrADSで 図 を 描 く 練 習 東 北 大 学 大 学 院 理 学 研 究 科 流 体 地 球 物 理 学 講 座 公 開 情 報 /GrADS 必 ずブックマークしておきたい GrADS コマンドリファレンス 吉 田 さんによるコマンドリファレンス 日 本 語 訳 http://wind.geophys.tohoku.a.jp/index.php?%b8%f8 %B%AB%BE%F0%CA%F%2FGrADS http://radar.si.hokudai.a.jp/~yoshida/study/grads/command/ GrADS リファレンスマニュアル http://mausam.hyar.nagoya-u.a.jp/%7ehatsuki/grads/gradsmanu.html 藤 波 さん 作 成 マニュアル 09 年 4 月 作 成 14 年 1 月 修 正 Y. Kamae IT memo http://hydro.iis.u-tokyo.a.jp/~kei/?it%20memo%2fgrads%20memo 芳 村 さんによるやや 上 級 者 向 け 情 報 GrADS Doumentation Index http://www.iges.org/grads/gado/gadoindex.html 2 GrADS 本 家 のコマンド 説 明 ( 英 語 ) 今 日 の 内 容 1. NCEP/NCAR 再 解 析 データ 2. wget データのダウンロード. sdfopen NetCDFファイルを 開 く 4. q file ファイルの 情 報 を 調 べる 5. d 変 数 名 図 を 描 く 6. xanim アニメーションを 描 く 研 究 を 行 なうには データが 必 要 研 究 に 使 うデータはどこにある? NCEP/NCAP 再 解 析 データ 観 測 自 分 で 収 集 する 解 析 誰 かが 作 ったデータを 使 う( 陸 域 センター 気 象 庁 研 究 所 ) アメリカの 大 気 研 究 センター 環 境 予 測 センターが 管 理 している 全 球 のデータセット 1949 年 ~ 現 在 まで 世 界 で 一 番 降 水 が 多 い 地 域 は? 日 本 の 平 年 の 冬 の 気 圧 配 置 過 去 50 年 の 気 温 の 変 化 傾 向 NCEP/NCAR 再 解 析 データ いろんなことを 調 べることができます 今 回 は 各 月 の 平 年 の 値 ( 気 候 値 )のデータについて 見 てみましょう 4
公 開 されているデータのページ http://www.d.noaa.gov/d/data.nep.reanalysis.derived.surfae.html まずは sea level pressure の ltm( 長 期 間 平 均 )データをダウンロードしてみよう リンクにマウスを 合 わせ 右 クリック* *Maではontrol+クリック リンクのURLをコピー ターミナルを 開 き マウスの 中 クリック* *2ボタンマウスでは 左 右 同 時 クリック Maではoption+クリック URLがペーストされる 入 力 したURLの 前 に wget と 入 力 つまり wget データをダウンロード する grads と 打 ち GrADSを 起 動 させる n (NetCDF) 形 式 のファイルは sdfopen ファイル 名 で 開 くことができます つまり sdfopen slp.mon.ltm.n sdfopen nデータを GrADSで 開 く と 入 力 プログラミングなどでよく 使 うバイナリ(bin) 形 式 のデータを 開 くときは コントロール(tl)ファイルを 作 る 必 要 があります wget ftp://ftp.d.noaa.gov/datasets/nep.reanalysis.derived/surfae/slp.mon.ltm.n を 実 行 ファイルがダウンロードされる ls と 打 って ファイルがダウンロードされたか 確 認 wget ファイルの 場 所 ファイルのダウンロード 5 名 前 拡 張 子 GrADSで 開 くコマンド NetCDF.n sdfopen ~.n コントロールファイル.tl open ~.tl 6 q file と 打 つと 今 開 いたデータの 情 報 を 調 べることができる 1 番 のファイルとして 認 識 ファイルについての 説 明 q file データの 情 報 を 調 べる File 1 : Longterm Monthly Mean SLP NCEP Reanalysis Desriptor: slp.mon.ltm.n ファイルの 名 前 Binary: slp.mon.ltm.n Type = Gridded データの 数 Xsize = 144 Ysize = 7 Zsize = 1 Tsize = 12 Number of Variables = 1 slp 0-999 Monthly Longterm Mean of Sea Level Pressure 変 数 名 東 西 南 北 高 さ 時 間 方 向 の set t 2 d slp set t 1 12 一 度 図 を 消 して 時 間 を2ステップ 目 (2 月 )に 設 定 図 を 描 く 1 月 から12 月 まで d slp アニメーションで 見 る 早 すぎてよくわからない set t 1 12 xanim pause slp 1 月 から12 月 までのアニメーション 図 をクリックするたびにひと 月 進 む 上 に 時 間 も 表 示 されてわかりやすい! xanim アニメーション の GrADSスクリプトライブラリ 参 照 d 変 数 名 図 を 描 く d のあとに 変 数 名 を 入 力 すると 図 が 描 ける d slp 最 初 に 入 っていたデータ(1 月 )の 図 つまり 1968-1996 年 平 均 の1 月 の 海 面 気 圧 が 描 かれる 7 -- 練 習 -- slp 以 外 の 好 きなファイルをダウンロードして 図 を 描 いてみよう! 降 水 について 描 いてみたい 場 合 は ftp://ftp.d.noaa.gov/datasets/nep.reanalysis.derived/surfae_gause/prate.mon.ltm.n をwget 8
GrADS 講 習 会 第 二 回 局 地 的 な 観 測 データはテキスト 形 式 衛 星 データはhdf 形 式 で 公 開 されているものが 多 いが 全 球 データはNetCDF 形 式 のものが 多 い GrADSが 大 活 躍 今 回 の 使 用 データ エルニーニョを 描 く NOAA(アメリカ 海 洋 大 気 圏 局 )サイト http://www.esrl.noaa.gov/psd/data/gridded/data.noaa.ersst.html にある ERSST 公 開 データ sst.mnmean.n GrADSとGrADSスクリプト 09 年 4 月 作 成 14 年 1 月 修 正 Y. Kamae xtermを 起 動 (MaならX11 ygwinならstartxwin.sh et) http://researhmap.jp/muwnuoeel-1772021/#_1772021 にある 02grads.zip をダウンロード 作 業 ディレクトリに 置 く 9798elnino.gs or_reg.sh fwrite-sst.gs unzip 02grads.zip mon-ave.gs mon-fig.gs ninoano.gs d 02grads sst1980-1999.tl sst_mul.gs wget ftp://ftp.d.noaa.gov/datasets/noaa.ersst/sst.mnmean.n sst.mnmean.n を GrADSで 開 いてみよう 2 grads sdfopen sst.mnmean.n q file 1 番 目 に 開 いたファイルなので file 1 File 1 : NOAA Extended Reonstruted SST V2 Desriptor: sst.mnmean.n Binary: sst.mnmean.n Type = Gridded Xsize = 180 Ysize = 89 Zsize = 1 Tsize = 1850 x, y, z, t 方 向 にどれだけデータがあるか Number of Variables = 1 sst 0-999 Monthly Means of Sea Surfae Temperature 変 数 名 GrADSを 起 動 Enter2 回 白 画 面 クリック NetCDFファイルを 開 く ファイルの 情 報 を 見 る 図 を 消 す set gxout shaded シェードを 描 こう set display olor white 背 景 を 白 に 変 更 d sst 新 しい 設 定 で 図 を 描 き bar カラーバーを 表 示 reinit 初 期 状 態 に 戻 す などなど GrADSでデータを 開 いたときは まずq fileをして ファイルの 情 報 を 確 認 しよう ここで 変 数 名 が 何 かわかるので dで 図 を 描 く d sst 変 数 名 sstについての 図 を 描 く GrADSに 関 しては 学 群 実 験 のテキストや 東 北 大 学 大 学 院 理 学 研 究 科 流 体 地 球 物 理 学 講 座 公 開 情 報 /GrADS http://wind.geophys.tohoku.a.jp/index.php?%b8%f8%b%ab%be%f0%ca%f%2fgrads を 参 照 すれば 大 抵 のことはできるようになります 4
領 域 平 均 北 緯 4 度 から 南 緯 4 度, 西 経 150 度 から90 度 の 海 域 はNinoと 呼 ばれ, 気 象 庁 は Ninoの 月 平 均 海 面 水 温 を 用 いてエル ニーニョを 定 義 しています この 領 域 で 平 均 した 値 を 使 って エルニーニョの 強 弱 の 時 系 列 を 書 いてみよう 時 系 列 水 平 方 向 に 幅 のあるデータは 何 も 設 定 しないと 水 平 分 布 図 が 描 かれます このとき 水 平 方 向 の 幅 をなくし 代 わりに 時 間 方 向 に 幅 を 持 たせると 時 系 列 図 が 描 かれます 領 域 平 均 : aave( 変 数 名, lon=a,lon=b,lat=c,lat=d) その 変 数 について 東 西 A~B 南 北 C~D の 領 域 で 平 均 した 値 sdfopen ~.n 90 a=aave(sst,lon=210,lon=270,lat=-4,lat=4) d a 0 210 270 領 域 平 均 の 値 をaと 定 義 し aを 描 いた -90 t=1 で 25.4629 となる 0 60 5 reinit sdfopen ~.n set x 1 水 平 方 向 の 幅 をなくす set y 1 set t 1 120 時 間 方 向 に 幅 を 持 たせる a=aave(sst,lon=210,lon=270,lat=-4,lat=4) d a 10 年 間 のNino SSTの 時 系 列 が 描 かれた 6 時 間 平 均 気 候 値 偏 差 GrADSスクリプト d ave( 変 数 名,t=a,t=b) で 時 間 a~bの 期 間 の 平 均 値 が 描 かれるのはおなじみ 1980 年 1 月 から 1999 年 12 月 までの 偏 差 時 系 列 を 描 いてみよう reinit sdfopen ~.n set x 1 set y 1 set t 151 1752 1980 年 1 月 ~1999 年 12 月 a=aave(sst,lon=210,lon=270,lat=-4,lat=4) set t 1 12 1 月 から12 月 までの lim=ave(a,t+1512,t=1752,12) 各 月 ごとの20 年 間 平 均 値 ( 気 候 値 )を 計 算 modify lim seasonal 気 候 値 limを12か 月 周 期 のデータにする set t 151 1752 d a-lim 偏 差 = 生 の 値 - 気 候 値 (20 年 間 平 均 値 ) 7 82/8 年 97/98 年 が 強 いエルニーニョ 年 だったことがわかる 今 までやってきたことを レシピのように 書 き 留 めて 一 発 で 図 を 描 かせることができる ninoano.gs 偏 差 時 系 列 を 図 化 'reinit' 'sdfopen sst.mnmean.n' 'set x 1' 'set y 1' 'set t 151 1752' 'a=aave(sst,lon=210,lon=270,lat=-4,lat=4)' 'set t 1 12' 'lim=ave(a,t+1512,t=1752,12)' 'modify lim seasonal' 'set t 151 1752' 'd a-lim' 'print ninoano.eps' 9798elnino.gs 強 Elnino 時 の 偏 差 を 図 化 'reinit' 'sdfopen sst.mnmean.n' 'set t 1 12' 'lim=ave(sst,t+1512,t=1752,12)' 'modify lim seasonal' 'set t 1' 'd ave(sst-lim,t=1727,t=1729)' 'print 9798elnino.eps' gradsを 起 動 gradsを 終 了 したのち gs ~.eps run ~.gs で 実 行 で 図 ができているか 見 てみよう 8
GrADS 講 習 会 第 三 回 第 二 回 で 扱 ったデータを 使 います 02gradsディレクトリがある 人 は そこへ 移 動 ない 人 は 第 二 回 2ページ 目 のコマンドを 実 行 tlファイルとgradsスクリプト binファイルへの 書 き 出 し ループで 作 図 09 年 4 月 作 成 14 年 1 月 修 正 Y. Kamae ファイルの 種 類 と 役 割 gs GrADSスクリプト n NetCDFファイル bin バイナリデータ tl コントロールファイル png, eps 画 像 の 形 式 n データと 格 子 情 報 を 含 む 元 データ データ 切 り 出 し 計 算 など bin データ 格 子 情 報 gs 作 図 bin tl binデータの 格 子 情 報 をGrADSに 伝 える GrADSに 作 業 をさせる スクリプト png, eps 他 2 作 業 の 流 れ 154 年 12ヶ 月 の データ 格 子 情 報 20 年 12ヶ 月 データ 1 mon-1.png sst.mnmean.n fwrite-sst.gs sst1980-1999.bin 2 気 候 値 12ヶ 月 mon-ave.gs mon-ave.bin mon-fig.gs スクリプト mon-12.png sst1980-1999.tl mon-ave.tl 120 年 間 のデータだけ 切 り 出 す 格 子 情 報 2 各 月 の 気 候 値 ( 平 年 値 )を 作 成 各 月 の 図 を 描 く binファイルへの 書 き 出 し tlファイル fwrite-sst.gs 必 要 な20 年 間 だけ 取 り 出 してbinに 変 換 reinit sdfopen sst.mnmean.n set x 1 180 set y 1 89 set t 151 1752 set fwrite -le sst1980-1999.bin set gxout fwrite d sst disable fwrite データをファイルに 書 き 出 す 読 み 込 みたい binファイル データ 元 サイト やq fileの 情 報 をもとに 記 述 gradsを 起 動 させ run fwrite-sst.gs で 実 行 reinit し open sst1980-1999.tl で 開 き d sst で 描 かれるのは1980 年 1 月 のデータ sst1980-1999.tl binをgradsで 読 むためのファイル dset ^sst1980-1999.bin titile monthly sst 1980-1999 NOAA ERSST undef 2767 options 65_day_alendar little_endian xdef 180 linear 0 2.0 ydef 89 linear -88.0 2.0 tdef 240 linear 1jan1980 1mo zdef 1 levels 1 vars 1 sst 1 0 x,y sst endvars tlファイルの 書 式 については GrADS tlファイルの 作 成 などを 参 考 に 4
ループを 使 って 書 き 出 し 基 本 的 にfwrite-sst.gs と 同 じ クオーテーションで 囲 ま ない 場 所 は grads 自 体 には 命 令 されない t の 値 が1ずつ 増 えて いく =tのループが1~12 の 範 囲 で 回 る mon-ave.gs 20 年 (240カ 月 )のデータを 使 って 各 月 の 気 候 値 ( 平 年 値 )を 作 る 'reinit' 'open sst1980-1999.tl' 'set x 1 180' 'set y 1 89' 'set gxout fwrite' 'set fwrite -le mon-ave.bin' t=1 while(t<=12) 'set t 't'' 'd ave(sst,t+0,t=240,12)' t=t+1 endwhile 'disable fwrite' grads -l mon-ave.gs で 実 行 grads -l ~.gs ~.gsの 実 行 5 この 場 合 はset t 1 12でも 同 じだが 後 述 の 図 の 書 き 出 しなどの 際 はループを 使 う 必 要 がある できたbinファイル mon-ave.bin を 読 むtlファイルを 作 ろう( 以 前 のtlファイルをコピーして 書 き 換 えよう) p sst1980-1999.tl mon-ave.tl vi mon-ave.tl mon-ave.tl 赤 の 部 分 を 書 き 換 える だけでよい titleは 書 き 変 えなくても 問 題 ない 対 応 するbinファイル 名 変 更 した 空 間 時 間 の 情 報 を 書 き 換 えればよい dset ^mon-ave.bin title monthly average sst 1980-1999 NOAA ERSST undef 2767 options 65_day_alendar little_endian xdef 180 linear 0 2.0 ydef 89 linear -88.0 2.0 tdef 12 linear 1jan1980 1mo zdef 1 levels 1 vars 1 sst 1 0 x,y sst endvars 今 回 の 場 合 読 みこむbinファイルがmon-ave.binになったこと 時 間 の 総 数 が240から 12になったこと の2 点 だけ 変 更 すれば あとはGrADSを 起 動 させて open mon-ave.tl d sst で 図 にできることが 確 認 できる 6 mon-fig.gs それぞれの 行 の 役 割 を 東 北 大 のGrADSページを 見 て 調 べ てみよう 'reinit' 'open mon-ave.tl' 'set lon 40 240' 'set lat -40 60' 'set display olor white' t=1 while(t<=12) '' 'set t 't'' 'set gxout shaded' 'set rgb 20 0 0 255' 'set rgb 21 100 100 255' 'set rgb 22 200 200 255' 'set rgb 2 255 255 255' 'set rgb 24 255 200 200' 'set rgb 25 255 100 100' 'set rgb 26 255 0 0' 'set levs 5 10 15 20 25 0' 'set ols 20 21 22 2 24 25 26' 'd sst' 'bar' 'set gxout ontour' 'set lopts 1 2 0.18' 'set levs 0 2.5 5 7.5 10 12.5 15 17.5 20 22.5 25 27.5 0 2.5' 'set thik 4' 'set olor 1' 'd sst' 'draw title NOAA ERSST lim sst <1980;1999> mon='t'' 'printim mon-'t'.png' t=t+1 endwhile まずは grads -l mon-fig.gs で 実 行 各 月 のアジア 域 の 図 が 低 温 青 高 温 赤 のシェードと コンターで 描 かれる quit で 終 了 し ls してみると 12 個 の 図 ができている ことがわかる 気 候 値 SSTの 季 節 変 化 の 図 の 完 成! アカウント 名 ディレクトリ 02grads に 移 動 してみると それぞれの 図 があるはず 7 8
GrADS 講 習 会 第 四 回 第 二 回 第 三 回 で 扱 ったデータを 使 います カラーパレットの 設 定 図 の 書 き 出 し 02gradsディレクトリがある 人 は そこへ 移 動 ない 人 は 第 二 回 2ページ 目 のコマンドを 実 行 09 年 4 月 作 成 14 年 1 月 修 正 Y. Kamae 2 カラーパレット( 初 期 設 定 ) grads GrADSを 起 動 Enter2 回 白 画 面 クリック sdfopen sst.mnmean.n NetCDFファイルを 開 く q file ファイルの 情 報 を 見 る( 一 番 左 下 に 変 数 名 が 表 示 される) d sst 変 数 名 sstについての 図 を 描 く 図 を 消 す set gxout shaded シェードを 描 く set display olor white 背 景 を 白 に 変 更 d sst 新 しい 設 定 で 図 を 描 く bar カラーバーを 表 示 図 を 消 す コンター シェードを 描 くとき カラーパレットの 初 期 設 定 はレインボーになっている カラーパレットの 設 定 set rgb 20 200 200 200 set rgb 21 100 100 100 set rgb 22 0 0 0 set levs 15 25 set ols 20 21 22 d sst bar set rgb 20 200 200 200 色 番 号 =20を 赤 =200 緑 =200 青 = 200に 設 定 set levs 15 25 境 界 の 値 を 15 25 に 設 定 set ols 20 21 22 levsで 設 定 した 境 界 の 値 に 従 って 色 番 号 をあてはめる 色 番 号 1~15 番 は 既 に 設 定 されている 自 分 で 色 を 設 定 したい 場 合 は 16 以 降 を 使 う この7 行 を 打 ち 込 むと の 色 の 図 になる 値 ~15 15~25 25~ 番 号 20 番 21 番 22 番 赤 緑 青 200 200 200 100 100 100 0 0 0 4
rgbの 設 定 olorコマンド 光 の 原 色 を 使 って 色 を 設 定 する R G r g b 黒 0 0 0 赤 255 0 0 緑 0 255 0 青 0 0 255 黄 255 255 0 B 紫 255 0 255 青 緑 0 255 255 白 255 255 255 http://ja.wikipedia.org/wiki/rgb 5 その 他 の 色 の 例 は http://www.sollabo.om/banban/letur/websafe.html olorというコマンド を 使 えば いちいち 設 定 しなくても 自 動 で 色 をつけてくれる olor 0 0 2.5 d sst bar 0から0まで 2.5きざみで 低 いほど 寒 色 系 高 いほど 暖 色 系 のカラーパレットを 作 成 olor min max int minからmaxまで int 間 隔 で 設 定 (コンターを 引 くときも 使 える) 正 確 にはコマンドではなくスクリプト olor.gsという GrADSスクリプトを 指 定 の 場 所 に 置 いておくことで olor と 打 ちこんだときにそのスクリプトが 起 動 される 具 体 的 にはgrads 本 体 があるディレクトリの 一 つ 上 のlib/の 中 など GrADSスクリプトライブラリ 参 照 6 色 を 塗 るときの 注 意 寒 色 系 冷 たい 寒 い イメージ 茶 色 赤 乾 燥 した イメージ 気 温 の 変 化 降 水 量 の 変 化 暖 色 系 olor min max int -kind blue->white ->yellow->red->darkred 温 かい 熱 い イメージ 緑 青 湿 潤 な イメージ 地 上 気 温 の 将 来 変 化 夏 季 平 均 降 水 量 の 将 来 変 化 olor min max int -kind saddlebrown->white->green 描 く 物 理 量 によってカラーパレットを 変 えると イメージが 伝 わりやすい IPCC 2007 Ch.11より 7 図 の 書 き 出 し 画 面 に 表 示 させた 図 をファイルにするには? png 形 式 にしたい 場 合 printim ~.png eps 形 式 にしたい 場 合 print ~.eps Ver.1.9 以 上 のGrADSのみ 作 成 した 図 を 表 示 するには? png 形 式 の 図 を 表 示 (ImageMagik) display ~.png eps 形 式 の 図 を 表 示 (ghostsript) gs ~.eps pptに 載 せる 程 度 であれば pngで 十 分 Ver.1.8 以 前 のGrADSでは enable print hoge.gx print disable print!gxeps i hoge.gx o hoge.eps 図 の 解 像 度 を 上 げたい epsに 対 応 した 環 境 であれば epsを 使 用 png(や jpg gif)を 使 いたい 場 合 は まずepsで 図 を 出 力 し onvertで 高 画 質 変 換 する GrADS 内 で print hoge.eps コマンドラインで onvert -density 600 -resize 600 -rotate 90 +antialias hoge.eps hoge.png -densityで 解 像 度 を 指 定 -resizeでサイズを 指 定 -rotateで 90 度 回 転 させ +antialiasで 邪 魔 な 横 線 が 入 らないように pngに 変 換 display hoge.png で 確 認 printimで 作 成 したときより 画 質 が 高 いことがわかる 8
GrADS 作 図 オプション 見 やすい 図 に 仕 上 げる GrADS 講 習 会 第 五 回 09 年 4 月 作 成 14 年 1 月 修 正 Y. Kamae 1. 文 字 タイトル 表 示 draw title CMAP Pr & NCEP/NCAR 850hPa Wind JJA xy 軸 ラベル 間 隔 set xlint 10 set ylint 10 xy 軸 ラベル 文 字 色 ( 初 期 1) 太 さ4 大 きさ0.12 set xlopts 1 6 0.19 set ylopts 1 6 0.19 コンターラベル 文 字 色 ( 初 期 1) 太 さ1 大 きさ0.09 set lopts 1 5 0.22 ラベルの 表 示 非 表 示 set lab off set lab on その 他 :GrADSコマンドリファレンス 軸 ラベル アノテーション 2 http://radar.si.hokudai.a.jp/%7eyoshida/study/grads/command/axis.html 2. コンター シェード シェードを 等 間 隔 表 示 最 小 値 最 大 値 間 隔 色 のグラデーション olor 2.5 15 2.5 kind white->green カラーバーの 表 示 大 きさ 縦 0/ 横 1 x 方 向 中 心 位 置 y 方 向 中 心 位 置 barn 1 0 5.5 0.18 コンターを 引 く 値 set levs 5 15 20 コンターの 太 さ set thik 5 コンターの 色 set olor 1 ラベルの 非 表 示 set lab off コンター:set gxout ontour シェード:set gxout shaded 色 の 設 定 間 隔 の 設 定 については 第 四 回 参 照 その 他 :GrADSコマンドリファレンス グラフィックオプション http://radar.si.hokudai.a.jp/%7eyoshida/study/grads/command/graph_opt.html. ベクトル ベクトル:set gxout vetor d 東 西 風 ; 南 北 風 弱 いベクトルの 非 表 示 uとvの 二 乗 和 が~ 以 下 のとき 非 表 示 umask=maskout(u,mag(u,v)-2) vmask=maskout(v,mag(u,v)-2) ベクトルを 数 点 間 隔 で 描 く d skip(umask,2);skip(vmask,2) その 他 :GrADSコマンドリファレンス グラフィックオプション 4 http://radar.si.hokudai.a.jp/%7eyoshida/study/grads/command/graph_opt.html
1 降 水 のシェードを 描 く 'reinit' 'sdfopen preip.mon.ltm.n' 'set gxout shaded' 'set display olor white' '' 'set vpage 0.1 11.0 0. 8.5' 'set lon 40 160' 'set lat -20 50' 'set xlint 10' 'set ylint 10' 'set xlopts 1 6 0.19' 'set ylopts 1 6 0.19' 'olor 2.5 15 2.5 -kind white- >green' 'd ave(preip,t=6,t=8)' 'barn 1 0 5.5 0.18' 'lose 1' 2 風 のベクトルを 描 く 格 子 情 報 が 異 なるため 降 水 と 風 は 同 時 に 開 かず 閉 じてからsetをし 直 し 描 く 背 景 の 地 図 はdのたび 色 が 変 わってしまうので 2 回 目 以 降 は 上 書 きしない 'sdfopen uwnd.mon.ltm.n' 'sdfopen vwnd.mon.ltm.n' 'set vpage 0.1 11.0 0. 8.5' 'set lon 40 160' 'set lat -20 50' 'set z ' 'set xlint 10' 'set ylint 10' 'set xlopts 1 6 0.19' 'set ylopts 1 6 0.19' 'uave=ave(uwnd.1,t=6,t=8)' 'vave=ave(vwnd.2,t=6,t=8)' 'umask=maskout(uave,mag(uave,vav e)-2)' 'vmask=maskout(vave,mag(uave,vav e)-2)' 'set mpdraw off' 'd skip(umask,2);skip(vmask,2)' 'lose 2' 'lose 1' 降 水 のコンター(ラベルなし ラベル あり)を 描 く 'sdfopen preip.mon.ltm.n' 'set vpage 0.1 11.0 0. 8.5' 'set lon 40 160' 'set lat -20 50' 'set xlint 10' 'set ylint 10' 'set xlopts 1 6 0.19' 'set ylopts 1 6 0.19' 'set gxout ontour 'set levs 5 15 20' 'set thik 5' 'set olor 1' 'set lab off' 'set mpdraw off' 'd ave(preip,t=6,t=8)' 'set lopts 1 5 0.22' 'set levs 10' 'set thik 5' 'set olor 1' 'set lab on' 'set mpdraw off' 'd ave(preip,t=6,t=8)' 'draw title CMAP Pr & NCEP/NCAR 850hPa Wind JJA' 'print sakuzu.eps' 5 'printim sakuzu.png' 4. 折 れ 線 折 れ 線 の 太 さ スタイル 色 set thik 9 set style 2 set olor 8 マーカーの 大 きさ スタイル set digsiz 0.15 set mark 4 気 候 値 の 図 などで 年 を 消 した いとき set tlsupp year 数 値 軸 の 範 囲 の 設 定 set vrange 1 10 その 他 :GrADSコマンドリファレンス グラフィックオプション http://radar.si.hokudai.a.jp/%7eyoshida/study/grads/command/graph_opt.html 6 http://radar.si.hokudai.a.jp/%7eyoshida/study/grads/command/olor.html 4. の 作 図 スクリプト 南 アジア 70~100E EQ~20N 北 オーストラリア 120~150E 20S~EQ で 定 義 6~8 平 均 -12~2 平 均 の 降 水 量 分 布 南 北 半 球 の 乾 季 と 雨 季 の 交 替 'reinit' 'sdfopen preip.mon.ltm.n' 'set x 1' 'set t 1 12' 'set display olor white' 'set gxout shaded' '' 'set vpage 0.1 11.0 0.1 8.5' 'set vrange 1 10' 'set xlopts 1 6 0.19' 'set ylopts 1 6 0.19' 'set digsiz 0.15' 'set thik 9' 'set style 2' 'set mark 4' 'set olor 8' 'set tlsupp year' 'd tloop(aave(preip,lon=70,lon=100,lat=0,lat=20))' 'set mark 2' 'set style 1' 'set olor 9' 'set tlsupp year' 'd tloop(aave(preip,lon=120,lon=150,lat=-20,lat=0))' 使 用 データ つづき ( 凡 例 の 表 示 ) set line 0 draw ref 8.4 6.5 10.2 7.6 set line 1 1 6 draw re 8.4 6.5 10.2 7.6 bar_line_set x 8.7 y 7. r 0.08 n 9 l 1 9 m 2 z 0.16 sn 6 sz 0.20 t Aust bar_line_set x 8.7 y 6.8 r 0.08 n 9 l 2 9 m 4 z 0.16 sn 6 sz 0.20 t Asia 'draw title CMAP Pr South Asia vs North Australia' 'print hoge.eps' http://www.d.noaa.gov/publidata/より NCEP/NCAR Reanalysis 長 期 間 月 平 均 データ olor barn bar_line_set の 使 用 法 について GrADSスクリプトライブラリ 東 西 風 ftp://ftp.d.noaa.gov/datasets/nep.reanalysis.derived/pressure/uwnd.mon.ltm.n 南 北 風 ftp://ftp.d.noaa.gov/datasets/nep.reanalysis.derived/pressure/vwnd.mon.ltm.n CMAP(CPC Merged Analysis of Preipitation) standard 長 期 間 月 平 均 データ 次 ページにつづく 7 降 水 量 ftp://ftp.d.noaa.gov/datasets/map/std/preip.mon.ltm.n 8
GrADS 講 習 会 第 六 回 第 二 回 第 三 回 で 扱 ったデータを 使 います GrADSのウィンドウと 描 画 の 位 置 02gradsディレクトリがある 人 は そこへ 移 動 ない 人 は 第 二 回 2ページ 目 のコマンドを 実 行 09 年 4 月 作 成 14 年 1 月 修 正 Y. Kamae 2 GrADSの 起 動 時 画 面 の 大 きさを 変 えられる 8.5 格 子 大 きさ:500 x 400 格 子 :11.0 x 8.5 11.0 格 子 grads -l 大 きさ:250 x 200 格 子 :11.0 x 8.5 grads lg 250x200 landsapeモード = 横 長 11.0 格 子 大 きさ:400 x 500 格 子 :8.5 x 11.0 8.5 格 子 grads -p portraitモード = 横 長 gradsの 起 動 オプション -l 横 長 -b バッチモード( 黒 画 面 開 かない) -p 縦 長 - コマンド 名 起 動 後 このコマンドを 実 行 -g 大 きさ -help 起 動 オプション 表 示 例. GrADSでhoge.gsをrunさせる grads l hoge.gs 8.5 0.0 0.0 11.0 parea 1.0 10.0 x 軸 とy 軸 のラベル を 大 きく sst.mnmean.nを 開 き set display olor white set xlopts 1 4 0.22 set ylopts 1 4 0.22 d 変 数 ラベルが 左 端 をはみ 出 してしまう そこで 図 の 四 角 枠 の 範 囲 を 狭 め 画 面 に 収 まる ようにする 図 の 枠 の 範 囲 を 設 定 set parea 1.0 10.0 0.0 8.5 d 変 数 図 の 枠 を 狭 めたので ラベルも 画 面 に 収 まる 4 図 の 枠 外 の 範 囲 を 決 めたいときは set vpageを 使 う
8.0 4.5 4.0 0.5 2 1 mul.gs について 1 / GrADSスクリプトライブラリ 一 度 に 複 数 の 図 を 並 べることもできる 画 面 の 下 に t=1 を 描 き 画 面 の 上 に t=2 を 描 く d 変 数 (t=1) mul.gsを 使 うと もっと 楽! 横 1x 縦 2に 分 割 し (1,1)に t=1 を 描 き (1,2)に t=2 を 描 く set parea 0.0 11.0 0.5 4.0 set parea 0.0 11.0 4.5 8.0 d 変 数 (t=2) ただし 色 や 書 式 の 設 定 を 直 さないといけないので 面 倒 mul 1 2 1 1 d 変 数 (t=1) mul 1 2 1 2 d 変 数 (t=2) 5 sst_mul.gs 画 面 分 割 の 例 'reinit' 'set display olor white' '' 'set gxout shaded' 'sdfopen sst.mnmean.n' 'set parea 0.5 8.0 1.4 5.5' 'set xlopts 1 6 0.19' 'set ylopts 1 6 0.19' 'set ylint 0' 'set x 1 180' 'set y 1 89' 'set time aug2000' 'olor -5 0 5' 'd sst' 'barn 1.1 0 4.25 0.4' 'set parea 8.5 10.8 1.4 5.5' 'set gxout line' 'a=ave(sst,x=1,x=180)' 'set x 1' 'set xyrev on' 'set olor 1' 'set thik 10' 2000 年 8 月 のSST 分 布 と 東 西 平 均 SST 分 布 'set mark 0' 'set vrange -10.0 0.0' 'set xlint 10' 'd a' 'print hoge.eps' '!onvert -rotate 90 -density 600 -resize 600 +antialias hoge.eps sst_mul.png' 6 '!rm hoge.eps' GrADSの 新 しいバージョンについての 情 報 d/grads2%a4%de%a4%8%a4%e1 GrADS 2.1 以 降 gxprint 任 意 のフォーマットの 画 像 ファイルを 出 力 set rgbで 透 過 色 を 作 成 set tileでドットや 格 子 状 のタイル 模 様 を 描 く Cairoフォントが 使 用 可 能 マークが 追 加 set gxout shade2に 対 応 グリッド 内 挿 ( 解 像 度 の 変 更 ) lterp 65 day alendarのnetcdfファイルに 対 応 していない z 軸 を 降 順 に 並 びかえ shapefileの 読 み 書 き sdfwrite NetCDFの 作 成 set lab masked コンターラベルを 重 ならないように 描 く 画 面 アスペクト 比 を 変 更 (V2.0.a9 以 降 ) GRIB2 形 式 のデータを 読 む wgrib2の 入 手 とコンパイル g2tlの 入 手 実 行 GrADS2 システム 要 件 GrADS2のインストール など 7 8
キホン asii( 人 間 が 読 めるデータ)をbinary( 機 械 しか 読 めないデータ)に 変 換 するプログラム -0.1 2.5 4.0 1.1-10.0 という 中 身 のdata1.txtを 作 り これをbinaryに 変 換 してみよう ASCIIを 変 換 して GrADSで 読 む Fortran + GrADS program main impliit none integer,parameter:: nn=5 real:: a(nn) integer:: in 暗 黙 の 型 宣 言 を 解 除 変 数 の 数 を 設 定 変 数 の 型 を 宣 言 open(10,file='data1.txt', & asiiファイルのopen aess='sequential',form='formatted') open(20,file='data1.bin', & binaryファイルのopen aess='diret',form='unformatted',rel=4*nn) 09 年 4 月 作 成 14 年 1 月 修 正 Y. Kamae read(10,*) (a(in),in=1,nn) write(20,re=1) (a(in),in=1,nn) end 以 上 のプログラムをtxt-bin.f90という 名 前 で 作 成 し コンパイラはifort 等 でもよい g95 txt-bin.f90 2./a.out 実 践 例 としてISLSCP2_1 http://islsp2.sesda.om/islscp2_1/data/snow_sea-ie_oeans/snow_over_xdeg/ のNorthern Hemisphere Monthly Snow Cover Extentデータをbinに 変 換 し GrADSで 読 んでみよう! d 02grads ls less snow_over_data_1d_1986.sv snow_over_data_1d_1986.sv というデータが1995 年 まである sv 形 式 (ASCII)なのでlessで 読 める LONG,LAT,JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC,LAND_MASK -8.50,8.50,100,100,100,100,100,100,100,100,100,100,100,100,1-7.50,8.50,100,100,100,100,100,100,100,100,100,100,100,100,0 というような 並 びになっている このデータをfortranで 読 み 緯 度 経 度 時 間 並 びのbinaryに 変 換 してみよう まずは 簡 単 にf90の 基 本 の 書 式 を 書 き データをカンマ 区 切 りで 読 んでみる program main integer:: 1,2,,4,5,6,7,8,9,10,11,12,d real:: a,b ASCIIデータをopen open(10, file='snow_over_data_1d_1986.sv', & status='unknown',aess='sequential',form='formatted') read(10,'(66a)') ヘッダ 行 66 文 字 を 読 む read(10,*)& a,b,1,2,,4,5,6,7,8,9,10,11,12,d 書 式 識 別 子 を * にしておくと, などを 適 当 に 読 み 飛 ばしてくれる 最 初 の2つが 経 度 緯 度 12 個 が 各 月 データ 最 後 が 海 陸 write(6,*)& a,b,1,2,,4,5,6,7,8,9,10,11,12,d end 以 上 のプログラムをread-sv.f90という 名 前 で 作 成 し すると g95 read-sv.f90./a.out -8.50000 8.50000 100 100 100 100 100 100 100 100 100 100 100 100 1 と 出 力 される 無 事 実 数 整 数 など 読 み 込 みに 成 功 したようだ コンパイラはifort 等 でもよい 4
あとは 宣 言 文 を 正 確 に 記 述 し 最 終 的 に( 経 度, 緯 度, 時 間 )の 変 数 としてbinに 出 力 させる program main impliit none! 暗 黙 の 型 宣 言 の 無 効 integer, parameter:: nl=8721,nx=60,ny=60,nmon=12! 整 数 の 定 数 real, parameter:: undef=1e+20! 実 数 の 定 数 integer:: (nl,nmon),d(nl)! 整 数 の 変 数 integer:: iy,il,mon,lat,lon!ループに 使 う 整 数 real:: a(nl),b(nl),ilon,ilat! 緯 度 経 度 ( 実 数 ) real:: snow(nx,ny,nmon)! 書 き 込 むデータ( 実 数 ) open(10, file='snow_over_data_1d_1986.sv', & status='unknown',aess='sequential',form='formatted') g95 sv-bin.f90 open(20, file='test.bin', & status='unknown',aess='diret',form='unformatted',rel=4*nx*ny)./a.out read(10,'(66a)') do il=1,nl read(10,*) & a(il),b(il),(il,1),(il,2),(il,),(il,4),(il,5),(il,6),& (il,7),(il,8),(il,9),(il,10),(il,11),(il,12),d(il)!データはilとmonの 配 列 にする enddo!il do lat=1,ny do lon=1,nx ilat=lat+2.50 ilon=lon-180.50 do il=1,nl if((b(il)==ilat).and.(a(il)==ilon)) then!il 行 目 のlatlonがilatilonと 一 致 したとき do mon=1,nmon snow(lon,lat,mon)=real((il,mon))!lonlatmonの 関 数 snow=ilmonの 関 数 の 実 数 型 enddo!mon goto 100! 一 致 したときは100へ 一 致 しなかったときは 下 へ endif!a,b enddo!il do mon=1,nmon snow(lon,lat,mon)=undef enddo!mon!どのil 行 目 のlatlonもilatilonと 一 致 しなかったとき データは 存 在 しないため 欠 損 値 を 入 れる goto 100 100 ontinue enddo!lon enddo!lat do mon=1,nmon write(20,re=mon)((snow(lon,lat,mon),lon=1,nx),lat=1,ny)!re= 時 間 とするとgradsで 読 みやすい write(6,*) ((lon,lat,snow(lon,lat,mon),lon=1,nx),lat=1,ny)! 結 果 の 画 面 表 示 5 enddo!mon end binaryを 読 むtlファイルの 作 成 vi test.tl dset ^test.bin title test options big_endian undef 1e+20 xdef 60 linear -180.00 1.00 ydef 60 linear 24.50 1.00 zdef 1 levels 1000 tdef 12 linear jan1986 1mo vars 1 q 0 99 x,y q endvars エンディアンはlittleかbigか 確 認 する grads open test.tl d q で 図 に 描 ける 6 grads open test.tl set display olor white set lat 50 90 olor 0 100 10 -kind white->aqua- >dodgerblue->blak set gxout grfill map nps d q bar Fortran について 参 考 になるページ http://seesaawiki.jp/ykamae_linux-note/d/fortran に 掲 載 のリンク 参 照 で 左 の 図 が 描 ける 7 8