about GAVE

0. 目次

Topへ






1. 概要

1.1. GAVE とは

GAVE とは NetCDF ビューアである. NetCDF とは 多次元データのデータ形式の1つで、大気・海洋の分野でよく使われているデータ形式である. NetCDF 形式の多次元データファイルを,DCL の描画ライブラリを用いて可視化することができる. GUI (グラフィックユーザーインターフェース) であるので, ユーザーは Gtk+ によって作られるウィジェット (ウィンドウやボタン等) をマウス操作と多少の文字入力 という直観的な操作で,NetCDF 形式の多次元データを扱い,可視化することができる. ただし NetCDF 形式データの生成については,GAVE は関係していない.
図1:GAVE の スクリーンショット
GAVE スクリーンショット



1.2. GAVE で現在実行できること

GAVE は以下のような機能を実装している.
  1. 変数の選択
  2. 2次元データのグラフ化
  3. 3次元データのコンター図化
  4. 球面への投影
  5. タイトル,欠損値の設定
  6. 軸の設定(タイトル,単位)
  7. 描画を動画にして表示
  8. コンターのトーン設定
  9. 絵のサイズ変更
  10. データの属性値を見る
  11. 絵の保存
  12. 絵をRuby/DCLコードで保存



1.3. まだできないこと

などなど.
Topへ






2. GAVE の構成

GAVE の構成について自分なりの解釈を書いてみた.
図2:GAVE の構成
gdcl_image
GAVE はユーザーがマウス操作などで直接対話するものを担っている部分 ()と, ユーザーが知っている必要はないがデータ読み込みや数学的処理,グラフィック処理など をしている部分()に分けることができる. 前者は Gtk+部分()であり、 後者は DCL 部分() と NetCDF 部分()からなっている.


2.1. GTK+ 部分

Gtk+
Gtk 本体にオブジェクト指向的要素が加わったものと Gdk の2つから成る. ウィジェットは継承やシグナルの機能をもつ. バージョン 1.2 は GLib1.2 のみに依存しているが バージョン 2.0 になると国際化を考慮した作りになり, Glib2.0 の他, pango, atkを必要とする.
Gtk (GIMP Tool Kit)
ウィンドウのボタン,ラベルなどのウィジェットを持っている. すべてのウィジェットは単階層で継承の機能は持たない. ウィジェットの操作はコールバックで行う.
Gdk (GIMP Drawing Kit)
グラフィックス描画のためのライブラリ. XLibをラップする部分と,GLibのユーティリティ関数からなる.
GLib
リンクドリストや汎用データ型などサポートするユーティリティ関数の ライブラリで移植性の問題を解決している. バージョン 2.0 からはオブジェクト指向プログラミングの実装を GLib が行っている. コンパイルに pkg-config を必要とする.
Imlib
多くのフォーマットに対応した画像ファイルの読み込みとレンダリングの機能を持ったライブラリ. 画像の拡大縮小での表示がきれいにできる.
Ruby/Gtk
Ruby で Gtk+ の大部分を扱える.
Ruby/Imlib
Ruby/Imlib は Ruby/Gtk 0.22 以上に依存している.



2.2. DCL 部分

DCL
地球流体関係者が長年にわたり蓄積してきた Fortran 77 ベースの グラフィック, 文字処理, 数値基礎処理ライブラリ. DCL(C),Ruby/DCL,または DCL(F90) の最下層にあたり,機能拡張の根源である.
DCL(C)
DCL を f2c で C言語に翻訳したもの. GAVE ではこれを GTK+ から利用できるようにパッチを当てたものを使う.
Ruby/DCL
DCL(C) の Rubyラッパー. (DCL-C がなくても機能する!?) GAVE ではこれを GTK+ から利用できるようにパッチを当てたものを使う.



2.3. NetCDF 部分

