TOC PREV NEXT INDEX

Put your logo here!


7.13 部分サンプルされた配列の値を読み取る: NF_GET_VARS_ type


関数NF_GET_VARS_ typeのファミリーはオープンされたNetCDFファイルから部分サンプルされた(ストライドした)NetCDF変数の配列断面の値を読みます。部分サンプルされた配列断面は隅・縁の長さを示すベクトル・ストライドベクトルを与えることによって指定されます。値はNetCDF変数の中で最後の次元が最も早く変化するように読まれます。NetCDFファイルはデータモードに無くてはなりません。

用法
INTEGER FUNCTION NF_GET_VARS_TEXT (INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
INTEGER STRIDE(*),CHARACTER*(*) text)
INTEGER FUNCTION NF_GET_VARS_INT1 (INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
INTEGER STRIDE(*),INTEGER*1 i1vals(*))
INTEGER FUNCTION NF_GET_VARS_INT2 (INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
INTEGER STRIDE(*),INTEGER*2 i2vals(*))
INTEGER FUNCTION NF_GET_VARS_INT (INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
INTEGER STRIDE(*), INTEGER ivals(*))
INTEGER FUNCTION NF_GET_VARS_REAL (INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
INTEGER STRIDE(*), REAL rvals(*))
INTEGER FUNCTION NF_GET_VARS_DOUBLE(INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
INTEGER STRIDE(*), DOUBLE dvals(*))
NCID 以前のNF_OPENまたはNF_CREATE呼び出しで返されたNetCDF ID
VARID 変数ID
START 最初にデータ値が読み取られる変数内のインデックスを指定する整数のベクトル。インデックスは1に相対的なので、変数の最初のデータ値のインデックスは(1, 1, …, 1)となります。STARTの要素は変数の次元と順番に対応していなければなりません。従って、記録変数の場合には、最後のインデックスがデータ値を読み込む開始記録番号となります。
COUNT 各次元に沿って幾つのインデックスが選定されるかを指定するsize_tの整数ベクトル。例えば単一の値を読み取る場合には、count(1, 1, … , 1)と指定して下さい。countの要素は変数の次元に順番に対応します。よって、記録変数の場合にはcountの最初の要素が読み取る記録数の総計に対応します。
STRIDE 各次元で選定されたインデックスの間隔を示す整数ベクトル、もしくはゼロの値。ベクトルの要素は変数の次元に順番に対応します。値が1の場合には対応するNetCDF変数の隣接した値にアクセスします。値が2の場合には対応するNetCDF変数の値を一つおきにアクセスします。引数0(1, 1, …, 1)として扱われます。
text, i1vals, i2vals, ivals,rvals, dvals 読み込まれるデータ値のかたまり。データの型は呼び出された関数に適当な型でなければなりません。文字(CHARACTER)データを数値変数から、または数値データを文字変数から読み取ることは出来ません。数値データについては、データ型がNetCDF変数型と異なる場合には型変換が行われます。(詳細については3.3節「型変換」(p.24)を参照して下さい。)

エラー

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

・ 変数IDが指定されたNetCDFファイルに対して有効ではない。
・ 指定されたstart・count・strideでは範囲外のインデックスを生成してしまう。
・ 一つもしくはそれ以上の値が希望の型で表わせる値の範囲外である。
・ 指定されたNetCDFファイルがデータモードではなく定義モードになっている。
・ 指定されたNetCDF IDがオープンされたNetCDFファイルを参照しない。

この例では関数NF_GET_VARS_DOUBLE を使用してNetCDFファイルfoo.nc の変数rhの各次元から一つおきに値を読み取ります。値はパラメータが2つ存在する配列と同じ次元ストライドを割り当てられています。簡潔にするためこの例では、rh の次元が lon, lattimeであり、 lon 値は10個、flat値は5個、そして time 値は3個存在することが既知のこととします。

INCLUDE 'netcdf.inc'

PARAMETER (NDIMS=3) ! 次元数
PARAMETER (TIMES=3, LATS=5, LONS=10) ! 次元長
INTEGER STATUS, NCID
INTEGER RHID ! variable ID
INTEGER START(NDIMS), COUNT(NDIMS), STRIDE(NDIMS)
DOUBLE DATA(LONS, LATS, TIMES)
DATA START /1, 1, 1/ ! 最初の値から開始
DATA COUNT /LONS, LATS, TIMES/
DATA STRIDE /2, 2, 2/

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_VARS_DOUBLE(NCID,RHID,START,COUNT,STRIDE,DATA(1,1,1))
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