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

[dennou-ruby:003065] Re: Fw: 電脳Rubyで2次元gribファイル読み込み



栗田さま

動いてよかったです.プログラムはだいぶ短くなりましたね.

ここから先は趣味の問題みたいなもんですが,
さらに短く,かつ見通しもよりよく(これが大事)できると思います.
なにせ,形式変換プログラムが簡単にかけるのは 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でダウンロードできますので、興味が 
> あればのぞいてみ
> てください。また、制作者がすぐ近くにおりますので、質問があれ 
> ば、こちら
> で情報を仕入れることもできます。
>