NetCDFの簡単な読み方

一番簡単な例として、NetCDFのファイル名、次元、変数名、属性の全てがわかっている場合。
NetCDFのルーチンは、NetCDFファイルに対して操作を実行するとともにエラーがあったかどうかの値を返す。
だから、status = NetCDF関数といった書き方を多用する。

NetCDFファイルをオープンする nf_open

status = nf_open(hoge.nc,NF_NOWRITE,ncid)

nf_open関数によりNetCDFがオープンされる。
1つ目の引数にはファイル名(ここではhoge.nc)を指定する。
2つ目の引数では、NF_NOWRITEと指定することで読み込み専用にしている。
3つ目の引数では、NetCDF IDを指定する。ここでは、ncidという変数にNetCDF IDを代入している。ncidに代入されるのは整数である。
複数のNetCDFを同時に開くならば、ncid2,ncid3といったようなファイル数分のNetCDF IDを代入する変数を用意する必要がある。
NetCDFのIDはNetCDFファイルをクローズすると消去されるので、変数を繰り返し使いまわすことができる。

NetCDFファイルをクローズする nf_close

status = nf_close(ncid)

単純にクローズするNetCDFファイルのID、つまり変数(ここではncid)をしていするだけ。
クローズすると、割り当てられていたNetCDFのIDは消去される。

変数のIDを取得する nf_inq_varid

status = nf_inq_varid(ncid,hoge,varid)

変数のIDを取得するには
1つ目の引数として、NetCDFのID(ここではncid)を指定し、NetCDFファイルを指定する。
2つ目の引数として、変数IDを取得しようとする変数のNetCDF内での名前(ここではhoge)を指定する。これはncdumpで確認できる変数の名前である。
3つ目の引数として、変数IDを指定する。ここでは、varidという変数にNetCDF変数IDを代入している。仕組みは、NetCDF IDを指定する場合と同じである。

変数の読み込み nf_get_var_<変数型名>

変数の読み込みには、変数の型を正しく指定する必要がある。

ncdumpで見たときの変数型 nf_get_var関数
short nf_get_var_INT2
floatまたはreal nf_get_var_real
double nf_get_var_double

例えば、Realの変数を持ってくるとすると

status = nf_get_var_real(ncid,varid,HOGE)

ここで、HOGEは、プログラム内での変数の名前である。

scale_factorとadd_offsetの取得

status = nf_get_att_real(ncid,varid,"scale_factor",scale_factor)
status = nf_get_att_real(ncid2,varid,"add_offset",add_offset)

エラーの取り扱い

statusに入った値がエラーかどうかを判別するために以下のような書き方をする。

if (status .NE. nf_noerr) then
write(6,*) nf_strerror(status)
stop
endif

これは、statusがnf_noerrでなかったらnf_strerror関数を実行してプログラムを停止するという意味である。
nf_noerrには0(整数ゼロ)が元々入っていて、エラーがなければstatusにも0が入るのでこのif文はスキップされる。
しかし、エラーがあった場合には0以外の数字がstatusに入る。
statusの値自体は、単に整数なのでnf_strerror関数を使うことでエラーメッセージに変換している。

最終更新:2011年07月07日 15:05