Up|<<Prev|Next>>


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, or dp

書きこまれるデータ値へのポインタ。データ値の型がNetCDF変数型と異なる場合には型の変換が行われます。詳細は タイプ変換にあります。

 

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

 

この 例は 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);

Up|<<Prev|Next>>