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

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



西澤です

ちょっと嘘が混じっていました。
StringValuePtr は ruby 1.7 からあるようです。

gphys のあるバージョンから、
STR2CSTR から、StringValuePtr を使うように、
神代さんが変更してくださったので、問題が無くなったようです。

西澤誠也


2013年1月18日 18:27 Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxx>:
> 堀之内です。
>
>> ruby の1.8 のそれなりのバージョン以降を使っている場合は、
>
> おっと,1.8.x の x が問題?
> とりあえず私は 1.8.7 ですが,内藤さんは?
> 内藤さんが 1.8.7 に変えてOKなら,そういう問題
> ですね。
>
>> 西澤です
>>
>> 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丁目
>> >>>
>> >>
>> >
>>
>>
>>
>> --
>> 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丁目
>
>



-- 
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