7.5 単一のデータ値を書きこむ: nc_put_var1_ type
関数nc_put_var1_ typeは指定された型 (type)の単一のデータ値をオープンされたステータスでデータモードにあるNetCDFファイルの変数に書きこみます。入力はNetCDF ID・変数ID・書き加えまたは変更するインデックス・データ値です。必要な場合には、その値は変数の外部データ型に変換されます。
用法
int nc_put_var1_text (int ncid, int varid, const size_t index[],
const char *tp);
int nc_put_var1_uchar (int ncid, int varid, const size_t index[],
const unsigned char *up);
int nc_put_var1_schar (int ncid, int varid, const size_t index[],
const signed char *cp);
int nc_put_var1_short (int ncid, int varid, const size_t index[],
const short *sp);
int nc_put_var1_int (int ncid, int varid, const size_t index[],
const int *ip);
int nc_put_var1_long (int ncid, int varid, const size_t index[],
const long *lp);
int nc_put_var1_float (int ncid, int varid, const size_t index[],
const float *fp);
int nc_put_var1_double(int ncid, int varid, const size_t index[],
const double *dp);
ncid 以前のnc_open または nc_create呼び出しからのNetCDF ID varid 変数ID index[] 書きこむデータ値のインデックス。インデックスは零に相対的なものであり、例えば2次元の変数の最初のデータ値のインデックスは(0,0)になります。インデックスの要素は変数の次元に対応しなければなりません。よって、変数が無制限次元を使用していれば、最初のインデックスはその無制限次元に対応しています。 tp, up, cp, sp, ip, lp, fp, dp 書きこまれるデータ値へのポインタ。データ値の型がNetCDF変数型と異なる場合には型の変換が行われます。詳細は 3.3節「型変換」(p.24)にあります。
エラー
関数nc_put_var1_ typeはエラーが発生していない場合には NC_NOERR 値を返します。それ以外の場合は返されたステータスがエラーを示します。エラーの原因としては:
・ 変数IDが指定されたNetCDFファイルでは有効ではない。
・ 指定されたインデックスが指定された変数のランクの範囲外である。例えば、負のインデックスや対応する次元長より大きなインデックスを与えるとエラーを発生させる。
・ 指定された値が変数の外部データ型で表現できる範囲外である。。
・ 指定されたNetCDFファイルがデータモードではなく定義モードにある。
・ 指定されたNetCDF IDはオープンされたNetCDFファイルを参照していない。
例
この例は nc_put_var1_double を使用して、既存のNetCDFファイルfoo.ncの変数 rh の (1,2,3) 要素を0.5にします。簡潔にするためにこの例の中では変数rhの次元がtime, lat, lonであることを既知とします。よって、変数rh に書きこむ値は2番目のtime値・3番目のlat値・ 4番目のlon値に対応します。
#include <netcdf.h>
…
int status; /* エラーステータス */
int ncid; /* NetCDF ID */
int rh_id; /* 変数 ID */
static size_t rh_index[] = {1, 2, 3}; /* 値の格納場所 */
static double rh_val = 0.5; /* 格納される値 */
…
status = nc_open("foo.nc", NC_WRITE, &ncid);
if (status != NC_NOERR) handle_error(status);
…
status = nc_inq_varid (ncid, "rh", &rh_id);
if (status != NC_NOERR) handle_error(status);
…
status = nc_put_var1_double(ncid, rh_id, rh_index, &rh_val);
if (status != NC_NOERR) handle_error(status);
Quadralay Corporation http://www.webworks.com Voice: (512) 719-3399 Fax: (512) 719-3606 sales@webworks.com |