14 Stimmen

Setzen von Attributen auf Datensätzen mit HDF5 C++ api

Ich verwende die HDF5 C++ API in HDF5 1.8.7 und möchte eine H5::Attribute Instanz verwenden, um ein paar skalare Attribute in einer H5::DataSet Instanz zu setzen, kann aber keine Beispiele finden. Mit der C-API ist es ziemlich einfach:

/* Value of the scalar attribute */ 
int point = 1;                         

/*
 * Create scalar attribute for the dataset, my_dataset.
 */
aid2  = H5Screate(H5S_SCALAR);
attr2 = H5Acreate(my_dataset, "Integer attribute", H5T_NATIVE_INT, aid2,H5P_DEFAULT);

/*
 * Write scalar attribute to my_dataset.
 */
ret = H5Awrite(attr2, H5T_NATIVE_INT, &point); 

/*
 * Close attribute dataspace.
 */
ret = H5Sclose(aid2); 

/*
 * Close attribute.
 */
ret = H5Aclose(attr2); 

Aus irgendeinem seltsamen Grund scheinen den Klassen H5::Attribute und H5::DataSet in der C++ API die notwendigen Methoden zu fehlen. Wenn jemand ein konkretes Beispiel mit der C++-API nennen kann, wäre ich sehr dankbar.

18voto

Sam Russell Punkte 281

Wenn Sie ein Dataset-Objekt ds haben...

Hinzufügen eines String-Attributs...

StrType str_type(0, H5T_VARIABLE);
DataSpace att_space(H5S_SCALAR);
Attribute att = ds.createAttribute( "myAttribute", str_type, att_space );
att.write( str_type, "myString" );

Hinzufügen eines int-Attributs...

IntType int_type(PredType::STD_I32LE);
DataSpace att_space(H5S_SCALAR);
Attribute att = ds.createAttribute(" myAttribute", int_type, att_space );
int data = 77;
att.write( int_type, &data );

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X