コマンドラインから netcdf データを描画する
ー gpview, gpvect 実習
岩谷菜々子, 岡田和真
神戸大学大学院理学研究科惑星学専攻
2021 年 1 1 月 19 日

はじめに
• itpass 実習では, netcdf 形式のデータを, GPhys を用いた ruby スクリプトファイルを作って描画する方法を説明した.
• 今回は, netcdf 形式のデータを, コマンドラインで描画する
ことのできるコマンド gpview, gpvect を使ってみる.
– gpview: 2 次元等値線・トーン図, 1 次元線グラフ– gpvect : ベクトル図

はじめに• なお, 描画自体は, 既に説明した方法で ruby スクリプトを作ればよい.
• gpview, gpvect を用いた描画は, スクリプトファイルを編集することなく素早く実行できることが利点である.
– “quick look” に便利– 例えば議論中に「○○の分布はどうなっているの?」などと聞かれた際にすぐに確認できると, 即座に議論を進めることができる.

gpview, gpvect• 実態は GPhys を用いた ruby スクリプト.
• 引数に netcdf ファイルや描画する変数名を指定する.
• さらに下のようなことができる.
– 描画に使用するデータの範囲指定– 簡単な演算• 平均• 平均からのずれ• 標準偏差– 連続描画（動画）gpview 使い方• 基本形$ gpview [ファイル名]@[変数名] [オプション]• 座標値を指定$ gpview [ファイル名]@[変数名],[座標1]=[値] [オプション]• 座標範囲を指定$ gpview [ファイル名]@[変数名],[座標1]=[開始値]:[終了値] [オプション]• 座標値（範囲）を複数指定$ gpview [ファイル名]@[変数名],[座標1]=[値],[座標2]=[値] [オプション]
ここに空白を入れないgpview 使い方• 基本形$ gpview Temp.nc@Temp• 座標値を指定$ gpview Temp.nc@Temp,lon=180• 座標範囲を指定$ gpview Temp.nc@Temp,lon=150:210• 座標値（範囲）を複数指定$ gpview Temp.nc@Temp,lon=150:210,lat=0:90
ここに空白を入れないgpview オプション--help--ex--mean [軸]--eddy [軸]--nocont--range [最小値]:[最大値]--anim [軸]--smooth--itr nn=1
n=3--wsn nn=1

: ヘルプ
: 縦軸と横軸を入れ替える: [軸] の方向に平均: [軸] の方向の平均からのずれ: 等値線を描かない: 色付け等をの範囲を指定: [軸] 方向にアニメーション: --anim 指定時にアニメーションが滑らかになる:でも止まらない.

: 縦軸線形, 横軸線形,: 縦軸線形, 横軸対数,n=2n=4: 縦軸対数, 横軸線形
: 縦軸対数, 横軸対数

: 画面に出力,n=2: pdf ファイル (dcl.pdf) に出力

gpview オプション$ gpview Temp.nc@Temp,lat=0:90 --mean lon --wsn 2 --itr 2– lon 軸方向に平均– pdf ファイルに出力– 縦軸対数, 横軸線形

やってみよう のための準備 : サンプルファイル• 下の URL にあるサンプルファイルで説明
https://itpass.scitec.kobe-u.ac.jp/seminar/lecture/fy2020/201217/pub/– Temp.nc– U.nc– V.nc

温度
東西風
南北風– なお, このデータは, DCPAM での Held and Suarez (1994) 実
験の結果（解像度: T21L20, データの期間: 1200-1210 日目）.

やってみよう のための準備 : ファイルの内容• ncdump を使って内容を確認$ ncdump Temp.nc | less• サンプルファイルの確認– Temp.nc– U.nc– V.nc

温度東西風南北風• 主要な軸（次元）
– lon
– lat
– sig– time

経度
緯度
σ=p/ps （鉛直座標）
時間（変数 Temp）（変数 U）（変数 V）

gpview やってみよう 0• ヘルプを確認する$ gpview --help= NAME

gpview - quick viewer for the values of a variable specified by a gtool4-type UR(1) for 1-dimensional variable, make line plot.
(2) for 2-dimensional variable, make contour/tone plot.
(3) for 3/more-dimensional variable, make contour/tone plot, select first 2D. pos= USAGEThe first command form is% gpview [options] gturl1 gturl2 gturl3 ...

gpview やってみよう 1• 温度の水平分布– [lon– [lat– [sig– [time全部]
全部]
最初の値]
最初の値]

