Development Environment | ![]() ![]() |
メタデータをHDFファイルに埋め込む
HDF Annotation API (AN
)を使って、HDFファイルに、ユーザが作成したデータを解説する情報をオプションで埋め込むことができます。HDF SD APIには、コメントを埋め込む機能が用意されており、このAPIを用いて、HDFファイル、または、HDFファイルを構成する個々のデータセットと属性を関連付けることができます。この節では、SD属性について説明します。Annotation APIに関する情報については、NCSA公式マニュアルを参照してください。
属性のタイプ
HDF SD API は、つぎの3タイプの属性を定義します。
ユーザは、単一のHDFオブジェクトに複数の属性を関連付けることができます。HDFは、各オブジェクトについて属性インデックスを保持しています。属性インデックスは、ゼロベースです。最初の値は、インデックス値0、2番目の値はインデックス値1 等々というようにインデックスが付されています。インデックス値を指定すれば、属性にアクセスすることができます。
各々の属性は、name = value
という書式になっています。ここで、name
(HDF用語では、label
と呼ばれています) は、256文字以内の長さで書かれたテキスト文字列です。value
は、同一データタイプの1つ、または、それ以上のエントリーで構成されています。単一の属性が複数のvalue
をもつことも可能です。
属性とHDF SDオブジェクトの関連付け
属性とファイル、データセット、次元を関連付けるには、SDsetattr
関数を使用します。
sd_id
)、データセット識別子(sds_id
)、または、次元識別子(dim_id
)です。つぎのサンプルコードは、my_global_attr
と名付けられたグローバル属性を作成し、作成したグローバル属性とsd_id
という識別子のHDFファイルとの関連付けを行います。
status = hdfsd('setattr',sd_id,'my_global_attr','my_attr_val');
注意 NCSA のマニュアルでは、SDsetattr ルーチンには、さらに、2つの引数(データタイプと属性値の数)を設定できます。しかし、MATLABからこのルーチンを呼び出した場合、データタイプと属性値の数という2つの引数は設定されません。MATLAB HDF関数は、データタイプと属性のサイズをユーザが指定した値から決定することができるからです。
|
前もって設定する属性の作成
前もって設定する属性は、SD APIによって既に名前とデータタイプを定義済みである、という点を除けば、ユーザ定義属性と同一です。たとえば、SD APIは、ユーザがデータセットを使って座標系を指定できるcordsys
という名称の属性を定義しています。この属性が取り得る値には、'cartesian'
、'polar'
、'spherical'
というテキスト文字列が含まれています。
プリセット属性は、アプリケーションが依存する規則を作り上げるという点で有用です。SD APIは、データセットや次元についてのみ、プリセット属性を用意しています。ファイルについては、前もって設定した属性を用意していません。前もって設定した属性の完全なリストについては、NCSAのマニュアルを参照してください。
前もって設定した属性は、ユーザ定義属性同様、関数SDsetattr
を使用する方法で作成することができます。
attr_name = 'cordsys'; attr_value = 'polar'; status = hdfsd('setattr',sds_id,attr_name,attr_value);
SD APIは、前もって設定した属性の読み書きに特化した関数も用意しています。SDsetdatastrs
のような特殊な関数は、複数の相関関係にある前もって設定した属性を読み書きするいくつかの場合に、汎用の関数よりも簡単に使用することができます。なお、プリセット次元属性の読み書きには、必ず専用関数を使用してください。
![]() | HDFフォーマットでデータのエクスポート | MATLAB HDF ユーティリティAPIの使用 | ![]() |