Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Добавление структуры в файлы HDF5 - эквивалент соглашений NetCDF для HDF5

Автор вопроса: thespinkusОтветов: 2

NetCDF4 имеет соглашение соглашения для добавления структуры в файлы NetCDF. Ищу аналогичную, но специально для HDF5.

Моя основная цель - добавить структуру к моим файлам HDF5 стандартным способом. Я хочу что-то вроде того, что HDF5 делает с изображениями, чтобы определить тип, используя атрибуты в группах и наборы данных ~ как:

CLASS: IMAGE
IMAGE_VERSION: 1.2
IMAGE_SUBCLASS: IMAGE_TRUECOLOR
...

Но насколько я могу судить, спецификация изображений отдельная. Может мне стоит просто повторно использовать "соглашения" NetCDF?

Обновление:

Я знаю, что NetCDF4 реализован поверх HDF5. В этом случае у нас есть данные моделирования турбулентности и экспериментов, а не геоданные. Эти данные обычно ограничиваются ‹= 4D. Мы уже используем HDF5 для хранения этих данных, но у нас нет разработанных стандартов. Псевдостандартные форматы сортировки только что были органично разработаны внутри организации.

netcdfhdf5

Ответы

Ответ 1 · рейтинг 3 · SpicyBaguette

Файлы NetCDF4 на самом деле хранятся в формате HDF5 (http://www.unidata.ucar.edu/publications/factsheets/current/factsheet_netcdf.pdf), однако они используют соглашения netCDF4 для атрибутов, размеров и т. д. Файлы имеют самоописание, что является большим плюсом. HDF5 без netCDF4 дает гораздо больше свободы в определении ваших данных. Есть ли конкретная причина, по которой вы хотели бы использовать HDF5 вместо netCDF4?

Я бы сказал, что если у вас нет каких-либо конкретных ограничений (например, программного обеспечения для моделирования или визуализации, которое обнаруживает ошибки в файлах netCDF4), вам лучше использовать netCDF. netCDF4 может использоваться операторами NCO / CDO, ncl (ncl также принимает HDF5), idl, модулем Python netCDF4, хорьком и т. д. Лично я считаю netCDF4 очень удобным для хранения климатических или метеорологических данных. Для него уже написано много операторов, и вам не нужно беспокоиться о разработке стандарта для ваших собственных данных - это уже сделано за вас. CMOR (http://cmip-pcmdi.llnl.gov/cmip5/output_req.html) можно использовать для записи климатических данных, соответствующих требованиям CF. Он использовался в самом последнем проекте сравнения климатических моделей.

С другой стороны, HDF5 может стоить того, если у вас есть другой тип данных и вы ищете очень специфические функции, для которых вам нужен более индивидуальный формат файла. Не могли бы вы немного подробнее указать свои потребности в комментариях?

Обновлять :

К сожалению, стандарты для имен переменных и полей для файлов HDF5 немного менее ясны и хорошо организованы, чем netCDF, поскольку этот формат был предпочтительным для крупных проектов моделирования климата, таких как CMIP или CORDEX. Проблема, по сути, сводится к использованию соглашений EOSDIS или CF, но найти поддерживаемые в настоящее время библиотеки, которые реализуют эти стандарты для файлов HDF5 и имеют четкую документацию, не совсем просто (если бы это было так, вы, вероятно, не задали бы вопрос).

Если вам действительно нужен стандарт, НАСА подробно объясняет все возможные стандарты метаданных здесь: http://gcmd.nasa.gov/add/standards/index.html.

Для информации: HDF-EOS и HDF5 - это не совсем один и тот же формат (HDF-EOS уже содержит картографические данные и стандартизирован для данных науки о Земле), поэтому я не знаю, будет ли этот формат слишком ограничительным для вас. Инструменты для работы с этим форматом описаны здесь: http://hdfeos.net/software/tool.php и кратко изложено здесь http://hdfeos.org/help/reference/HTIC_Brochure_Examples.pdf а>.

Если вы по-прежнему предпочитаете использовать HDF5, лучше всего, вероятно, будет загрузить файл в формате HDF5 из НАСА для получения аналогичных данных и использовать его в качестве основы для создания собственных инструментов на языке по вашему выбору. Вот список исчерпывающих примеров использования форматов HDF5, HDF4 и HDF-EOS со сценариями для обработки и визуализации данных в Python, MATLAB, IDL и NCL: http://hdfeos.net/zoo/index_openLAADS_Examples.php#MODIS

По сути, проблема в том, что НАСА предоставляет инструменты, позволяющие работать с их данными, но не обязательно, чтобы вы могли воссоздать аналогично структурированные данные в своей лаборатории.

Вот еще несколько спецификаций / информации о hdf5 для данных науки о Земле от НАСА: Продукт MERRA https://gmao.gsfc.nasa.gov/products/documents/MERRA_File_Specification.pdf Совместимая с GrADS информация HDF5 http://disc.sci.gsfc.nasa.gov/recipes/?q=recipes/How-to-Read-Data-in-HDF-5-Format-with-GrADS Инструменты обработки данных HDF в Центре данных по атмосферным наукам НАСА: https://eosweb.larc.nasa.gov/HBDOCS/hdf_data_manipulation.html

Надеюсь, это немного поможет.

Ответ 2 · рейтинг 2 · titusjan

Лучший выбор стандарта действительно зависит от того, какие данные вы хотите хранить. Условные обозначения CF наиболее полезны для данных измерений с географической привязкой, например данных, измеренных со спутника. Было бы полезно знать, из чего состоят ваши данные.

Предполагая, что у вас есть данные с географической привязкой, я думаю, у вас есть два варианта:

  1. Повторно используйте соглашения CF в HDF, как вы предложили. Этим занимаются и другие люди, быстрый поиск в Google дал мне это.
  2. HDF-EOS (отказ от ответственности, я никогда не использовал его). Он хранит данные в файлах HDF, используя определенную структуру, но, похоже, для использования требуется библиотека расширений. Я не нашел спецификации структуры, только API. Также, похоже, не существует активного сообщества за пределами НАСА.

Поэтому я, вероятно, выбрал бы вариант 1: использовать соглашения CF в ваших файлах HDF и посмотреть, не используется ли сторонний инструмент, такой как Panoply, может им воспользоваться.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы