hdf5dump из H5T_STRING - PullRequest
       0

hdf5dump из H5T_STRING

1 голос
/ 01 ноября 2011

Я пытаюсь выяснить, как вывести текстовый блок из файла HDF5 (батиметрическая сетчатая сетка / BAG).Когда я делаю h5dump -d /BAG_root/metadata H11703_Office_5m.bag и все, что я пробовал, я всегда получаю данные с каждым символом цитируемого XML.Есть ли «простой» вариант, чтобы он выгружал содержимое необработанных данных в файл или на терминал?

DATASET "/BAG_root/metadata" {
   DATATYPE  H5T_STRING {
         STRSIZE 1;
         STRPAD H5T_STR_NULLTERM;
         CSET H5T_CSET_ASCII;
         CTYPE H5T_C_S1;
      }
   DATASPACE  SIMPLE { ( 5097 ) / ( H5S_UNLIMITED ) }
   DATA {
   (0): "<", "?", "x", "m", "l", " ", "v", "e", "r", "s", "i", "o", "n", "=",
   (14): """, "1", ".", "0", """, "?", ">", "
           ", "<", "s", "m",
   (25): "X", "M", "L", ":", "M", "D", "_", "M", "e", "t", "a", "d", "a",

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

Маркус Коул отправил мне по электронной почте это решение после того, как я поднял тему в списке рассылки OpenNavSurf:

h5dump -b FILE -o H12279_VB_4m_MLLW_1of1.xml -d BAG_root/metadata H12279_VB_4m_MLLW_1of1.bag

Это записывает чистый XML-файл.

2 голосов
/ 02 ноября 2011

Re: Python & BAG, GDAL 1.7.0+ поддерживает формат BAG ;например:

from osgeo import gdal
bag = gdal.OpenShared(r"C:\DATA\NGDC\H11555_2m_1.bag")
bagmetadata = bag.GetMetadata("xml:BAG")[0]
0 голосов
/ 02 ноября 2011

Данные хранятся в виде массива из 5097 строк символов (STRSIZE 1). Чтобы вывести текст, он должен быть сохранен в виде реальной строки (например, в скалярном пространстве данных).

Так что я думаю, что вы не можете сделать это только с h5dump, вам, вероятно, придется обрабатывать дамп с помощью sed или вашего любимого инструмента регулярных выражений.

...