GPVの「部外形式」データを読むプログラム ● インストール法 本ディレクトリー中の INSTALL ファイルを見よ ● 制限 今のところ「国内2進」形式にしか対応していない。 また、内容をテキストとして表示するか、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 ● パフォーマンスについて 「国内2進」フォーマットは数100バイトという小さな単位のセクションに細 かく分割した上で収納されている。そのため、どうしても実行効率改善に限度 がある。なお、ボトルネックとなる多ビット整数の読み込みと値のデコードは C言語による拡張ライブラリー(MultiBitNums)としてある。 ● 将来計画 優先度高: - 出力される NetCDF ファイルの改良: * add_offset / scale_factor による圧縮への対応(=2バイト化) * (あれば勿論バグ取り) 優先度中: - grib への対応(=GSMへの対応) 優先度低: - NetCDF以外の出力形式への対応 ● その他 ユーザーも、その気になれば好みの形式で出力するプログラムが作れる 筈ではある。