作成:1993430s 山下雅生

問題1

私は2020年の東西平均した子午面温度分布の季節変化について、図を作成するスクリプトを作成した。

利用したのはNCEP/NCAR Reanalysisの月平均気温データである。

描画スクリプトのソース

TXTファイル

#!/usr/bin/ruby
require "numru/ggraph"
include NumRu

gp = GPhys::IO.open("air.mon.mean.nc","air")  #月平均気温のデータを使用
gp = gp.mean('lon')                           #経度方向で平均

DCL.swpset("ifl",1)                           #pngで出力
DCL.gropn(2)                                  #ファイル出力の指定

GGraph.set_fig('itr'=>1)                      #両軸を線形で描画

for i in 1..12                                #1月~12月

  tlabel = "2020-" + i.to_s + "-01 00:00:0.0" #日時の指定
  print i, " : " , tlabel, "\n"               #出力時の進捗確認に利用

  gpm = gp.cut('time'=>DateTime.parse(tlabel))  #指定した日時で切り取り

  GGraph.tone(gpm,true,'min'=>-90,'max'=>30)  #カラーマップの描画
  GGraph.contour(gpm,false)                   #等温線の描画
  GGraph.color_bar                            #カラーバーの描画

end

DCL.grcls

        

スクリプトの使い方

  1. 上記リンクからデータ及びスクリプトをダウンロードする。
  2. データをスクリプトと同じディレクトリにair.mon.mean.ncで保存する。
  3. 保存したディレクトリでスクリプトを実行すると、12枚のpngファイル(dcl_0001.png~dcl_0012.png)が出力される。
  4. convertコマンドを使用し、convert -delay 100 -loop 0 dcl_*.png result1.gifを実行すると、12枚のpngファイルを1つのgifに変換できる。

結果

GIFファイル
Not found

考察

*ここでは、概ね圧力200mbar以下の領域を高層、600mbar以上の領域を低層と呼称する。

工夫した点、感想など

問題2

問題1と同じデータを使い、東経135度、北緯35度における1980~2020年の、1980年を基準として規格化した8月の圧力-温度分布を描画した。

描画スクリプトのソース

TXTファイル

#!/usr/bin/ruby
require "numru/ggraph"
include NumRu

gp = GPhys::IO.open("air.mon.mean.nc","air")  #月平均気温のデータ
gp = gp.cut('lon'=>135,'lat'=>35)             #東経135度、北緯35度を選択

DCL.swpset("ifl",1) #pngで出力
DCL.gropn(2)

GGraph.set_fig('itr'=>1)  #両軸線形グラフ
 
yr = 1980   #年の設定
id = 10     #線の色の設定

#基準とする1980年の温度分布
gp80 = gp.cut('time'=>DateTime.parse(yr.to_s + "-08-01 00:00:0.0"))
#1980年のデータで規格化された1980年の温度分布(つまり1)
gpy = gp.cut('time'=>DateTime.parse(yr.to_s + "-08-01 00:00:0.0")) / gp80
GGraph.line(gpy,true,"exchange"=>true,"min"=>0.5,"max"=>2)

for i in 1..4   #1990~2020

  yr = yr + 10  #先のデータの十年後
  id = id + 10  #線の色の変更:黒→赤→緑→青→黄

  #1980年で規格化された各年の温度分布
  gpy = gp.cut('time'=>DateTime.parse(yr.to_s + "-08-01 00:00:0.0")) / gp80
  GGraph.line(gpy,false,"exchange"=>true,"index"=>id,"min"=>0.5,"max"=>2)

end

DCL.grcls

        

スクリプトの使い方

  1. ダウンロードしたスクリプトとデータ(air.mon.mean.nc)を同一フォルダに置く
  2. そのディレクトリでスクリプトを実行すると、pngファイルが出力される。

結果

PNGファイル
Not found
※黒:1980年、赤:1990年、緑:2000年、青:2010年、黄:2020年

考察

工夫した点、感想など

協力