TOC PREV NEXT INDEX

Put your logo here!


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);
ncid 以前のnc_openまたはnc_create呼び出しで返されたNetCDF ID
varid 属性の変数の変数ID、またはグローバル属性の場合にはNC_GLOBAL
name 属性名。nc_inq_attnameの場合、これは返された属性名の位置を示すポインタです。
xtypep 返された属性型の位置を示すポインタ。前もって定義されたNetCDF外部データ型の集合の一つ。このパラメーターの型nc_typeはNetCDFヘッダーファイル内で定義されています。有効なNetCDF外部データ型はNC_BYTE, NC_CHAR, NC_SHORT, NC_INT, NC_FLOAT, NC_DOUBLEです。このパラメータが‘0’(nullポインタ)で与えられていると、型は返されないので、その型を保持する変数を宣言する必要がありません。
lenp 現在属性に格納されている値の数が返された位置を示すポインタ。NC_CHAR型の属性では、これがnull文字を含むと仮定しないこと。属性が元々null文字無しに格納されている場合には含まれません。FORTRANプログラムなどの場合がこれに相当します。Cの記号列としてこの値を使用する前に、終端がnullコードであること(null-terminated)を確認してください。このパラメータが‘0’(nullポインタ)で与えられている場合には長さは返されないので、この情報を保持する変数を宣言する必要がありません。
attnum nc_inq_attnameに対する属性番号。各変数の属性は0(最初の属性)からnatts-1までの番号が振られています。(nattsはその変数の属性の数で、nc_inq_varnattsへの呼び出しで返されます。)
attnump nc_inq_attidに対する返された属性番号の位置を示すポインタ。この変数(またはグローバル属性)のどの属性であるかを示す。属性の情報を取得するためには属性の名前が必要であるので、属性の名前が既知であれば、この番号はあまり役に立ちません。

エラー

各関数は、エラーが発生していなければ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
TOC PREV NEXT INDEX