(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
更新日時:2013/10/27 22:45:28
キーワード:[欠損値] [missing value]
参照: