8.3 属性に関する情報を取得する: nc_inq_attのファミリー
この関数のファミリーはNetCDF属性に関する情報を返します。これらの関数は一つを除いてすべて変数IDと属性名を必要とします。例外はnc_inq_attname関数です。属性に関する情報には型・長さ・名前・番号などが含まれます。属性値を取得する方法についてはnc_get_attの節を参照してください。
関数nc_inq_attnameは変数IDと番号を与えると、属性の名前を返します。この関数は、他のすべての属性関数において属性は番号ではなく名前によってアクセスされるために、変数に関連した属性の名前をすべて必要とする一般的なアプリケーションにおいて役に立ちます。属性の番号は名前よりも揮発性があり、同じ変数の属性が削除された時に変わることがあります。このため、属性の番号は属性IDとは呼ばれません。
関数nc_inq_attは属性の型と長さを返します。他の関数はそれぞれ、属性の情報を一つだけ返します。
用法
int nc_inq_att (int ncid, int varid, const char *name,
nc_type *xtypep, size_t *lenp);
int nc_inq_atttype(int ncid, int varid, const char *name,
nc_type *xtypep);
int nc_inq_attlen (int ncid, int varid, const char *name, size_t *lenp);
int nc_inq_attname(int ncid, int varid, int attnum, char *name);
int nc_inq_attid (int ncid, int varid, const char *name, int *attnump);
エラー
各関数は、エラーが発生していなければNC_NOERRの値を返します。それ以外の場合には、返されたステータスがエラーを示します。エラーの原因として次のようなものが考えられます。
・ 変数IDが指定されたNetCDFファイルで無効である。
・ 指定された属性が存在しない。
・ 指定されたNetCDF IDがオープンされたNetCDFファイルを参照していない。
・ nc_inq_attnameに対して、指定された属性番号が負であるか、もしくは指定された変数に定義されている属性の数よりも多い。
例
この例では、nc_inq_attを使って、既存のfoo.ncという名前のNetCDFファイルにおいて、rhという名前のNetCDF変数の属性valid_rangeの型と長さと、titleという名前のグローバル属性とを調べます。
#include <netcdf.h>
…
int status; /* エラーステータス */
int ncid; /* NetCDF ID */
int rh_id; /* 変数 ID */
nc_type vr_type, t_type; /* 属性型 */
int vr_len, t_len; /* 属性長 */
…
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_inq_att (ncid, rh_id, "valid_range", &vr_type, &vr_len);
if (status != NC_NOERR) handle_error(status);
status = nc_inq_att (ncid, NC_GLOBAL, "title", &t_type, &t_len);
if (status != NC_NOERR) handle_error(status);
Quadralay Corporation http://www.webworks.com Voice: (512) 719-3399 Fax: (512) 719-3606 sales@webworks.com |