Up|<<Prev|Next>>


3.4 データ構造

NetCDF抽象化が直接的にサポートする唯一の データ構造は ベクトル属性つきの名前のついている配列の集合のみです。NetCDFはリンクされたリストや、ツリー、粗い配列、不均一な配列等、ポインタを必要とする種類のデータ構造を表現するのには適していません。

ある配列のデータを他の配列のデータへのポインタとして使用することに関する様々な規約を採用することにより、配列の集合により他のデータ構造を構築することは可能です。そのようなデータ構造を構築する際に、NetCDFライブラリは役にも立ちませんが阻害もしません。その代わり、そのような規約を設計する手段を提供します。

次の例は属性 row_index を使用して 不均質な配列 ragged_mat を格納し、 それによって各列の始点となるインデックスを指定することにより関連するインデックス変数の名前を与えています。 この例では、最初の列は12個(12-0)の要素からなり、2列目は7個(19 -12)、という具合に続きます。

        float   ragged_mat(max_elements);
                ragged_mat:row_index = "row_start";
        int     row_start(max_rows);
data:
        row_start   = 0, 12, 19, ... 

もう一つの例として、NetCDF変数は任意のNetCDFGファイルの中でグループ化することが挙げられます。各グループの変数の名前を伝統的な区切り文字であるスペースやコンマによってリストにしている属性を定義することによってこれは可能になります。このようなグループ化のために属性名の規約付けをすることによって幾つもの名前のある変数グループを作ることを可能にします。 ある特定の規約に従った属性を各々の変数に与えることによって変数がどのグループに属しているかのリストが作れます。他の属性や変数を指定する属性や変数の導入により、 NetCDFファイルにおける幾種の複雑な構造を表すための柔軟な手段が与えられます。


Up|<<Prev|Next>>