NetCDF
NetCDF 形式のデータを扱う. この形式のデータは NetCDF 形式に基づき,データそのものにデータの持つ属性, 振る舞いが記述されている.
Ruby/NetCDF
NetCDF を Ruby で記述できるようにしたもの.
NArray
Rubyの浮動小数配列クラス. 浮動小数のみを扱う配列のため,実行速度が標準の配列 Array よりかなり速い.
FFTW
高速フーリエ変換用ライブラリ. NArray はこれを使うことができる.









3. インストール方法 : ソースからコンパイルする方法

3.1. Ruby 部分

Ruby 本家からソースをダウンロードしてコンパイルする.
$ tar zxvf ruby-1.6.8.tar.gz
$ cd ruby-1.6.8
$ ./configure
$ make
# make install
$ ruby -v



3.2. Gtk+ 部分

Gtk+
Gtk+ 本家から ソースをダウンロードしてコンパイルする. Gtk+-1.2 のコンパイルは, Glib-1.2 (これには pkgconfig というものが必要 )に依存する. GAVE は Gtk+-2.* に対応していないので必ず バージョン 1.2 を使うこと. ( GAVE だけでなく DCL の Gtk 対応版も 1.2 に基づいている. )
Imlib
gnomeからソースをダウンロードして コンパイルする。コンパイル時に TIFF や GIF を要求するので適宜インストールする. ( 面倒なので libtiff3g-dev, giflib3g-dev という Debian パッケージを用いた. )
Ruby/Gtk
SourceForge のダウンロードページから取得するのだが, ruby-gtk ではなく ruby-gnome-allを使うとよい. なぜなら,これで Ruby/Imlib も入るからである.
Ruby/Imlib
Ruby/Imlib 単体を入れる場合, まず ruby-gnome-all をダウンロードする. 展開後, いくつかのディレクトリが作成されるうち gdk_imlib に移動する. その中の extconf.rb を実行し Makefile を作成しコンパイルする.



3.3. DCL 部分

Dcl は Gtk+ から呼び出せる用にするパッチをあてたものを使わなければならない. ソースおよびインストール方法は西澤さんの 「GAVE関連のインストール」 に詳しく書いてある.




3.4. NetCDF 部分

NArray
RAA から NArray のソースをダウンロードしてコンパイルする. 手順は通常のRubyライブラリと同じだが「電脳 Ruby 〜 いんすとーる編」 にも詳しくかいてある. 注意するべき点は,FFTW を必要とする点である. なくてもコンパイルはできてしまうが.
NetCDF, Ruby/NetCDF
ソースおよびインストール方法は,「電脳 Ruby 〜 いんすとーる編」 に詳しくかいてある.



3.5. GAVE 本体

ファイル( gave-1.0.0-beta2.tar.gz ) を西澤さんの 「GAVE関連のインストール」からもらってくる. インストールは,install.rb スクリプトを用いて,Ruby指定のディレクトリにインストールする. gave は デフォルトでは /usr/local/bin にインストールされるので,パスが通っていることを確認して実行する.
$ wget http://www-mete.kugi.kyoto-u.ac.jp/seiya/dcl/tarball/gave-1.0.0-beta2.tar.gz
$ tar zxvf gave-1.0.0-beta2.tar.gz
$ cd gave
# ruby install.rb
$ gave






4. インストール方法 : Debian パッケージを使う方法

以下のパッケージは 正式な Debian パッケージがないため自分で作ったものである. ソースからコンパイルする気がなければ使うと楽かも知れない. ただし,この後の文章は一部これらを使うことを前提にしている. パッケージ名の前の記号「◎」は GAVE を動かすのに必要なパッケージを表す. 「□」は GAVE を動かすのに直接必要ではないが(個人的には)あると便利であると思われるパッケージを表す. 「△」は,ソースからコンパイルする際には必要となるヘッダファイルを含むパッケージを表すので, ここでは特に必要の無いパッケージである. パッケージ名にリンクが貼っていないものは Debian ミラーサイトからファイルをダウンロードするか apt や dselect を用いてインストールして下さい.


