Up|<<Prev|Next>>


7.2 変数を生成する: nc_def_var

関数 nc_def_var は定義モードにある開かれたNetCDFファイルに新たに変数を追加します。NetCDFID・変数名・変数方・次元数・次元IDのリストを与えると、(引数として)変数IDを返します。

 

int nc_def_var (int ncid, const char *name, nc_type xtype,

int ndims, const int dimids[], int *varidp);

 

ncid

以前の nc_open 又は nc_create 呼び出しで返されたNetCDF ID。

name

変数名。アルファベット文字で始まり、アンダースコア(‘_’)を含む零もしくは英数字が続かなければならない。大文字小文字は区別されます。

xtype

前もって定義されたNetCDF外部データ型の集合のひとつ。このパラメータの型 nc_type はNetCDFヘッダーファイルで定義されています。 有効なNetCDF外部データ型は NC_BYTE , NC_CHAR , NC_SHORT , NC_INT , NC_FLOAT , and NC_DOUBLE です。

ndims

変数の次元の数。例えば、2はマトリクス、1はベクトル、0はをの変数が次元のないスカラーであることを表します。この値は負であったり、前もって定義された 定数 NC_MAX_VAR_DIMS より大きくてもいけない。

dimids

変数次元に対応する次元ID ndims のベクトル。無制限長次元のIDを含む場合には冒頭にしなければならない。この引数は ndims が零の場合には無視される。

varidp

返された変数IDの位置を示すポインタ。

 

エラーが発生していなければ nc_def_var 機能は NC_NOERR の値を返します。それ以外の場合は、返されたステータスがエラーが発生したことを示します。エラーの原因としては:

 

この例では nc_def_var を使用して、新しい foo.nc という名前のNetCDFファイル中に、 time , lat , and lon の3つの次元を持つ、変数名 rh のダブル型の変数を生成します:

#include <netcdf.h>
   ... 
int  status;                       /* エラーステータス */
int  ncid;                         /* NetCDF ID */
int  lat_dim, lon_dim, time_dim;   /* 次元 ID */
int  rh_id;                        /* 変数 ID */
int  rh_dimids[3];                 /* 変数の形 */
   ... 
status = nc_create("foo.nc", NC_NOCLOBBER, &ncid);
if (status != NC_NOERR) handle_error(status);
   ... 
                                   /* 次元の定義 */
status = nc_def_dim(ncid, "lat", 5L, &lat_dim);
if (status != NC_NOERR) handle_error(status);
status = nc_def_dim(ncid, "lon", 10L, &lon_dim);
if (status != NC_NOERR) handle_error(status);
status = nc_def_dim(ncid, "time", NC_UNLIMITED, &time_dim);
if (status != NC_NOERR) handle_error(status);
   ... 
                                   /* 変数の定義 */
rh_dimids[0] = time_dim;
rh_dimids[1] = lat_dim;
rh_dimids[2] = lon_dim;
status = nc_def_var (ncid, "rh", NC_DOUBLE, 3, rh_dimids, &rh_id);
if (status != NC_NOERR) handle_error(status);

Up|<<Prev|Next>>