[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002795] Fw: Re: grads とpgm



堀之内です。

この話題は dennou-ruby のほうが良かったですね。ということで、
切り替えます。まとめると、次のようになります:

  現状でも grads コントロールファイルを書けば、高知大気象情報
  ページの PGM 形式データが GPhys で読めます。さらに、もし 
  GPhys パッケージ内の GrADS コントロールファイル解釈ライブラリー
  が 時間 (hour) 指定に対応すれば、複数ファイルを束ねて緯度経度時
  間の3次元データとして扱うことも可能なはずです。ただし、欠測で画像
  がないという状況への対応も別途要るでしょう。

Forwarded by Takeshi Horinouchi
----------------------- Original Message -----------------------
 From:    Takeshi Horinouchi
 Date:    Mon, 02 Jul 2007 21:33:35 +0900
 Subject: Re: gradsとpgm
----

水田さま:

こちらでも頂いた ctl ファイル(可視用)を元に作った
ctrlファイルで IR1 の PGM ファイルが読めました。
素晴らしいです!!

# コメント文の長さが長期安定ならいいですが、調べてません。

# 読めるとなると、hour 対応が欲しくなりますね...

なお、一般の PGM 対応については、読みたいデータが出てから
でもいいと思います。現状で面倒なのはヘッダーの長さ調べ
ですが、それだけをするプログラムならすぐ書けますし。

ところで、今日まで grads ヘッダーの変数欄に現れる 99 の意味を
知りませんでした。いつも一定のおまじないぐらいにおもってたの
ですが、数値データの型をあらわすのですね。1 byte符号無し整数
なら、-1,40,1 ですか。

現状では、読み込んだデータは NArray の byte 型になります。
NArray と Numeric の演算は、(少なくともNArrayの現仕様では)
cast されないので(NArray同士しかcastしない)、
一般に物理量を整数型(incl byte)の NArray に読み込むのは、
危険だったりします。また、ソフトとしての GrADS 
のドキュメントをみると、整数の場合も読み込みは浮動小数点にと
なってます(※)。なので、値を取り出す際は sfloat 型にしてはど
うでしょう。あるいは、切り替えられるようにしてもいいかと思います
(デフォルトは、安全を重視して sfloat に)。

(※) http://www.iges.org/grads/gadoc/descriptorfile.html より:
-1,40,arg  This option handles non-float data. Data are converted to 
           floats internally after they are read from the binary file.
           The dimension sequence is assumed to be the default. The
           secondary arg tells GrADS what type of data values are in 
           the binary file: 
    units = -1,40,1     = 1-byte unsigned chars (0-255) 
    units = -1,40,2     = 2-byte unsigned integers
    units = -1,40,2,-1 = 2-byte signed integers
    units = -1,40,4     = 4-byte integers
 

> 堀之内さま:
> 
> 水田です。
> pgmファイルですが、ヘッダーのサイズがわかれば、
> そのサイズを"fileheader"で指定したコントロールファイルを作れば
> GrADS でも GPhys でも読むことができました(添付します)。
> 
> 高知大のデータだけなら、ヘッダーのサイズが一定なようなので
> それを陽に指定すれば複数ファイルにまたがるコントロールファイル
> も簡単に作ることができ、GPhysの中をいじらなくても所望のことは
> 可能と思います(追伸のメールのように時刻付きtemplateに対応
> すればですが)。
> 
> 一般のpgmとなると堀之内さんのおっしゃるようにヘッダーを読んで
> 読み飛ばしのサイズをきめるようにするのがいいと思いますが、
> どれぐらい需要があるかというか、どれぐらいこういう形式での
> 提供があるものなのでしょうか?
> 
> -- 
> 水田 亮
> rmizuta@xxxxxxxxxxxxx
> 
> 
> > From:  Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx>
> > Date:  Mon, 02 Jul 2007 16:11:22 +0900
> > 
> > 水田さま
> > (cc davis-ml)
> > 
> > 高知大学気象情報ページの衛星データは PGM (portable gray format)
> > という画像形式で提供されています。ご存知かもしれませんが、
> > PGM は、非常にべたに数値データを収録する簡単なフォーマットです
> > (http://www.openspc2.org/format/PGM/index.html,
> > http://netpbm.sourceforge.net/doc/pgm.html)。
> > PGMは画像形式として認められているので、ブラウザ等が
> > そのまま表示できるのが利点です。
> > 
> > さて、 (ソフトウェアとしての) GrADS は、PGM 形式の読み込みを
> > サポートしてるでしょうか? grads controlファイルとの親和性は
> > 高いと思うのですが、ちょっと google で調べても、それらしいのは
> > 確認できませんでした。
> > 
> > 本家がサポートしててもしてなくても、
> > GPhys収録の、ruby 用 GrADS クラスでサポートすると、
> > 実用的にはとても役に立つと思います。新たに pgm 用の VArray
> > サブクラスを作る手もありますが、メタデータをどうつけるか、
> > 画像を連ねた時系列をどう扱うか、といった問題があります。
> > ところが、grads コントロールファイルなら、複数ファイルに
> > またがる時系列が扱えます。また、PGM だけだと
> > メタデータが何もないのですが(コメントは入れられますが
> > 形式任意なので機械的解釈不能)、コントロールファイルを
> > 使えば、変数名や単位、座標、時刻等が入れられます。つまり、
> > PGMにはない、「空間の物理量として扱うためのメタデータ」の
> > 仕様として、GrADSコントロールファイルが使えるというわけです。
> > 実装については、binary PGM のみをサポートすることに
> > すれば、ヘッダーを読み飛ばしてべたに読めばいいとい
> > う点で、現在の grads 用ライブラリーの簡単な拡張でいける
> > でしょう(※)。よって、新規プログラミングはかなり
> > 少なくて済むと思います。なお、PGM をサポートする場合、
> > 同時に PBM (portable bit map -- 値が 0/1 用)
> > もサポートするといいでしょう。
> > 
> > (※) データファイルのサフィックスが PGM or PBM の場合、
> >   読み飛ばしのサイズを、ファイルヘッダを読んで決める。
> >   ヘッダから数値(整数)サイズが 1 byte か 2 bytes か
> >   わかる。なお、NArrayに読み込むに当たっては、不動小数点
> >   (single float) を使うのが無難でしょう。
> > 
> > # ところで、エンディアンはどうなってるんでしょうね? 
> >    とりあえずひまわりデータは1 byte なのでどっちでもいいですが。
> >    規定無しか??

--
堀之内 武  <horinout@xxxxxxxxxxxxxxxxxx>
611-0011 宇治市五ヶ庄  京都大学生存圏研究所



--------------------- Original Message Ends --------------------

--
堀之内 武  <horinout@xxxxxxxxxxxxxxxxxx>
611-0011 宇治市五ヶ庄  京都大学生存圏研究所