$ gpview Temp.nc@Temp
ここに空白を入れないgpview やってみよう 2• 温度の水平分布– [lon– [lat– [sig– [time全部]
全部]
最初の値]
最初の値]

– 色付け範囲指定$ gpview Temp.nc@Temp --range 270:310
ここに空白を入れないgpview やってみよう 3• 温度の水平分布– [lon– [lat– [sig– time全部]
全部]
最初の値]
1210 日目$ gpview Temp.nc@Temp,time=1210
ここに空白を入れないgpview やってみよう 4• 温度の水平分布– lon– [lat– [sig– time0180˚
全部]
最初の値]
1210 日目$ gpview Temp.nc@Temp,time=1210,lon=0:180
ここに空白を入れないgpview やってみよう 5• 温度の子午面分布– lon– [lat– [sig– time180˚全部]
全部]
1210 日目$ gpview Temp.nc@Temp,time=1210,lon=180
ここに空白を入れないgpview やってみよう 6• 温度の鉛直分布
– lon
– lat
– [sig– time180˚
0˚全部]
1210 日目$ gpview Temp.nc@Temp,time=1210,lon=180,lat=0
ここに空白を入れないgpview やってみよう 7• 温度の鉛直分布
– lon
– lat
– [sig– time180˚0˚全部]
1210 日目– 縦軸と横軸を交換$ gpview Temp.nc@Temp,time=1210,lon=180,lat=0 --ex
ここに空白を入れないgpview やってみよう 8• 東西平均温度の子午面分布– [lon– [lat– [sig– [time全部] 平均全部]全部]最初の時刻]$ gpview Temp.nc@Temp --mean lon

ここに空白を入れないgpview やってみよう 9• 東西平均温度の子午面分布– [lon– [lat– [sig– [time全部] 平均全部]全部]最初の時刻]– 縦軸対数$ gpview Temp.nc@Temp --mean lon --itr 2

ここに空白を入れないgpview やってみよう 10• 東西平均温度の子午面分布– [lon– [lat– [sig– [time全部] 平均全部]全部]最初の時刻]– 縦軸対数– ファイル (dcl.pdf) 出力$ gpview Temp.nc@Temp --mean lon --itr 2 --wsn 2
ここに空白を入れないgpview やってみよう 11• 温度の水平分布の動画– [lon– [lat– [sig– [time全部]
全部]
最初の値]
全部] 動画$ gpview Temp.nc@Temp --anim time
ここに空白を入れない（クリックごとに次のコマを表示
終了するには図中で “q” を押す）

gpview やってみよう 12• 温度の水平分布の動画– [lon– [lat– [sig– [time全部]
全部]
最初の値]
全部] 動画– 滑らかな動画• 途中で止まらない$ gpview Temp.nc@Temp --anim time --smooth
ここに空白を入れないgpvect 使い方• 基本形$ gpvect [Vxファイル名]@[変数名] [Vyファイル名]@[変数名] [オプション]• スカラー量も描画$ gpvect --scalar [ファイル名]@[変数名][Vxファイル名]@[変数名] [Vyファイル名]@[変数名] [オプション]（コマンドは一行です）• gpview と同様に– 範囲を指定できる– オプションを指定できるgpvect やってみよう 0• ヘルプを確認する$ gpvect --help/usr/bin/gpvect:505: warning: key "label" is duplicated and overwritten on line 51=NAME

gpvect - drawing 2-dim vector fiels. Contour/tone of scalar field can be plotted sim==USAGEThe first command form is for only vector field plotting.
% gpvect [options] gturl_x gturl_y ....

where the format of the gturl isgpvect やってみよう 1• 温度の水平分布– [lon– [lat– [sig– [time全部]
全部]
最初の値]
最初の値]

$ gpvect U.nc@U V.nc@V --wsn 1
ここに空白を入れない

画面への描画の指定（本来は不要なはずだが付けないとエラーが出ることもある）

gpvect やってみよう 2• 温度の水平分布– [lon– [lat– [sig– [time全部]
全部]
最初の値]
最初の値]

$ gpvect --scalar Temp.nc@Temp U.nc@U V.nc@V --wsn 1
ここに空白を入れない

まとめ• gpview, gpvect は “quick look” に便利.
• 使って慣れると良いでしょう.
• 補足– 描画には「完璧な方法」はない（と思う）.
– 描画方法の好みは人によって大きく異なる.
– 道具（ソフトウェア）それぞれの特長を生かして使い分けると良いでしょう.