Frage

Ich möchte programmatisch die Daten mit einem Datensatz in einer HDF5 Datei zugeordnet ändern. Ich kann nicht einen Datensatz mit Namen entweder zu löschen (das Erlauben mir, es wieder mit den geänderten Daten hinzuzufügen) scheinen einen Weg zu finden oder aktualisieren einen Datensatz mit Namen. Ich bin mit der C-API für HDF5 1.6.x aber Zeiger auf jeder HDF5 API wäre nützlich.

War es hilfreich?

Lösung

nach der Bedienungsanleitung :

  

HDF5 zu diesem Zeitpunkt keinen einfachen Mechanismus zur Verfügung stellen einen Datensatz aus einer Datei zu entfernen oder den Speicherplatz von einem gelöschten Objekt besetzt zurückzufordern.

So einfach Löschung erscheint nicht in Frage zu sein. Aber der Abschnitt weiter:

  

einen Datensatz aus- und Rückgewinnung der Raum, den sie verwendet werden, können mit der H5Ldelete Funktion und der h5repack Utility-Programm. Mit der H5Ldelete Funktion, Links zu einem Datensatz aus der Dateistruktur entfernt werden. Nachdem alle Links entfernt wurden, wird der Datensatz für jede Anwendung nicht zugänglich und wirksam aus der Datei entfernt. Die Art und Weise, den Raum durch einen nicht verbundenen Datensatzes belegt wiederherzustellen, ist alle Objekte der Datei in eine neue Datei zu schreiben. Alle nicht verknüpften Objekt ist unzugänglich für die Anwendung und wird nicht in der neuen Datei enthalten sein. Schreiben Objekte in eine neue Datei mit einem benutzerdefinierten Programm oder mit der h5repack Utility-Programm durchgeführt werden.

Andere Tipps

Wenn Sie einen Datensatz in c löschen ++ Sie die folgenden Befehle müssen:

H5File m_h5File (pathAndNameToHDF5File, H5F_ACC_RDWR); //The hdf5 c++ object.
std::string channelName = "/myGroup/myDataset";
int result = H5Ldelete(m_h5File.getId(), channelName.data(), H5P_DEFAULT);

Ergebnis wird ein nicht-negativer Wert, wenn erfolgreich sein; andernfalls gibt einen negativen Wert. https://support.hdfgroup.org/HDF5/doc/ RM / RM_H5L.html # Link löschen

Wie @MaxLybbert sagte, die Festplattenspeicher ist es nicht recoverd. Sie müssen das repack-Tool verwenden. Doch mit HDF5 v.1.10 kann der Raum zurückgewonnen werden. Aber die Bedienungsanleitung ist noch nicht fertig: https://support.hdfgroup.org/HDF5 /docNewFeatures/NewFeaturesFileSpaceMgmtDocs.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top