関数 nc_get_var1_ type は開かれたデータモードにあるNetCDFファイルの変数から単一のデータ値を取得します。入力は NetCDF ID・変数ID・取得する値を指定する多次元のインデックス・データ値が読み込まれる位置のアドレスです。 この値は必要に応じて変数の外部データタイプから変換されます。
int nc_get_var1_text (int ncid, int varid, const size_t index[],
int nc_get_var1_uchar (int ncid, int varid, const size_t index[],
int nc_get_var1_schar (int ncid, int varid, const size_t index[],
int nc_get_var1_short (int ncid, int varid, const size_t index[],
int nc_get_var1_int (int ncid, int varid, const size_t index[],
int nc_get_var1_long (int ncid, int varid, const size_t index[],
int nc_get_var1_float (int ncid, int varid, const size_t index[],
int nc_get_var1_double(int ncid, int varid, const size_t index[],
読み込まれるデータ値のインデックス。インデックスは零に相対的であるので、2次元変数の最初のデータ値のインデックスは (0,0) になります。 index の要素は変数の次元に対応していなければなりません。よって、記録変数の場合には、最初のインデックスは記録番号になります。 |
|
データ値が読み込まれる位置へのポインタ。もしデータ型が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);