TOC PREV NEXT INDEX

Put your logo here!


3.2.2 配列断面のアクセス例


先に扱ったNetCDFファイルの例(2.1.2節「Network Common Data Form Language (CDL)」(p.12))において、あるレベル(例えば2段目)のtemp変数の全データの断面を読み取りたいとし、そしてそのNetCDFファイルには記録が3つ(time値)あるとます。次元は

lat = 5, lon = 10, level = 4, time = unlimited;

と定義されます。そして、変数 temp はCDL表記においては

float temp(time, level, lat, lon);

と宣言されます。

FORTRANの場合にはCDL表記法とは次元が逆転しており、第一次元が最も早く変化し、記録変数の最後尾が記録次元となっています。それ故、一つのレベルのみのデータを保持している変数のFORTRANにおける宣言は次のようになります。

INTEGER LATS, LONS, LEVELS, TIMES
PARAMETER (LATS=5, LONS=10, LEVELS=1, TIMES=3)

REAL TEMP(LONS, LATS, LEVELS, TIMES)

2段目のレベルにある全時刻・全緯度・全経度のデータブロックを識別するためには、始点インデックスとブロックの縁の長さを与えなければなりません。timelonlat次元については最初の値から、そしてlevel次元については2番目の値から開始されるので始点インデックスはFORTRANでは(1, 1, 2, 1)になります。time値については3個すべて、level値については1個のみ、lat値については5個すべて、そしてlon値については10個すべてを取得したいので、縁の長さはFORTRANでは(10, 5, 1, 3)になります。この操作によって合計150個(3*1*5*1)の浮動小数点数が返されるので、これだけの数を収容するのに十分な配列スペースを確保しなければなりません。このデータが返される順番は最も早く変化する最初の次元LONになります:

TEMP( 1, 1, 2, 1)
TEMP( 2, 1, 2, 1)
TEMP( 3, 1, 2, 1)
TEMP( 4, 1, 2, 1)



TEMP( 8, 5, 2, 3)
TEMP( 9, 5, 2, 3)
TEMP(10, 5, 2, 3)

CやFORTRANなどの異なる言語インターフェースにおける次元の順番が異なるのはディスク上で保存されている順番が異なるからではなく、単に各言語に対する手続きインターフェースによってサポートされている順番が異なっているからです。一般的に、NetCDFファイルがCやFORTRAN、または他の言語インターフェースで作成されていても何も変わりません。NetCDFをサポートする言語で作成されたNetCDFファイルは他の言語で書かれたプログラムを使って読み取ることができます。



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