Up|<<Prev|Next>>


6.3 次元について問い合わせる: nc_inq_dim ファミリー

この関数のファミリーはNetCDF次元についての情報を返します。次元に関するの情報には次元名と次元長があります。無制限長の次元の長さは、存在していれば、その段階までに書かれた記録の数です。

このファミリーに属する関数は nc_inq_dim , nc_inq_dimname , そして nc_inq_dimlen があります。関数 nc_inq_dim はその次元についての全ての情報を返します。他の機能はその次元についてある一つの情報を返します。

 

int nc_inq_dim (int ncid, int dimid, char* name, size_t* lengthp);

int nc_inq_dimname (int ncid, int dimid, char *name);

int nc_inq_dimlen (int ncid, int dimid, size_t *lengthp);

 

ncid

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

dimid

以前の nc_inq_dimid もしくは nc_def_dim 等への呼び出しからの次元ID。

name

返された 次元名。呼び出すには予めスペースを割り当てておく必要がある。次元名の最大長は文字数にして、事前に定義した定数 NC_MAX_NAME によって決まる。

lengthp

返された次元長の位置を示すポインタ。無制限次元においては、これはその時点までに書き込まれた記録の数である。

 

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

 

この 例では nc_inq_dim を使用して既存のNetCDFファイル foo.nc lat と名づけられた次元の長さと無限長次元の現在の長さをを求めます:

#include <netcdf.h>
   ... 
int status, ncid, latid, recid;
size_t latlength, recs;
char recname[NC_MAX_NAME];
   ... 
status = nc_open("foo.nc", NC_NOWRITE, &ncid);  /* 読み取り様に開く */
if (status != NC_NOERR) handle_error(status);
status = nc_inq_unlimdim(ncid, &recid); /* 無制限次元の ID 取得 */
if (status != NC_NOERR) handle_error(status);
   ... 
status = nc_inq_dimid(ncid, "lat", &latid);  /* lat次元のID 取得 */
if (status != NC_NOERR) handle_error(status);
status = nc_inq_dimlen(ncid, latid, &latlength); /* lat の長さ取得 */
if (status != NC_NOERR) handle_error(status);
/* 無制限次元の名前と現在の長さ取得 */
status = nc_inq_dim(ncid, recid, recname, &recs);
if (status != NC_NOERR) handle_error(status);

Up|<<Prev|Next>>