Up|<<Prev|Next>>


4.3 名前が未知のNetCDF ファイルを読む場合

変数の名前を前もって知らなくてもその全ての変数を処理するようなプログラム(例えば総括的なソフトウェア)を作成することは可能です。同様に、次元や属性名も明らかではない場合もあります。

NetCDFのオブジェクトに関するほかの情報も”inquire”機能を使用してNetCDFファイルから得られます。この機能は全NetCDFファイル・次元・変数・属性等の情報を返します。 下記のテンプレートはそれらの使用法を示しています:

    NF_OPEN                   ! 既存のNetCDFファイルを開く
      ... 
    NF_INQ                    ! 内容を調べる
         ... 
       NF_INQ_DIM             ! 次元名と次元長を得る
         ... 
       NF_INQ_VAR             ! 変数名・型・形状を得る
            ... 
          NF_INQ_ATTNAME      ! 属性名を得る
            ... 
          NF_INQ_ATT          ! 属性型と属性長を得る
            ... 
          NF_GET_ATT          ! 属性値を得る
            ... 
       NF_GET_VAR             ! 変数の値を得る
         ... 
    NF_CLOSE                  ! NetCDFファイルを閉じる

上記の例のようにコール一つで既存のNetCDFファイルが開き、NetCDF IDを返します。このNetCDF IDは NF_INQ ルーチンに送られ、その操作によって次元数・変数の数・グローバル属性の数・そして存在すれば無制限次元のIDが返されます

このinquire 機能は手頃で、I/Oを必要としません。それは、最初にNetCDFファイルを開いた時に、提供する情報がメモリ内に格納されるからです。

次元 IDは 1で始まる連続な整数を取り、一旦割り当てられると消去することは出来ません。また、次元も定義されたら消去することは出来ません。 ですから、NetCDFファイル中の次元IDの数を知るということは全ての次元IDを知ることと道義になります。それらは 1, 2, 3, ... 等の整数で次元の数だけ存在します。各次元IDに対しては、inquire機能への NF_INQ_DIM で次元名と次元長が返されます。

変数 IDもまた連続した整数 1, 2, 3, ... で表され、変数の数だけ存在します。変数IDは NF_INQ_VAR コールを使用して各変数に割り当てられた名前、型、形状、と属性数を知ることが出来ます。

一旦、ある変数の 属性値が 既知になると、 NF_INQ_ATTNAME コールによって任意の変数に割り当てられたNetCDF ID・変数ID・属性数を知ることが出来ます。属性名が分かると, NF_INQ_ATT コールで属性型と属性長が分かります。型と長さから、属性値を格納するために十分なスペースを確保しておくことが出来ます。 次に、 NF_GET_ATT ファミリーの一員へコールすることにより変数値が返されます。

一度NetCDF変数のIDと形状が既知になると、データの値は単一の値の場合は NF_GET_VAR1 ファミリーへの一員へのコール、そして複数の場合には、 NF_GET_VAR, NF_GET_VARA, NF_GET_VARS, 又は様々な種類の配列アクセス法に関しては NF_GET_VARM へのコールすることになります。


Up|<<Prev|Next>>