Up|<<Prev|Next>>


7.4 IDから変数の情報を取得する: nc_inq_var ファミリー

この 関数のファミリーは変数のIDを与えるとそのNetCDF変数に関する情報を返します。 変数にに関する情報にはその名前・型・次元の数・変数の形を表す変数IDのリスト・変数に割り当てられている変数属性の数等です。

関数 nc_inq_var はある変数のIDを与えるとNetCDF関数に関する情報をすべて返します。その他の関数はある変数に関する一つの情報を返します。

このほかの関数とは nc_inq_varname , nc_inq_vartype , nc_inq_varndims , nc_inq_vardimid , nc_inq_varnatts . 等です。

 

int nc_inq_var (int ncid, int varid, char *name, nc_type *xtypep,
int *ndimsp, int dimids[], int *nattsp);

int nc_inq_varname (int ncid, int varid, char *name);

int nc_inq_vartype (int ncid, int varid, nc_type *xtypep);

int nc_inq_varndims (int ncid, int varid, int *ndimsp);

int nc_inq_vardimid (int ncid, int varid, int dimids[]);

int nc_inq_varnatts (int ncid, int varid, int *nattsp);

 

ncid

以前の nc_open 又は nc_create 呼び出しで返されたNetCDF ID。

varid

変数ID.

name

返された 変数名。呼び出すためには返された名前用のスペースを確保しておく必要がある。変数名の文字数の最大値は 予め定義された定数 NC_MAX_NAME である。

xtypep

返された変数型(予め定義されたNetCDFの外部データ型)の位置を示すポインタ。このパラメーター nc_type の型はNetCDFヘッダーファイルにより定義されています。有効なNetCDFデータ型は NC_BYTE , NC_CHAR , NC_SHORT , NC_INT , NC_FLOAT , と NC_DOUBLE .です。

ndimsp

変数が使用していると定義された次元の数の位置を示すポインタ。例えば、2はマトリクス、1はベクトル、ゼロはその変数が無次元のスカラーであることを示す。

dimids

返された 変数の次元に対応する次元ID *ndimsp のベクトル 。 最低でも返されてくる *ndimsp の整数のベクトルのためのスペースを予め確保しておく必要がある。変数が持ち得る次元の最大数は予め定義された定数 NC_MAX_VAR_DIMS である。

nattsp

返されたこの変数に割り当てられている変数属性の数の位置を示すポインタ。

 

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

 

これは nc_inq_var を使用してNetCDFファイル foo.nc の中の rh という変数に関しての情報を探す例です。

#include <netcdf.h>
   ... 
int  status                        /* エラーステータス */
int  ncid;                         /* NetCDF ID */
int  rh_id;                        /* 変数 ID */
nc_type rh_type;                   /* 変数型 */
int rh_ndims;                      /* 次元の数 */
int  rh_dims[NC_MAX_VAR_DIMS];     /* 変数の形 */
int rh_natts                       /* 属性の数 */
   ... 
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);
/* we don't need name, since we already know it */
status = nc_inq_var (ncid, rh_id, 0, &rh_type, &rh_ndims, rh_dims,
                     &rh_natts);
if (status != NC_NOERR) handle_error(status);

Up|<<Prev|Next>>