関数 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);
データ値が読み込まれる位置のポインタ。もし、データ型が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);