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

[dennou-ruby:003623] Re: GPhys::Grib_IO で grib データを読みたい



豊田さま

助言ありがとうございます。今回は GRIB でないデータでしたが、
今後 GRIB なデータを読む際にはそのつもりで読もうと思います。

内藤

(2013/01/25 17:45), TOYODA Eizi wrote:
> 内藤さま
> 
> 今頃気がついてすみませんが、JRA25 の GRIB はすべて GRIB 1 です。 Edition 
> 2 は使われておりません。JRA55 も同様の予定です。
> 
> 豊田
> ----- Original Message ----- From: "Yoko NAITO" <naito@xxxxxxxxxxxxxxxxxx>
> To: <dennou-ruby@xxxxxxxxxxx>
> Sent: Friday, January 25, 2013 3:40 PM
> Subject: [dennou-ruby:003621] Re: GPhys::Grib_IO で grib データを読みたい
> 
> 
>> 内藤です。
>>
>> 報告が遅くなりましてすみません。
>> 結論から言うと、そもそも grib 形式ではありませんでした。
>> 大ボケすみません!
>>
>> JRA のデータは原則として GRIB 形式で提供されていますが、
>> 加工データ (月平均値など) は 4バイト実数 (big_endian) で
>> 提供されています。GrADS を使って加工されているみたい?ですね。
>> 今回読もうとしていたデータはまさにそれでした。
>>
>> というわけで、スクリプト grads2nc_with_gphys を使って
>> NetCDF ファイルに変換することができました。
>> 大変お騒がせしました。
>>
>> 内藤
>>
>> (2013/01/19 1:14), Yoko NAITO wrote:
>>> 内藤です。
>>>
>>> 皆様ありがとうございます。まとめてお返事します。
>>>
>>> ruby のバージョンは関係なさそうかもしれませんが一応、
>>> % ruby --version
>>> ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
>>> となっています。
>>>
>>> JRA データを読むには、
>>> ・rb-grib を追加して GPhys::Grib_IO で読む(でも非推奨)
>>> あるいは
>>> ・wgrib2 でデコードしてしまう
>>> ということですね。
>>> wgrib2 を取ってきてやってみようと思います。
>>>
>>> 本当に多数のアドバイス感謝です! また週明けにご報告しますね。
>>>
>>> 内藤
>>>
>>> (2013/01/19 0:13), Takeshi Horinouchi wrote:
>>>> 堀之内です。
>>>>
>>>>> 最近触っていないので、遅いし、変数名も変わってしまうままです。
>>>>
>>>> 補足です。GPhys では,(rb-gribを使うように指定しなければ)
>>>> GRIB ファイル中の変数の名前は基本的に wgrib と同じ名前で
>>>> 扱うようになってます。なので,rb-grib もそうなるように
>>>> しましょうという話になってるのですが,まだそうなってない
>>>> ということです(だから GPhys ホームページでも rb-grib
>>>> の利用は非推奨としてます)。名前だけの問題でなくて,
>>>> C なのに遅い ECMWF のライブラリは使わないようにする
>>>> というのとセットなので,作業は結構大変なのです。
>>>>
>>>> 今の rb-grib を使ってしまうと,将来の rb-grib を使うと
>>>> 名前が非互換になって,同じプログラムがそのままでは
>>>> 使えなくなります(変数名だけの問題ですが)。
>>>>
>>>> そこでそれまでのつなぎとしては GRIB2 ファイルは wgrib2
>>>> を使って,NetCDF に変換してから使うのをお勧めします。
>>>>
>>>> http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/netcdf.html
>>>>
>>>> などをみてください。
>>>>
>>>> # 西澤さん,やっぱいそがしいかなぁ...。
>>>>
>>>>> 西澤です
>>>>>
>>>>> あ、rb-gribapi でなくて、 rb-grib でしたね。
>>>>>
>>>>> 最近触っていないので、遅いし、変数名も変わってしまうままです。
>>>>>
>>>>> 西澤誠也
>>>>>
>>>>> 2013年1月18日 19:08 Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxx>:
>>>>>> 堀之内です。
>>>>>>
>>>>>> そしたらあとは GRIB2 対応ね。しかし,
>>>>>> http://ruby.gfd-dennou.org/products/rb-grib/
>>>>>> って,まだあまりよくない状態 (遅いし,GRIB1のほうも
>>>>>> 変数名がかわってしまう) のままでしたっけ? > 西澤さま
>>>>>>
>>>>>> # (もしも変わってなければ)今のところの個人的お勧めは,
>>>>>>      wgrib2 でデコードしてしまう,です。
>>>>>>
>>>>>>> 内藤です。
>>>>>>>
>>>>>>> 西澤くんもありがとうございます!
>>>>>>>
>>>>>>> 先ほど、石岡さんが gphys のバージョンを 1.2.2 に上げてくださいま 
>>>>>>> した。
>>>>>>> おかげさまで T.jan.grib は問題なく読めるようになりました。
>>>>>>>
>>>>>>> まだ JRA データは読めていません。
>>>>>>> ruby-gribapi を入れれば grib2 な JRA データも読めるようになるのか 
>>>>>>> も。
>>>>>>>
>>>>>>> #----------------------
>>>>>>> % dpkg -s gphys
>>>>>>> Package: gphys
>>>>>>> Status: install ok installed
>>>>>>> Priority: optional
>>>>>>> Section: ruby
>>>>>>> Installed-Size: 3364
>>>>>>> Maintainer: Youhei SASAKI <uwabami@xxxxxxxxxxxxxx>
>>>>>>> Architecture: amd64
>>>>>>> Version: 1.2.2-2
>>>>>>> Depends: libc6 (>= 2.2.5), libruby1.8 (>= 1.8.7.302) | 
>>>>>>> libruby1.9.1 (>=
>>>>>>> 1.9.2.0), ruby | ruby-interpreter, ruby-narray, ruby-narray-miss,
>>>>>>> ruby-netcdf, ruby-dcl, ruby-numru-units, ruby-numru-met,
>>>>>>> ruby-numru-misc, ruby-fftw3, ruby-lapack, ruby-gsl | libgsl-ruby1.8,
>>>>>>> ruby-gsl | libgsl-ruby1.9.1, libdap-dev
>>>>>>> Recommends: ruby-gpv, ruby-nusdas, ruby-hdfeos5 | 
>>>>>>> libhdfeos5-ruby1.8,
>>>>>>> ruby-hdfeos5 | libhdfeos5-ruby1.9.1
>>>>>>> Description: Multi-purpose class to handle Gridded Physical 
>>>>>>> quantities
>>>>>>>    comprehensive library for self-descriptive gridded physical data
>>>>>>>    (in NetCDF, GrADS, or on memory) with graphics
>>>>>>> Homepage: http://ruby.gfd-dennou.org/products/gphys
>>>>>>> Ruby-Versions: ruby1.8 ruby1.9.1
>>>>>>> #----------------------
>>>>>>>
>>>>>>> 内藤
>>>>>>>
>>>>>>> (2013/01/18 17:45), Seiya Nishizawa wrote:
>>>>>>>> 西澤です
>>>>>>>>
>>>>>>>> gphys に入っている grib パーサーは、
>>>>>>>> 元々 ruby で書いていましたが、
>>>>>>>> ある時から、 C の拡張ライブラリを利用するように変更しました。
>>>>>>>> (おそらく、1.1.0 から)
>>>>>>>>
>>>>>>>> 以下、推測も混じっています。
>>>>>>>>
>>>>>>>> 内藤さんのエラーは、その拡張ライブラリの中で、
>>>>>>>> ファイルから取った文字列の中に、null 文字が埋め込まれている場合 
>>>>>>>> に出るものだと思います。
>>>>>>>> ruby の1.8 のそれなりのバージョン以降を使っている場合は、
>>>>>>>> その拡張ライブラリの中で、 null 文字があってもエラーとならないも 
>>>>>>>> のを使うようになっているので、
>>>>>>>> ruby のバージョンが古いとだめです。
>>>>>>>> 詳しくいうと、
>>>>>>>> StringValuePtr を使うと問題無いのですが、
>>>>>>>> それが無い場合は、STR2CSTR を使います。
>>>>>>>> これが問題を起こしているのだと想像します。
>>>>>>>>
>>>>>>>> 西本さんがうまくいく原因は、
>>>>>>>> 拡張ライブラリを利用する前のバージョンだからでしょう。
>>>>>>>>
>>>>>>>>
>>>>>>>> ちなみに、JRA データのエラーは、
>>>>>>>> grib2 だからで、
>>>>>>>> grib2 を読むためには、ruby-gribapi が必要です。
>>>>>>>>
>>>>>>>>
>>>>>>>> 西澤誠也
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> 2013年1月18日 16:57 西本絵梨子 <eriko@xxxxxxxxxxxxxx>:
>>>>>>>>> 内藤さん
>>>>>>>>>
>>>>>>>>> Debian lenny なマシンとgphys-1.0.0-1という、とっても古い組み合 
>>>>>>>>> わせで、
>>>>>>>>> チュートリアルのgribデータを読んでみると、成功しました。
>>>>>>>>> なので、バージョンが原因ではなさそうです。
>>>>>>>>>
>>>>>>>>> $ ruby -v
>>>>>>>>> ruby 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux]
>>>>>>>>> $ wget 
>>>>>>>>> http://www.gfd-dennou.org/library/ruby/products/gphys/tutorial/T.jan.grib 
>>>>>>>>>
>>>>>>>>> $ irb
>>>>>>>>> irb(main):001:0> require "numru/gphys"
>>>>>>>>> => true
>>>>>>>>> irb(main):002:0> NumRu::GPhys::Grib_IO.var_names("T.jan.grib")
>>>>>>>>> => ["TMP"]
>>>>>>>>>
>>>>>>>>> debianパッケージをインストールされているようなので、再インス 
>>>>>>>>> トール(aptitude reinstall)してみると
>>>>>>>>> 状況がかわったりしないでしょうか?
>>>>>>>>>
>>>>>>>>> 西本
>>>>>>>>>
>>>>>>>>> 2013/1/18 Yoko NAITO <naito@xxxxxxxxxxxxxxxxxx>:
>>>>>>>>>> 内藤です。
>>>>>>>>>>
>>>>>>>>>> 堀之内さん、ありがとうございます!
>>>>>>>>>>
>>>>>>>>>> ▼ GPhys のバージョン
>>>>>>>>>> こちらは 1.1.0-3 です。堀之内さんが試してくださったのが 1.2.2 。
>>>>>>>>>> 1.2.0 の時に GRIB2 のサポートが加わったようですが関係あるで 
>>>>>>>>>> しょうか?
>>>>>>>>>>
>>>>>>>>>> ▼ データファイル T.jan.grib
>>>>>>>>>> ダウンロードし直して diff を取ってみましたが違いがありませんし、
>>>>>>>>>> inspect_varnames.rb の結果も変わりませんね。。。
>>>>>>>>>> wget
>>>>>>>>>> http://www.gfd-dennou.org/library/ruby/products/gphys/tutorial/T.jan.grib 
>>>>>>>>>>
>>>>>>>>>> したのですが、付け忘れているオプションなどあるでしょうか?
>>>>>>>>>>
>>>>>>>>>> あと書き忘れましたが debian squeeze です。
>>>>>>>>>> 引き続き、みなさまのご助言をいただければ幸いです。
>>>>>>>>>>
>>>>>>>>>> 内藤
>>>>>>>>>>
>>>>>>>>>> (2013/01/18 13:09), Takeshi Horinouchi wrote:
>>>>>>>>>>> 堀之内です。
>>>>>>>>>>>
>>>>>>>>>>>> 旧チュートリアルから T.jan.grib と contour1000mb_grib.rb を
>>>>>>>>>>>> 取ってきて実行すると、下記のようなエラーが出ます。
>>>>>>>>>>>
>>>>>>>>>>> とりあえずこれについてのみ。
>>>>>>>>>>>
>>>>>>>>>>> 私のところでは正常に実行できます
>>>>>>>>>>> (内藤さんとおなじく ruby 1.8 で, GPhysは 1.2.2)。
>>>>>>>>>>> 使ってるGPhysのバージョンはなんでしょう?
>>>>>>>>>>> (あまりGPhysのバージョンに左右されそうに
>>>>>>>>>>> ないですが)。また,grib ファイルが壊れたりしてませんか。
>>>>>>>>>>>
>>>>>>>>>>>> 内藤@京大です。
>>>>>>>>>>>>
>>>>>>>>>>>> GPhys で grib データを読もうとして、はまっています。
>>>>>>>>>>>> JRA-25 のデータを読みたいのですが、それ以前に、
>>>>>>>>>>>> 旧チュートリアルにある T.jan.grib がちゃんと読めません。
>>>>>>>>>>>> 初歩的な躓きかもしれませんが、アドバイスいただけないでしょう 
>>>>>>>>>>>> か。
>>>>>>>>>>>>
>>>>>>>>>>>> 旧チュートリアルから T.jan.grib と contour1000mb_grib.rb を
>>>>>>>>>>>> 取ってきて実行すると、下記のようなエラーが出ます。
>>>>>>>>>>>> inspect_varnames.rb でも同様です。
>>>>>>>>>>>>
>>>>>>>>>>>> #----------------------
>>>>>>>>>>>> /usr/lib/ruby/1.8/numru/gphys/grib.rb:377:in `to_uint1': 
>>>>>>>>>>>> string contains
>>>>>>>>>>>> null byte (ArgumentError)
>>>>>>>>>>>>             from 
>>>>>>>>>>>> /usr/lib/ruby/1.8/numru/gphys/grib.rb:377:in `version'
>>>>>>>>>>>>             from 
>>>>>>>>>>>> /usr/lib/ruby/1.8/numru/gphys/grib.rb:210:in `parse'
>>>>>>>>>>>>             from 
>>>>>>>>>>>> /usr/lib/ruby/1.8/numru/gphys/grib.rb:1431:in `parse'
>>>>>>>>>>>>             from 
>>>>>>>>>>>> /usr/lib/ruby/1.8/numru/gphys/grib.rb:1411:in `open'
>>>>>>>>>>>>             from 
>>>>>>>>>>>> /usr/lib/ruby/1.8/numru/gphys/gphys_grib_io.rb:80:in `open'
>>>>>>>>>>>>             from 
>>>>>>>>>>>> /usr/lib/ruby/1.8/numru/gphys/gphys_io.rb:121:in `open'
>>>>>>>>>>>>             from contour1000mb_grib.rb:3
>>>>>>>>>>>> #----------------------
>>>>>>>>>>>>
>>>>>>>>>>>> また、JRA-25 のデータファイル (たとえば anl_mdl.197901.gr) を
>>>>>>>>>>>> inspect_varnames.rb もどき
>>>>>>>>>>>> #----------------------
>>>>>>>>>>>> require "numru/ggraph"
>>>>>>>>>>>> p NumRu::GPhys::Grib_IO.var_names('anl_mdl.197901.gr')
>>>>>>>>>>>> p NumRu::GPhys::IO.var_names('anl_mdl.197901.gr')
>>>>>>>>>>>> #----------------------
>>>>>>>>>>>> で読もうとすると、別のエラーが出ます。
>>>>>>>>>>>>
>>>>>>>>>>>> #----------------------
>>>>>>>>>>>> This Grib version (201) has not supported yet
>>>>>>>>>>>> []
>>>>>>>>>>>> /usr/lib/ruby/1.8/numru/gphys/gphys_io.rb:257:in 
>>>>>>>>>>>> `var_names': undefined
>>>>>>>>>>>> method `var_names' for nil:NilClass (NoMethodError)
>>>>>>>>>>>>             from inspect_varnames_JRA.rb:3
>>>>>>>>>>>> #----------------------
>>>>>>>>>>>>
>>>>>>>>>>>> それぞれ問題が違うような気もするのですが、いずれにしても
>>>>>>>>>>>> どうしたらよいかわからなくて困っています。
>>>>>>>>>>>> どなたかお知恵を貸してください。よろしくお願いします。
>>>>>>>>>>>>
>>>>>>>>>>>> ------------------------------------------------------------
>>>>>>>>>>>> 内藤 陽子 <naito@xxxxxxxxxxxxxxxxxx>
>>>>>>>>>>>
>>>>>>>>>>> 堀之内 武
>>>>>>>>>>> 北海道大学 地球環境科学研究院 地球圏科学部門
>>>>>>>>>>> 〒060-0810 札幌市北区北10条西5丁目
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>> 堀之内 武
>>>>>> 北海道大学 地球環境科学研究院 地球圏科学部門
>>>>>> 〒060-0810 札幌市北区北10条西5丁目
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> Seiya Nishizawa
>>>>> RIKEN Advanced Institute for Computational Science
>>>>> Tel: +81-78-940-5754, Fax: +81-78-304-4972
>>>>> 7-1-26, Minatojima-minami-machi, Chuo-ku, Kobe, Hyogo 650-0047, Japan
>>>>
>>>> 堀之内 武
>>>> 北海道大学 地球環境科学研究院 地球圏科学部門
>>>> 〒060-0810 札幌市北区北10条西5丁目
>>>>
>>
>>
>