
GPVの「部外形式」データを読むプログラム

● インストール法

本ディレクトリー中の INSTALL ファイルを見よ

● 制限

今のところ「国内２進」形式にしか対応していない。
また、内容をテキストとして表示するか、NetCDFファイルへ変換するかの
どちらかである。将来的には、入力については grib、出力については GrADS
形式に対応したい。

● 実行例

---  NetCDFへの変換 (またはNetCDF経由での内容確認)

gpv2nc という名前のコマンドとしてインストールされるので、それを利用す
る。

ヘルプの表示：

% gpv2nc -h

表示内容は、以下のようになる。
   Usage:
      % /usr/local/bin/gpv2nc [-ihd] [-o output_file] gpv_files..

      -o output_file : output file name (if omitted, determined internally)
      -h : help (to show this message)
      -d : debug mode (does extra printing)
      -i : shows info on the input file (does not dump a file, but creates
           a temporarlly file -- if you do not have a write permission of the
           current directory, specify one you have it by the envronmental
           variable TMPDIR. Example: % export TMPDIR=/tmp).

NetCDF ファイルへの変換：

% gpv2nc  -o msm12sfc18.nc MSM12SFC018_[12]


ファイルの中身の確認（NetCDF ファイルのヘッダー部分だけを一時的に
に作って表示する。）：

% gpv2nc -i MSM12SFC018_[12]

もしも現在のディレクトリーに書き込み権限がない場合、以下などにより、
環境変数 TMPDIR に予めテンポラリーファイル用のディレクトリーを設定して
おく：

% export TMPDIR=/tmp



--- ファイルの内容を見る (ライブラリーのデバグ用出力がだらだらと表示
    される)

% ruby -r /usr/local/lib/ruby/site_ruby/1.6/numru/gpv/bugaifile.rb \
  -e NumRu::BugaiFile::debug  MSM06PLM018_1

ここで、MSM06PLM018_1 は MSM の出力のファイル名の例。見たいものに応じ
て変更せよ（現在、対応しているのは、MSMとRSMである）。
もしも ruby が別のディレクトリーにインストールされている場合、第1行目
はそれに応じてかわる。例えば

% ruby -r /usr/lib/ruby/site_ruby/1.6/numru/gpv/bugaifile.rb \
  -e NumRu::BugaiFile::debug MSM06PLM018_1


● パフォーマンスについて

「国内２進」フォーマットは数100バイトという小さな単位のセクションに細
かく分割した上で収納されている。そのため、どうしても実行効率改善に限度
がある。なお、ボトルネックとなる多ビット整数の読み込みと値のデコードは
C言語による拡張ライブラリー(MultiBitNums)としてある。

● 将来計画

優先度高：

- 出力される NetCDF ファイルの改良：

   * add_offset / scale_factor による圧縮への対応（＝2バイト化）
   * （あれば勿論バグ取り）

優先度中：

- grib への対応（＝GSMへの対応）

優先度低：

- NetCDF以外の出力形式への対応

● その他

ユーザーも、その気になれば好みの形式で出力するプログラムが作れる
筈ではある。