TOC PREV NEXT INDEX

Put your logo here!


7.2 変数を生成する: nc_def_var


関数nc_def_var は定義モードにあるオープンされたNetCDFファイルに新たに変数を追加します。NetCDF ID・変数名・変数型・次元数・次元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および NC_DOUBLEです。
ndims 変数の次元の数。例えば、2は行列、1はベクトル、0はをの変数が次元のないスカラーであることを表します。この値は負であったり、前もって定義された 定数 NC_MAX_VAR_DIMSより大きくてはいけません。
dimids 変数次元に対応する次元ID ndims のベクトル。無制限長次元のIDを含む場合にはそれが最初の次元でなければなりません。この引数はndims が零の場合には無視されます。
varidp 返された変数IDの位置を示すポインタ

エラー

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

・ NetCDF ファイルが定義モードになっていない。
・ 指定された変数名は既存の別な変数の名前である。
・ 指定された型が有効なNetCDF型ではない。
・ 指定された次元の数が負、もしくはNetCDF変数に許された最大の次元の数を表す定数 NC_MAX_VAR_DIMS より大きい。
・ 次元のリストの中の 次元IDのひとつ、もしくはそれ以上がNetCDFファイル中で有効ではない次元IDである。
・ 変数の数がNetCDF変数に許された最大の次元の数を表す定数NC_MAX_VARS より大きい。
・ 指定されたNetCDF IDが開いているNetCDFファイルを参照していない。

この例では nc_def_var を使用して、新しいfoo.ncという名前のNetCDFファイル中に、time, lat, 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);



Quadralay Corporation
http://www.webworks.com
Voice: (512) 719-3399
Fax: (512) 719-3606
sales@webworks.com
TOC PREV NEXT INDEX