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

[dennou-ruby:003962] NetCDF に書き出す際にデータの型が変わる



大塚さま (Cc: 電脳 Ruby のみなさま) : 京大気象学研究室 M2 の松葉です.

Ruby-NuSDaS 特有の現象なのかちょっと分かりませんが,NuSDaS データを読み込んで
それを NetCDF に書き出すと,データの型が変わるという症状に遭遇しています.
書き出したときに当然,もとの型を保持しておいて欲しいわけなのですが,これはどういう
カラクリなのでしょうか?

サンプルスクリプトは以下です.これに必要なデータはちょっと容量が大きいので,
ここからの取得をお願いします.
https://www.dropbox.com/s/os0gfr4oyuepf1w/fcst_phy2m.nus.tar.gz?dl=0

​---------- ここからスクリプト ----------
require 'numru/gphys'
include NumRu

# データの読み込み
file = 'fcst_phy2m.nus' # 2次元物理モニタ                                       
var = '_RLUTsrf'        # 上向き長波放射                                        
tmp = GPhys::IO.open(file, var)[false, 18..-1]
p tmp.val
p tmp.val.typecode  #=> 4: NArray::SFLOART                                      

# NetCDF に書き出す
outname = "#{var}.nc"
outfile = NetCDF.create(outname)
GPhys::NetCDF_IO.write(outfile, tmp)
outfile.close

# NetCDF に書き出したデータを読み込む
tmp = GPhys::IO.open(outname, var)
p tmp.val
p tmp.val.typecode #=> 1: NArray::BYTE​​
---------- ここまでスクリプト ----------

以下,実行結果:
$ ruby test.rb
NArray.sfloat(115,103,55): 
[ [ [ 295.561, 295.561, 295.784, 296.314, 296.262, 290.73, 291.428, ... ], 
    [ 295.561, 295.561, 295.784, 296.314, 296.262, 290.73, 291.428, ... ], 
    [ 294.403, 294.403, 294.366, 295.442, 295.455, 290.483, 291.145, ... ], 
    [ 294.391, 294.391, 294.354, 295.452, 295.439, 290.651, 291.288, ... ], 
    [ 292.513, 292.513, 292.434, 293.672, 293.8, 289.959, 290.511, ... ], 
    [ 292.562, 292.562, 292.364, 293.69, 294.019, 290.114, 290.608, ... ], 
    [ 290.694, 290.694, 290.2, 292.233, 292.876, 289.112, 289.508, ... ], 
    [ 290.483, 290.483, 290.419, 293.208, 294.638, 289.179, 289.557, ... ], 
    [ 288.447, 288.447, 287.865, 290.325, 292.077, 287.139, 287.472, ... ], 
    [ 287.834, 287.834, 288.017, 292.007, 292.138, 287.158, 287.487, ... ], 
 ...
4
NArray.byte(115,103,55): 
[ [ [ 39, 39, 39, 40, 40, 34, 35, 37, 37, 38, 38, 39, 39, 40, 40, 40, ... ], 
    [ 39, 39, 39, 40, 40, 34, 35, 37, 37, 38, 38, 39, 39, 40, 40, 40, ... ], 
    [ 38, 38, 38, 39, 39, 34, 35, 36, 37, 37, 38, 38, 39, 39, 39, 40, ... ], 
    [ 38, 38, 38, 39, 39, 34, 35, 37, 37, 38, 38, 39, 39, 39, 39, 40, ... ], 
    [ 36, 36, 36, 37, 37, 33, 34, 36, 36, 36, 36, 37, 37, 38, 38, 39, ... ], 
    [ 36, 36, 36, 37, 38, 34, 34, 36, 36, 36, 36, 37, 37, 38, 38, 39, ... ], 
    [ 34, 34, 34, 36, 36, 33, 33, 34, 34, 34, 34, 36, 36, 37, 37, 37, ... ], 
    [ 34, 34, 34, 37, 38, 33, 33, 34, 34, 34, 34, 36, 36, 37, 37, 37, ... ], 
    [ 32, 32, 31, 34, 36, 31, 31, 31, 31, 32, 32, 35, 35, 37, 37, 32, ... ], 
    [ 31, 31, 32, 36, 36, 31, 31, 31, 31, 32, 32, 35, 35, 37, 37, 32, ... ], 
 ...
1

使っている Ruby-NuSDaS は git より取得している最新版です.

お手数ですが,すこし調べていただけないでしょうか.
よろしくお願いいたします.

--
松葉 史剛 (Fumitaka MATSUBA)
京都大学大学院 理学研究科 地球惑星科学専攻
地球物理学教室 気象学研究室 M2