TOC PREV NEXT INDEX

Put your logo here!


8.2 属性を生成する: nc_put_att_ type


関数nc_put_att_ typeは、オープンされたNetCDFファイルの変数属性またはグローバル属性を追加・変更します。新規の属性、または属性を格納するために必要なスペースが前より大きくなる場合には、NetCDFファイルは定義モードでなくてはなりません。

用法

どんな型の属性も生成可能ですが、ほとんどの用途にはテキストや倍精度属性で十分です。

int nc_put_att_text (int ncid, int varid, const char *name,
size_t len, const char *tp);
int nc_put_att_uchar (int ncid, int varid, const char *name,
nc_type xtype, size_t len, const unsigned char *up);
int nc_put_att_schar (int ncid, int varid, const char *name,
nc_type xtype, size_t len, const signed char *cp);
int nc_put_att_short (int ncid, int varid, const char *name,
nc_type xtype, size_t len, const short *sp);
int nc_put_att_int (int ncid, int varid, const char *name,
nc_type xtype, size_t len, const int *ip);
int nc_put_att_long (int ncid, int varid, const char *name,
nc_type xtype, size_t len, const long *lp);
int nc_put_att_float (int ncid, int varid, const char *name,
nc_type xtype, size_t len, const float *fp);
int nc_put_att_double (int ncid, int varid, const char *name,
nc_type xtype, size_t len, const double *dp);
ncid 以前のnc_openまたはnc_create呼び出しで返されたNetCDF ID
varid 属性が割り当てられる変数の変数ID、またはグローバル属性の場合にはNC_GLOBAL
name 属性名。アルファベットの文字で始まり、次にアンダースコア(‘_’)を含む0個以上の英数字が続きます。大文字小文字は区別されます。属性名の規約はいくつかのNetCDFの一般的なアプリケーションで仮定されています。例えば、unitsはNetCDF変数に単位を与える文字列属性の名前です。属性の規約の例については、8.1節「属性の規約」(p.86)を参照してください。
xtype

前もって定義されているNetCDF外部データ型のひとつ。このパラメーターの型nc_typeはNetCDFヘッダーファイルにおいて定義されています。有効なNetCDF外部データ型はNC_BYTE, NC_CHAR, NC_SHORT, NC_INT, NC_FLOAT, NC_DOUBLE等です。どんな型の属性も生成できますが、ほとんどの用途にはNC_CHARNC_DOUBLEの属性で十分です。

len 属性に与えられた値の数
tp, up, cp, sp, ip, lp, fp, dp 一つまたは複数の値へのポインタ。値の型がxtypeと指定されたNetCDF属性の型と異なる場合には、型変換が行なわれます。詳細については、3.3節「型変換」(p.24)を参照してください。

エラー

エラーが発生していなければ、nc_put_att_ typeNC_NOERRの値を返します。それ以外の場合には、返されたステータスがエラーを示します。エラーの原因として次のようなものが考えられます。

・ 変数 IDが指定されたNetCDFファイルで無効である。
・ 指定されたNetCDF型が無効である。
・ 指定された長さが負の値である。
・ 指定されたオープンされたNetCDFファイルはデータモードにあり、指定された属性が大きくなっている。
・ 指定されたオープンされたNetCDFファイルはデータモードにあり、指定された属性がまだ存在していない。
・ 指定されたNetCDF IDがオープンされたNetCDFファイルを参照していない。
・ この変数の属性の数がNC_MAX_ATTRSを越えている。

この例では、nc_put_att_doubleを使って、既存のfoo.ncという名前のNetCDFファイルにおいて、rhという名前のNetCDF変数に対してvalid_rangeという属性、及び、titleという名前のグローバル属性を追加しています。

#include <netcdf.h>

int status; /* エラーステータス */
int ncid; /* NetCDF ID */
int rh_id; /* 変数 ID */
static double rh_range[] = {0.0, 100.0};/* 属性値 */
static char title[] = "example NetCDF dataset";

status = nc_open("foo.nc", NC_WRITE, &ncid);
if (status != NC_NOERR) handle_error(status);

status = nc_redef(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_put_att_double (ncid, rh_id, "valid_range",
NC_DOUBLE, 2, rh_range);
if (status != NC_NOERR) handle_error(status);
status = nc_put_att_text (ncid, NC_GLOBAL, "title",
NC_CHAR, strlen(title), title)
if (status != NC_NOERR) handle_error(status);

status = nc_enddef(ncid); /* 定義モードを出る */
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