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

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



内藤です。

西澤くんもありがとうございます!

先ほど、石岡さんが 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丁目
>>>>
>>>
>>
> 
> 
>