[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:003065] Re: Fw: 電脳Rubyで2次元gribファイル読み込み
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:003065] Re: Fw: 電脳Rubyで2次元gribファイル読み込み
- From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxx>
- Date: Wed, 04 Mar 2009 23:26:48 +0900
栗田さま
動いてよかったです.プログラムはだいぶ短くなりましたね.
ここから先は趣味の問題みたいなもんですが,
さらに短く,かつ見通しもよりよく(これが大事)できると思います.
なにせ,形式変換プログラムが簡単にかけるのは GPhys の
売りのひとつなので,ついついベストを追求したくなります.
データが手元になく確認できないので方針だけになりますが.
GRIBファイルをあらわす gphys の格子コピーを作成して
insert_axis 等を使います.すると,lon = gphys.axis(0)
等は不要になります.また,GPhysやNArray等の shape
メソッドを活用するともっと簡単になるところもあります.
あと,年間のループをまわした上でファイルがあるときだけ
対応する代わりに Dir.glob で存在するふぁいるだけ
拾ってループをまわすこともできます.
# なにせ趣味の領域なので,栗田さんにやってみてくださいという
つもりはありませんが.
堀之内
> ご助言に従って、複数の変数が日付毎に格納されているJRA25
> データを、モデル出力と同じように、1変数ずつの4次元
> NetCDF
> データに変換するプログラムをリバイスしてみました
> (grib2nc.rb)。
>
> 使用しているデータは、JRA25データのanal_p/anl_p25
> と同じ
> 要素が入った、水平1.25度格子データです。
>
> http://jra.kishou.go.jp/JRA-25/elements.html
>
> これは、6時間値毎に1ファイルになっておりますので、各
> ファイル
> から指定する要素を抜き出し、1ファイル1要素のgrib
> ファイルを
> 1年分つくり、それをRubyプログラムで4次元データに
> するという流れ
> になっています(添付したgrib2nc.sh参照)。
>
> Rubyプログラムでは、例えば
> TMP2008010100.grib
> TMP2008010200.grib
> :
> :
>
> といったように複数個に分けられているGrib形式の気温デー
> タを読み込み
> これを4次元Arrayにした後に、NetCDFで書き出
> すということをしてい
> ます。また、たまに欠損時間がありますので、それを考慮して、最初に、
> 365日分の全データに欠損値を入れておき、
>
> Line 38: array = NArray.sfloat(x,y,z,nd).fill!(rmiss)
>
> そこにデータがある日にちだけデータを上書きして行くことを行ってい
> ます。ちょっとTMP2008010100.grib, TMP2008010200.gribと
> いうファ
> イルを作って
>
> ruby grib2nc.rb
>
> としてみたところ、出力データもちゃんと出力できました。
>
> <GPhys grid=<4D grid <axis pos=<'lon' in 'TMP' 288>>
> <axis pos=<'lat' in 'TMP' 145>>
> <axis pos=<'level' in 'TMP' 23>>
> <axis pos=<'time' sfloat[1] val=[0.0,]>>>
> data=<'TMP' sfloat[288, 145, 23, 1]
> val
> =
> [241.051971435547,241.051971435547,241.051971435547,241.051971435547
> ,...]>>
>
> HGTを登録できれば、Rubyを使ってJRAデータもGrib->NetCDF
> が便利に
> できそうです。以前は、Gradsでも、lats4dコマンドを
> 使って、
> Grib->NetCDF変換が便利にできたのですが、最新のGrads2.0
> ではサポート
> されなくなってしまいまいましたので、電脳rubyで簡単にで
> きると非常に嬉
> しいです。
>
> また、NetCDFデータの可視化ですが、現在いるゴダード宇宙
> 科学研究所
> では、panoplyというJavaソフトがあり、コンパイルせ
> ずに、ただファイル
> を置いた場所にパスを通すだけで全球データのクイックルックがで
> きます。
>
> http://www.giss.nasa.gov/tools/panoply/
>
> 上記のサイトからfreeでダウンロードできますので、興味が
> あればのぞいてみ
> てください。また、制作者がすぐ近くにおりますので、質問があれ
> ば、こちら
> で情報を仕入れることもできます。
>