(Tips) 1から作成したGPhysを欠損値とともにncに出力
作成者: 加藤亮平
1 から作成した GPhys を欠損値情報とともに netcdf に出力する方法を記す.
GPhys に欠損値情報を加えるには, GPhys を構成する主変数の VArray に欠損値を設定した後 GPhys を作成すればよい.
- VArray に設定する配列は NArrayMiss ではなく NArray で OK
- 単に NArrayMiss を GPhys を構成する主変数の VArray に設定しただけでは, 欠損値情報を netcdf に書き込むことはできないようだ.
欠損値の設定は以下の部分
rmiss = -9.99e10 # missing value rm = NArray.float(1).fill(rmiss) # VArray に設定する欠損値は String か数値の NArray / Array でないといけない zz = VArray.new( z0, {'missing_value'=>rm}, "z" ) # set missing value
コード: create_gphys_with_missing_value.rb
require "numru/ggraph" include NumRu nx = NArray.float(10).indgen! # 0,1,2,.. ny = NArray.float(10).indgen! # 0,1,2,.. vx = VArray.new( nx, {"long_name"=>"x coord","units"=>"m"}, "x") vy = VArray.new( ny, {"long_name"=>"y coord","units"=>"m"}, "y") xax = Axis.new.set_pos(vx) yax = Axis.new.set_pos(vy) grid = Grid.new(xax, yax) z0 = NArray.float(vx.length, vy.length).indgen! rmiss = -9.99e10 # missing value z0[2,3] = rmiss rm = NArray.float(1).fill(rmiss) zz = VArray.new( z0, {'missing_value'=>rm}, "z" ) # set missing value gp = GPhys.new(grid,zz) p gp.val.class # => NArray #-----output netcdf ofile = NetCDF.create("out.nc") GPhys::IO.write(ofile, gp) ofile.close #-----test draw gp2 = GPhys::IO.open("out.nc", "z") DCL.glpset('LMISS', true) DCL.gropn(1) GGraph.tone_and_contour(gp2) DCL.grcls
キーワード:[欠損値] [missing value]
参照: