Up|<<Prev|Next>>


7.6 全ての値を変数を書きこむ: nc_put_var_ type

関数 nc_put_var_ type のファミリーは開かれたNetCDFファイルのNetCDF変数にすべての値を書きこみます。これはスカラー変数に値を書き込んだり多次元変数の値が一度にすべて書き込める場合に使用できるもっとも単純なインターフェースです。書きこまれる値は、 C インターフェースにおいて最も早く変化するNetCDF変数が最後 の次元であるという仮定の元にNetCDF変数と関連付けられます。必要に応じて、値は外部デー型に変換されます。

 

int nc_put_var_text (int ncid, int varid, const char *tp);

int nc_put_var_uchar (int ncid, int varid, const unsigned char *up);

int nc_put_var_schar (int ncid, int varid, const signed char *cp);

int nc_put_var_short (int ncid, int varid, const short *sp);

int nc_put_var_int (int ncid, int varid, const int *ip);

int nc_put_var_long (int ncid, int varid, const long *lp);

int nc_put_var_float (int ncid, int varid, const float *fp);

int nc_put_var_double(int ncid, int varid, const double *dp);

 

ncid

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

varid

変数ID。

tp, up, cp, sp, ip, lp, fp, or dp

書きこまれるデータ値の塊へのポインタ。指定された変数の最後の次元が最も早く変化する順番でデータ値がNetCDF変数に書き込まれます。データ値の型がNetCDF変数型と異なる場合にはタイプ変換が行われます。詳細については タイプ変換を参照してください。

 

関数 nc_put_var_ type ファミリーに属する関数は、エラーが発生していない場合には NC_NOERR の値を返します。その他の場合には、返されたステータスがエラーが発生したことを示します。エラーの原因としては:

 

この 例は nc_put_var_double を使用して、既存のNetCDFファイル foo.nc の変数 rh の値の全てに10.5を書き加えるか0.5に変更するかします。簡潔にするために、変数 rh の次元が time , lat , と lon であり、 time 値は3個、 lat 値は5個、 lon 値は10個あることが既知の事とする。

#include <netcdf.h>
   ... 
#define TIMES 3
#define LATS  5
#define LONS  10
int  status;                       /* エラーステータス */
int  ncid;                         /* NetCDF ID */
int  rh_id;                        /* 変数 ID */
double rh_vals[TIMES*LATS*LONS];   /* 値を保持する配列 */
int i;
   ... 
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);
   ... 
for (i = 0; i < TIMES*LATS*LONS; i++)
    rh_vals[i] = 0.5;
/* NetCDF変数に値を書き込む */
status = nc_put_var_double(ncid, rh_id, rh_vals);
if (status != NC_NOERR) handle_error(status);

1. add or change all the values of the variable named rh to 0.5 ???


Up|<<Prev|Next>>