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

[dennou-ruby:002216] Re: GRIB



西澤です。

以下の件、
ちょっと調べてみました。
irb(main):001:0> f = File.open8"T.jan.grib")
=> #<File:T.jan.grib>
irb(main):002:0> f.pos
=> 0
irb(main):003:0> f.read(1)
=> "G"
irb(main):004:0> f.pos
=> 3585
irb(main):005:0> f.read(1)
=> "R"
irb(main):006:0> f.pos
=> 3586

となります。
最初の 0xE00(=3584) は何者でしょう。
ruby のバグなのか windows とはそういうものなのでしょうか?
反対に乙部さんなにか心当たりありますでしょうか?

grib.rb では、一文字目が 0x000 でないかどうか調べて(pos==3585)、その後1
バイト戻る(pos==3584)、
ということをしているので 0xE00 から読むことになります。

linux ではこのようなことはありません。
1文字読んだら pos==1 です。


乙部 直人 wrote:

>多分西澤さんが作られた部分だと思いますが、
>
>今日の堀之内さんのチュートリアルでGribのファイルを開くときに
>http://www.gfd-dennou.org/arch/ruby/products/gphys/tutorial/body-j.html#h3:grads_grib_examples
>のあたりでWindowsネイティブのGphysは
>
>c:/NumRu/ruby/lib/ruby/site_ruby/1.8/numru/gphys/grib.rb:181:in
>`parse': This file is not Grib file (INITIAL SECTION) (RuntimeError)
>        from c:/NumRu/ruby/lib/ruby/site_ruby/1.8/numru/gphys/grib.rb:
>1334:in `parse'
>        from 
>c:/NumRu/ruby/lib/ruby/site_ruby/1.8/numru/gphys/grib.rb:1314:in `open'
>        from
>c:/NumRu/ruby/lib/ruby/site_ruby/1.8/numru/gphys/gphys_grib_io.rb:80:in
>`open'
>        from
>c:/NumRu/ruby/lib/ruby/site_ruby/1.8/numru/gphys/gphys_io.rb:12:in`open'
>        from contour1000mb_grib.rb:3
>
>というエラーをはいて終わってしまいます。
>ちょっとソースを見たところファイルの頭4文字で判断しているようですが
>なぜか、ファイルの先頭から0xE00 の位置から読み込み始めているようです。
>なぜ、Linuxではうまくいくのかわからないのですが、何か心当たりがあります
>でしょうか?
>  
>