7.10 単一のデータ値を読み取る: nc_get_var1_ type
関数nc_get_var1_ typeはオープンされたデータモードにあるNetCDFファイルの変数から単一のデータ値を取得します。入力は NetCDF ID・変数ID・取得する値を指定する多次元のインデックス・データ値が読み込まれる位置のアドレスです。この値は必要に応じて変数の外部データ型から変換されます。
用法
int nc_get_var1_text (int ncid, int varid, const size_t index[],
char *tp);
int nc_get_var1_uchar (int ncid, int varid, const size_t index[],
unsigned char *up);
int nc_get_var1_schar (int ncid, int varid, const size_t index[],
signed char *cp);
int nc_get_var1_short (int ncid, int varid, const size_t index[],
short *sp);
int nc_get_var1_int (int ncid, int varid, const size_t index[],
int *ip);
int nc_get_var1_long (int ncid, int varid, const size_t index[],
long *lp);
int nc_get_var1_float (int ncid, int varid, const size_t index[],
float *fp);
int nc_get_var1_double(int ncid, int varid, const size_t index[],
double *dp);
ncid 以前のnc_open または nc_create呼び出しで返されたNetCDF ID。 varid 変数ID。 index[] 読み込まれるデータ値のインデックス。インデックスは零に相対的であるので、2次元変数の最初のデータ値のインデックスは(0,0)になります。 index の要素は変数の次元に対応していなければなりません。よって、記録変数の場合には、最初のインデックスは記録番号になります。 tp, up, cp, sp, ip, lp, fp, dp データ値が読み込まれる位置へのポインタ。もしデータ型がNetCDF変数型と異なる場合には、型変換が行なわれます。詳細については 3.3節「型変換」(p.24)を参照してください。
エラー
エラーが発生していない場合には関数nc_get_var1_type は NC_NOERR の値を返します。それ以外の場合には、返されたステータスがエラーを示します。エラーの原因としては:
・ 変数IDが指定されたNetCDFファイルに対して有効ではない。
・ 指定されたインデックスが指定された変数のランクの範囲外であった。例えば、負のインデックスや、対応する次元の長さより大きなインデックスを与えるとエラーを引き起こす。
・ 値が望まれるデータ型で表現可能な値の範囲外であった。
・ 指定されたNetCDFファイルがデータモードではなく定義モードにあった。
・ 指定されたNetCDF IDがオープンされたNetCDFファイルを参照しない。
例
この例では nc_get_var1_double を使用して、既存のNetCDFファイルfoo.ncから変数 rhの (1,2,3) 要素を取得します。簡潔にするために、この例では rh の次元がtime, lat と lonであることが既知であるとし、よって、取得したいのは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}; /* 値を取得する場所 */
double rh_val; /* 値を置く場所 */
…
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);
…
status = nc_get_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 |