4.1. Ruby 部分のインストール

ruby
Ruby インタプリタ.
libruby
Ruby を動かすために最低限のライブラリ.
ruby-dev
NArray, Ruby/DCL, Ruby/NetCDF, Ruby/Gtk+ をソースからコンパイルする際に必要となる.
ruby-elisp
Emacs で ruby-mode を使うためのパッケージ. Ruby プログラムの色分けやインデント調整を行なってくれる.



4.2. Gtk+ 部分

libgtk-ruby
Ruby/Gtk+ を利用するためのライブラリ. libgtk1.2, libglib1.2, libruby などに依存している.
libgdk-imlib-ruby
Ruby/Imlib を利用するためのライブラリ. gdk-imlib1, libgtk-ruby などに依存している.

このパッケージの安定版バージョンは 0.25 である. バージョン 0.25 では メソッド( GdkImlib::Image::create_from_drawable )が無いため GAVE は 描画したイメージの保存ができない. そのため不安定版バージョン 0.33 を用いるか,新しいソースをコンパイルしなければイメージの保存ができない. )

libgtk1.2-dev
dcl-c, ruby-dcl を Gtk 付きでコンパイルする際に必要.
gdk-imlib-dev
dcl-c, ruby-dcl を Gtk 付きでコンパイルする際に.



4.3. DCL 部分

ruby-dc (1.2.2)
Ruby/DCL の Gtk+ を利用できるようにしたもの.
dcl-c (5.2.3)
DCL の Gtk+ を利用できるようにしたもの.
g77
dcl-c をソースからコンパイルする際は必要.



4.4. NetCDF 部分

ruby-narray
NArray
ruby-netcdf
Ruby/NetCDF
netcdf-bin
ncdump 等の NetCDF 支援ツール. netcdf3g に依存する.
ruby-narray-dev
ruby-netcdf をコンパイルする際に必要.
netcdf3g
Ruby/NetCDF を使う際は必要ないが,netcdf-bin を使う際に必要.
netcdfg-dev
ruby-netcdf をソースからコンパイルする際に必要.
fftw2
高速フーリエ変換を NArray で使うなら必要.
fftw-dev
narray を正しくコンパイルしようとするなら必要.



4.5. GAVE 本体

gave
gave の本体



4.6. GAVE を最小構成で入れるには

Debian 3.0 環境下に,とりあえず GAVE を動かすには以下の パッケージを順に入れればよい.
  1. ruby : Ruby インタプリタ (同時に Ruby ライブラリ も入る)
  2. ruby-narray : NArray ライブラリ
  3. libgdk-imlib-ruby : RubyImlib (同時に Ruby/Gtk+ も入る) ()
  4. dcl-c : DCL(C) for Gtk+
  5. ruby-dcl : Ruby/DCL for Gtk+
  6. ruby-netcdf : Ruby/NetCDF
  7. gave : GAVE 本体






5. 使用方法

5.1. データ準備

CDC/NOAA ECMWF / ERA40(データは塚原さんがERA40からダウンロードしたものを使わせていただいた.)


5.2. 起動 (メインウィンドウ,ファイル選択ウィンドウ)

GAVE を起動しファイルを選択する.
$ gave.rb
または,ファイル名を指定して起動する.
$ gave.rb slp.2003.nc
すると次のようなウィンドウが開く.
図3:メインウィンドウ
メインウィンドウ
このメインウィンドウから描画を指定したりや他のウィンドウを開いたりする。


5.3. 描画

図4:Variable の選択
ファイル選択ウィンドウ
メインウィンドウの Variable から air を選択し,Axis(x) と Axis(y) を選択をした。
図5:描画ウィンドウ
描画ウィンドウ
draw ボタンをクリックしすると描画が始まる. (このとき Ruby/DCL ライブラリの dcl.rb を使っている. )





6. 参考文献








最終更新日 : 2004-01-08