8.6 属性名を変更する: nc_rename_att
関数nc_rename_attは属性の名前を変更します。新しい名前が元の名前より長い場合には、NetCDFファイルは定義モードになっている必要があります。同じ変数の他の属性名と同じ名前になってしまうような属性名の変更はできません。
用法
int nc_rename_att (int ncid, int varid, const char* name,
const char* newname);
ncid 以前のnc_openまたはnc_create呼び出しで返されたNetCDF ID varid 属性の変数のID、またはグローバル属性のNC_GLOBAL name 現行の属性名。 newname 指定された属性に割り当てられる新しい名前。新しい名前が現行の名前よりも長い場合には、NetCDFファイルは定義モードになっていなければなりません。
エラー
エラーが発生していなければ、nc_rename_attはNC_NOERRの値を返します。それ以外の場合には、返されたステータスがエラーを示します。エラーの原因として次のようなものが考えられます。
・ 変数IDが無効である。
・ 新しい属性名は指定された変数の他の属性が既に使用している。
・ 指定されたNetCDFファイルはデータモードになっていて、新しい名前は元の名前より長い。
・ 指定された属性が存在しない。
・ 指定されたNetCDF IDがオープンされたNetCDFファイルを参照していない。
例
この例では、nc_rename_attを使って、既存のfoo.ncというNetCDFファイルにおける変数rhの変数属性の名前をunitsからUnitsに変更します。
#include <netcdf.h>
…
int status; /* エラーステータス */
int ncid; /* NetCDF ID */
int rh_id; /* 変数 ID */
…
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_rename_att(ncid, rh_id, "units", "Units");
if (status != NC_NOERR) handle_error(status);
Quadralay Corporation http://www.webworks.com Voice: (512) 719-3399 Fax: (512) 719-3606 sales@webworks.com |