7.11 全変数を読み取る: nc_get_var_ type
関数nc_get_var_ typeのファミリーはオープンされたNetCDFファイルの変数の値をすべて読みます。これは、スカラー変数や多次元変数の値をすべて一度で読むためには最も簡単なインターフェースです。変数は連続した位置に 最後の次元が最も早く変化するように 次々と書き込まれていきます。NetCDFファイルはデータモードになければなりません。
用法
int nc_get_var_text (int ncid, int varid, char *tp);
int nc_get_var_uchar (int ncid, int varid, unsigned char *up);
int nc_get_var_schar (int ncid, int varid, signed char *cp);
int nc_get_var_short (int ncid, int varid, short *sp);
int nc_get_var_int (int ncid, int varid, int *ip);
int nc_get_var_long (int ncid, int varid, long *lp);
int nc_get_var_float (int ncid, int varid, float *fp);
int nc_get_var_double(int ncid, int varid, double *dp);
ncid 以前のnc_open または nc_create呼び出しで返されたNetCDF ID。 varid 変数ID tp, up, cp, sp, ip, lp, fp, dp データ値が読み込まれる位置のポインタ。もし、データ型がNetCDF変数型と異なる場合には型変換が行なわれます。詳細については3.3節「型変換」(p.24)を参照して下さい。
エラー
エラーが発生していなければ、nc_get_var_ typeは NC_NOERR の値を返します。それ以外の場合には、返されたステータスがエラーを示します。エラーの原因としては下記が挙げられます。
・ 変数 ID が指定されたNetCDFファイルにおいて無効である。
・ 一つ、もしくは複数の値が、指定された型によって表わせる値の範囲を超えている。
・ 指定されたNetCDFファイルがデータモードではなく定義モードにある。
・ 指定されたNetCDF IDがオープンされたNetCDFファイルを参照しない。
例
この例では nc_get_var_double を使用して既存のNetCDF ファイル foo.ncの変数rh の値をすべて読み取ります。簡潔にするためにこの例では、変数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]; /* 値を保持する配列 */
…
status = nc_open("foo.nc", NC_NOWRITE, &ncid);
if (status != NC_NOERR) handle_error(status);
…
status = nc_inq_varid (ncid, "rh", &rh_id);
if (status != NC_NOERR) handle_error(status);
…
/* NetCDF変数から値を読み取る */
status = nc_get_var_double(ncid, rh_id, rh_vals);
if (status != NC_NOERR) handle_error(status);
Quadralay Corporation http://www.webworks.com Voice: (512) 719-3399 Fax: (512) 719-3606 sales@webworks.com |