Up|<<Prev|Next>>


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

データ値が読み込まれる位置へのポインタ。もしデータ型がNetCDF変数型と異なる場合には、タイプ変換が行なわれます。詳細については タイプ変換を参照してください。

 

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

 

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

Up|<<Prev|Next>>