TOC PREV NEXT INDEX

Put your logo here!


8.5 一つのNetCDFから他へ属性をコピーする: nc_copy_att


関数nc_copy_attはオープンされたNetCDFファイルから他のファイルへ属性をコピーします。また同じNetCDF内で、ある変数の属性を別の変数にコピーするときにも使えます。

用法
int nc_copy_att (int ncid_in, int varid_in, const char *name,
int ncid_out, int varid_out);
ncid_in 以前のnc_openまたはnc_create呼び出しで返された、属性のコピー元となる入力NetCDFファイルのNetCDF ID。
varid_in 属性のコピー元となる、入力NetCDFファイルの変数ID、またはグローバル属性の場合にはNC_GLOBAL
name コピーされる入力NetCDFファイルの属性名
ncid_out 以前のnc_openまたはnc_create呼び出しから属性をコピーされる、出力NetCDFファイルのNetCDF ID。入力と出力NetCDF IDが同じでも構いません。コピーされる属性が出力NetCDFファイル内にまだ存在しない場合、または既存のコピー先の属性が大きくなる場合には、出力NetCDFファイルは定義モードにしておく必要があります。
varid_out 属性のコピー先の出力NetCDFファイルの変数ID、またはグローバル属性をコピーする場合にはNC_GLOBAL

エラー

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

・ 入力または出力変数IDが指定されたNetCDFファイルで無効である。
・ 指定された属性が存在しない。
・ 出力NetCDFが定義モードになく、コピーされる属性が新しいか、または存在する属性より大きい。
・ 入力または出力NetCDF IDがオープンされたNetCDFファイルを参照していない。

この例では、nc_copy_attを使って、既存のfoo.ncというNetCDFファイルにおける変数rhから変数属性unitsをコピーして、他の既存のbar.ncというNetCDFファイルの変数avgrhに貼り付けます。変数avgrhは既に存在するが、属性unitsはまだ持っていないと仮定します。

#include <netcdf.h>

int status; /* エラーステータス */
int ncid1, ncid2; /* NetCDF ID */
int rh_id, avgrh_id; /* 変数IDs */

status = nc_open("foo.nc", NC_NOWRITE, ncid1);
if (status != NC_NOERR) handle_error(status);
status = nc_open("bar.nc", NC_WRITE, ncid2);
if (status != NC_NOERR) handle_error(status);

status = nc_inq_varid (ncid1, "rh", &rh_id);
if (status != NC_NOERR) handle_error(status);
status = nc_inq_varid (ncid2, "avgrh", &avgrh_id);
if (status != NC_NOERR) handle_error(status);

status = nc_redef(ncid2); /* 定義モードに入る */
if (status != NC_NOERR) handle_error(status);
/* 変数属性を "rh" からコピーして "avgrh"に貼り付ける */
status = nc_copy_att(ncid1, rh_id, "units", ncid2, avgrh_id);
if (status != NC_NOERR) handle_error(status);

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