Up|<<Prev|Next>>


7.12 値の配列を読む: NF_GET_VARA_ type

関数 NF_GET_VARA_ type のファミリーは開かれたNetCDFファイルの変数から値の配列を読み取ります。 配列は隅の位置と各辺の長さを表わすベクトルを与えて指定します。値は 最初の 次元が最も早く変化するように、次々と読み込まれます。

 

INTEGER FUNCTION NF_GET_VARA_TEXT(INTEGER NCID, INTEGER VARID,

INTEGER START(*), INTEGER COUNT(*),

CHARACTER*(*) text)

INTEGER FUNCTION NF_GET_VARA_INT1(INTEGER NCID, INTEGER VARID,

INTEGER START(*), INTEGER COUNT(*),

INTEGER*1 i1vals(*))

INTEGER FUNCTION NF_GET_VARA_INT2(INTEGER NCID, INTEGER VARID,

INTEGER START(*), INTEGER COUNT(*),

INTEGER*2 i2vals(*))

INTEGER FUNCTION NF_GET_VARA_INT (INTEGER NCID, INTEGER VARID,

INTEGER START(*), INTEGER COUNT(*),

INTEGER ivals(*))

INTEGER FUNCTION NF_GET_VARA_REAL(INTEGER NCID, INTEGER VARID,

INTEGER START(*), INTEGER COUNT(*),

REAL rvals(*))

INTEGER FUNCTION NF_GET_VARA_DOUBLE(INTEGER NCID, INTEGER VARID,

INTEGER START(*), INTEGER COUNT(*),

DOUBLE dvals(*))

There are six FORTRAN functions for reading an array of values from a NetCDF variable.

 

NCID

以前の NF_OPEN 又は NF_CREATE 呼び出しで返されたNetCDF ID。

VARID

変数ID。

START

最初にデータ値が読み取られる変数内のインデックスを指定する整数のベクトル。インデックスは1に相対的なので、変数の最初のデータ値のインデックスは (1, 1, ..., 1) となります。 START の長さは指定された変数の次元と一致していなければなりません。 START の要素は変数の次元と順番に対応していなければなりません。従って、 記録変数の場合には、最後のインデックスがデータ値を読み込む開始記録番号となります 。

COUNT

読み込まれるデータの塊の各次元に沿った辺の長さを指定する整数のベクトル。単一のデータ値を読み込む場合には、 COUNT (1, 1, ..., 1) と指定します。 COUNT の長さは指定された変数の次元の数と一致します。 COUNT の要素は変数の次元に順番に対応します。 従って、記録変数の場合には、 COUNT の最後の要素が書き込む記録数の総計に対応します。

text, i1vals,
i2vals, ivals,rvals, or dvals

読み込まれるデータ値の塊。。データの型は呼び出された関数に適当な型でなければなりません。 文字(CHARACTER) データを数値変数から、又は数値データを文字変数から読み取ることは出来ません。数値データについては、データ型がNetCDF変数型と異なる場合には型変換が行われます。 (詳細については型変換を参照のこと。

 

エラーが発生していなければ、関数 NF_GET_VARA_ type NF_NOERR の値を返します。それ以外の場合は、返されたステータスがエラーが発生したことを示します。エラーの原因としては:

 

この例では NF_GET_VARA_DOUBLE を使用して、既存の NetCDF ファイル foo.nc の変数 rh の値を全て読み取ります。簡潔にするためにこの例では、変数 rh の次元が lon , lat , と time であり、 lon 値は10個、 lat 値は5個、そして time 値が3個あることを既知とします。

INCLUDE 'netcdf.inc'
   ... 
PARAMETER (NDIMS=3)                  ! 次元の数
PARAMETER (TIMES=3, LATS=5, LONS=10) ! 次元長
INTEGER STATUS, NCID
INTEGER RHID                         ! 変数ID
INTEGER START(NDIMS), COUNT(NDIMS)
DOUBLE RHVALS(LONS, LATS, TIMES)
DATA START /1, 1, 1/                 ! 最初の値から開始
DATA COUNT /LONS, LATS, TIMES/       ! 全ての値を取得
   ... 
STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
   ... 
STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
STATUS = NF_GET_VARA_DOUBLE (NCID, RHID, START, COUNT, RHVALS)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)

Up|<<Prev|Next>>