#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
# 
# = 履歴
# * 2012/06/14 Satoshi NODA  作成
# 


# 以下 2 行は GPhys を使うためのおまじない
require "numru/ggraph"
include NumRu

# 用いる NetCDF ファイル
SRC = '0403.nc'

# 温度の描画する値の設定
T_MIN = 230
T_MAX = 275
T_INT = 5
# ジオポテンシャル高度の描画する値の設定
Z_MIN = 5700 - 600
Z_MAX = 5700 + 360
Z_INT = 60

P = 500   # 切り出す気圧面

### NetCDF ファイルからデータを読み込む
temp = GPhys::IO.open(SRC, 'temp').cut('p'=>P)  # P hPa 面の温度
z = GPhys::IO.open(SRC, 'z').cut('p'=>P)  # P hPa 面のジオポテンシャル高度
time = GPhys::IO.open(SRC, 'time').val    # 時間軸を取り出して NArray に変換

### ウィンドウを開く
DCL.gropn(4)

### 図の設定
# `_' などの文字を誤って制御文字として解釈しないためのおまじない
DCL.sgpset('lcntl', false)

GGraph.set_fig('viewport'=>[0.0,0.73,0.2,0.75])   # ウィンドウにおける描画範囲
GGraph.set_fig('itr'=>10)             # 正距円筒図法
GGraph.set_map('coast_japan'=>true)   # 日本付近の海岸線を表示
GGraph.set_axes('xtickint'=>5, 'xlabelint'=>10)  # 横軸の目盛設定
GGraph.set_axes('ytickint'=>5, 'ylabelint'=>10)  # 縦軸の目盛設定

### メインループ
time.each{|t|
  gp1 = temp.cut('time'=>t)   # 時間 t の値だけ切り出す
  gp2 = z.cut('time'=>t)      # 時間 t の値だけ切り出す
  # トーンを描く
  GGraph.tone( gp1, true, 'min'=>T_MIN, 'max'=>T_MAX, 'interval'=>T_INT )
  # コンターを描く (第二引数の false は重ね書きを意味する)
  GGraph.contour( gp2, false, 'min'=>Z_MIN, 'max'=>Z_MAX, 'interval'=>Z_INT )
  # トーンのカラーバーを描画
  GGraph.color_bar
}

# ウィンドウを閉じる
DCL.grcls
