TOC PREV NEXT INDEX

Put your logo here!


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


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

用法
INTEGER FUNCTION NF_COPY_ATT (INTEGER NCID_IN, INTEGER VARID_IN,
CHARACTER*(*) NAME, INTEGER NCID_OUT,
INTEGER VARID_OUT)
NCID_IN 属性のコピー元となる、以前のNF_OPENまたはNF_CREATE呼び出しで返された入力NetCDFファイルのNetCDF ID。
VARID_IN 属性のコピー元である入力NetCDFファイルの変数ID、またはグロバール属性のNF_GLOBAL
NAME 入力NetCDFファイルからコピーされる属性の名前。
NCID_OUT 以前のNF_OPENまたはNF_CREATEから属性をコピーされる、出力NetCDFファイルのNetCDF ID。入力と出力NetCDF IDが同じでも構いません。コピーされる属性が出力NetCDFファイル内にまだない場合、または存在する属性が大きくなる場合は、出力NetCDFファイルは定義モードにしておく必要があります。
VARID_OUT 属性のコピー先である、出力NetCDFファイルの変数ID、またはグローバル属性をコピーする場合にはNF_GLOBAL

エラー

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

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

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

INCLUDE 'netcdf.inc'

INTEGER STATUS ! エラーステータス
INTEGER NCID1, NCID2 ! NetCDF ID
INTEGER RHID, AVRHID !変数ID

STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID1)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
STATUS = NF_OPEN ('bar.nc', NF_WRITE, NCID2)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)

STATUS = NF_INQ_VARID (NCID1, 'rh', RHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
STATUS = NF_INQ_VARID (NCID2, 'avgrh', AVRHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)

STATUS = NF_REDEF (NCID2) ! 定義モードに入る
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
! 変数属性を "rh" からコピーして "avgrh"に貼り付ける
STATUS = NF_COPY_ATT (NCID1, RHID, 'units', NCID2, AVRHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)

STATUS = NF_ENDDEF (NCID2) ! 定義モードを抜ける
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)



Quadralay Corporation
http://www.webworks.com
Voice: (512) 719-3399
Fax: (512) 719-3606
sales@webworks.com
TOC PREV NEXT INDEX