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

[dennou-ruby:002129] GPhys::NetCDF_IO.each_along_dims_write returns an error



西澤です。

NetCDF_IO.each_along_dims_write
がエラーになります。
データは
http://druby.rish.kyoto-u.ac.jp/arch/era40/
からとってきた月平均気温です(1Gくらいあります)。
以下に結果を示します。

%irb -r numru/gphys
irb(main):001:0> include NumRu
Object
irb(main):002:0> g = GPhys::IO.open("t.nc","t")
<GPhys grid=<4D grid <axis pos=<'longitude' in 't.nc'  sfloat[144]>>
        <axis pos=<'latitude' in 't.nc'  sfloat[73]>>
        <axis pos=<'levelist' in 't.nc'  int[23]>>
        <axis pos=<'time' in 't.nc'  int[2160]>>>
   data=<'t' in 't.nc'  sint[144, 73, 23, 2160]>>
irb(main):003:0> ofile = NetCDF.create("t.xm.nc")
NetCDF:t.xm.nc
irb(main):004:0> out = GPhys::NetCDF_IO.each_along_dims_write(g,ofile,-1){|sub| [sub.mean(0)] }
NetcdfBadtype: Not a netCDF data type or _FillValue type mismatch
        from /usr/lib/ruby/1.6/numru/gphys/varraynetcdf.rb:45:in `enddef'
        from /usr/lib/ruby/1.6/numru/gphys/varraynetcdf.rb:45:in `enddef'
        from /usr/lib/ruby/1.6/numru/gphys/varraynetcdf.rb:110:in `put'
        from /usr/lib/ruby/1.6/numru/netcdf.rb:752:in `[]='
        from /usr/lib/ruby/1.6/numru/gphys/varray.rb:499:in `[]='
        from /usr/lib/ruby/1.6/numru/gphys/gphys_io_common.rb:112:in `each_along_dims_write'
        from /usr/lib/ruby/1.6/numru/gphys/gphys_io_common.rb:110:in `each'
        from /usr/lib/ruby/1.6/numru/gphys/gphys_io_common.rb:110:in `each_along_dims_write'
        from /usr/lib/ruby/1.6/numru/gphys/gphys_io_common.rb:78:in `each'
        from /usr/lib/ruby/1.6/numru/gphys/gphys_io_common.rb:78:in `each_along_dims_write'
        from /usr/lib/ruby/1.6/numru/gphys/gphys_netcdf_io.rb:375:in `each_along_dims_write'
        from (irb):4


あとデータが大きいときに平均などをする場合、
ファイルに書き出すときはこのメソッドがありますが、
結果を得たい場合に同様に内部でループを回してメモリを節約するメソッドがほしいです。

--------------
Seiya Nishizawa
seiya@xxxxxxxxxxxxxxxxxx