松葉さま
大塚です。バグ報告ありがとうございました。
バグの原因は分かりましたので、これから修正方法を検討します。
(typecodeの推定に使っている格子点が欠損値だったのが原因でした)
当面の回避策としては、書き出し前にcopyを挟んでもらえば大丈夫です。
GPhys::NetCDF_IO.write(outfile, tmp.copy)
よろしくお願いします。
On 2016/06/24 21:03, Fumitaka MATSUBA wrote:
E-mail: matsuba@xxxxxxxxxxxxxxxxxx <mailto:matsuba@xxxxxxxxxxxxxxxxxx>大塚さま (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
--
大塚成徳 (Shigenori OTSUKA)
国立研究開発法人理化学研究所 計算科学研究機構(AICS)
データ同化研究チーム
〒650-0047兵庫県神戸市中央区港島南町7-1-26
電話078-940-5814
shigenori.otsuka@xxxxxxxx