HDF5DotNet : 値の読み込み
2013-02-09


数値型の読み込み方法について

読み込みでは、"H5D"クラスにある、"read<>"のジェネリックメソッドを使用する。
同じクラスにある"write<>"と同じ引数"H5DataSetId"と"H5TypeId"が必要なので、取得する必要がある。もう一つの引数は"H5Array<>"を指定する。

まずは"H5D"クラスにある"open"メソッドを使用する。引数はfileOrGroupId("H5FileOrGroupId"クラス)とdataSetName("string"クラス)。戻り値は"H5DataSetId"。要はこのメソッドで"H5DataSetId"を取り出す。ただし、グループ内に指定の引数指定のdataSetNameがない場合は"Exception"をthrowするので注意。
H5DataSetId dataSetID = H5D.open( fileID,"TestDataSet" );
"H5TypeId”クラスの取得については、上記で取得した"H5DataSetId"を使用して取得できる。"H5D"クラス内の、"getType"メソッドを使用。引数は上記で取得した"H5DataSetId"クラスを指定する。
H5DataTypeId dataTypeID = H5D.getType( dataSetID );
あとは"H5Array<>"を準備する。ジェネリックなので型を指定する。インスタンス作成時の引数はジェネリックで指定した型の配列を入れる。この中にデータの中身が入れられる。
int[] intArray = new int[]{0};
H5Array<int> array =
new
H5Array<int>( myArray );
仕上げに、"H5D"クラスの"read<>"ジェネリックメソッドを実行してデータを取り出す。
H5D.read<int>( dataSetID , dataTypeID , array  );
int returnValue = intArray[0];
使用後は、"close"メソッドが使用できるものは閉じて終了。
以下、サンプル
H5FileId fileID = H5F.open( "C:\\HDFSampleFile.hdf5", H5F.OpenMode.ACC_RDWR );
H5DataSetId dataSetID = H5D.open( fileID,"TestDataSet" );
H5DataTypeId dataTypeId = H5D.getType( dataSetID );
int[] intArray = new int[] { 0 };
H5Array<int> array = new H5Array<int>( intArray );
H5D.read<int>( dataSetID, dataTypeId, array );
int returnValue = intArray[ 0 ];
H5D.close( dataSetID );
H5T.close( dataTypeId );
H5F.close( fileID );


コメント(全50件)
※コメントの受付件数を超えているため、この記事にコメントすることができません。


記事を書く
powered by ASAHIネット