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

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



堀之内です。

もはや衛星データ自体の話題になってしまいますが、昨日のメールで
誤解を招くといけないので一応フォロー。高知大から得られる衛星デー
タの値は、そのままでは輝度温度でなく(255以下に収まるわけない)、
換算テーブル("CAL"データ) を使う必要がありました。ひとの
プログラムで NetCDF 化して使ってたので知りませんでした。
この場合、GPhys の grads インタフェースで扱うのであれば、
gphys.data (内部変数 @data. VArrayGrADSクラス) のメソッド 
val を、特異メソッドで再定義するというのが、手っ取り早いかと
思います。

> 堀之内です。
> 
> この話題は 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 宇治市五ヶ庄  京都大学生存圏研究所