Что такое формат файла HDF?
Файлы .hdf хранят научные наборы данных в бинарном контейнере HDF4 (Hierarchical Data Format версии 4), разработанном в 1988 году Национальным центром суперкомпьютерных приложений (NCSA) в Иллинойсском университете. HDF4 был создан для того, чтобы ученые и инженеры могли хранить разнородные числовые данные - многомерные массивы, растровые изображения, таблицы и метаданные - в одном переносимом файле.
Формат идентифицируется по четырехбайтовой магической последовательности 0E 03 13 01. Внутри HDF4 использует плоскую архитектуру тегов и ссылок: каждый объект данных описывается 12-байтовым дескриптором (тег, номер ссылки, смещение, длина) в блоке дескрипторов данных (Data Descriptor Block). Сжатие является необязательным для каждого набора данных и может использовать RLE, SKPHUFF (модифицированный алгоритм Хаффмана) или DEFLATE (gzip). Жесткое ограничение в 2 ГБ на объект данных обусловлено использованием 32-битных знаковых полей смещения.
NASA распространяет продукты дистанционного зондирования со спутников Terra и Aqua в формате HDF-EOS на базе HDF4, используя расширение .hdf. HDF4 был заменен форматом HDF5 - полностью переработанной версией, выпущенной в 1998 году, которая сейчас рекомендуется для новых научных работ. Оба формата могут иметь расширение .hdf; магические байты позволяют надежно их различать (HDF4: 0E 03 13 01; HDF5: 89 48 44 46).
Безопасность и защита
РИСК: LOWHDF4 - это пассивный бинарный контейнер данных, не содержащий исполняемого кода. Безопасен для открытия. Очень большие наборы данных могут исчерпать оперативную память - используйте pyhdf или MATLAB для чтения подмножеств данных. Поврежденные файлы HDF4 могут вызвать ошибки в старых версиях libhdf4; обновляйте инструменты. Некоторые версии библиотек HDF4 (до 4.2.15) имели уязвимости безопасности CVE - обновитесь до версии 4.2.16+.
Детали формата
в двух словах- Файл HDF5 (иногда) - Некоторые инструменты сохраняют данные HDF5 с расширением .hdf; используйте магические байты, чтобы отличить HDF4 (0x0E031301) от HDF5 (0x89HDF...).
Программы, открывающие файлы HDF
Технические подробности
глубокая спецификация| Магические байты | 0E 03 13 01 по смещению 0 |
| Тип формата | Бинарный контейнер научных данных (плоская архитектура тегов/ссылок, HDF4) |
| Порядок байтов | Нативный Big-endian; каждый объект данных хранит свой собственный дескриптор порядка байтов |
| Сжатие | Опционально для каждого набора данных: RLE, SKPHUFF (модифицированный Хаффман) или DEFLATE (gzip) |
| Типы данных | Многомерные массивы (Scientific Datasets), растровые изображения (1-32 bpp), таблицы (Vdata), группы (Vgroups), аннотации |
| Макс. размер объекта | ~2 ГБ на один объект данных (ограничение 32-битного знакового поля смещения) |
| Макс. количество измерений | До 32 измерений на один Scientific Dataset |
| Макс. количество ссылок на объект | 65 535 на тип тега (16-битные номера ссылок) |
| Архитектура | Плоская структура тегов/ссылок - объекты описываются 12-байтовыми дескрипторами (tag, ref, offset, length) в блоках Data Descriptor Blocks |
| Основное научное применение | Дистанционное зондирование NASA EOS (спутники Terra, Aqua); климатические и атмосферные исследования |
| Заменен на | HDF5 (.h5 / .hdf5), полностью переработанный формат, выпущенный в 1998 году; несовместим на уровне байтов с HDF4 |
| Статус поддержки HDF4 | Только исправления безопасности примерно с 2015 года; новые функции не добавляются |
| Инструмент конвертации | h4h5tools (The HDF Group) конвертирует файлы HDF4 в HDF5 |
| Выпущен | 1988 (HDF 1.0 by NCSA, University of Illinois) |
| Последняя версия | HDF4 4.2.16 (2022); HDF4 maintenance-only since HDF5 became primary |
| Открыть стандартное | Да · без роялти |
| Спецификация | support.hdfgroup.org |
Конвертации HDF
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах HDF.