Интерфейс к Точечному объекту HDF-EOS
[out1..., outN] = hdfpt (funcstr, input1..., inputN)
hdfpt
является шлюзом MATLAB® к функциям Точки в библиотеке HDF-EOS C, которая разрабатывается и сохраняется EOSDIS (Система передачи и обработки данных системы наблюдения Земли и Информационная система). Набор данных Точки включает ряд записей данных, взятых в (возможно) неправильных временных интервалах и в рассеянных географических точках. Каждая запись данных состоит из набора одного или нескольких значений данных, представляющих состояние момента времени и/или пробела.
[out1,...,outN] = hdfpt(funcstr,input1,...,inputN)
возвращает одни или несколько выходных параметров, соответствующих функции Точки в библиотеке HDF-EOS, заданной functstr
.
Существует взаимно-однозначное соответствие между функциями PT в библиотеке HDF-EOS C и допустимых значениях для funcstr
. Например, hdfpt('detach',point_id)
соответствует вызову библиотеки C PTdetach(point_id)
.
Модель программирования для доступа к набору данных точки через hdfpt
следующие:
Откройте файл и инициализируйте интерфейс PT путем получения идентификатора файла из имени файла.
Откройте или создайте набор данных точки путем получения ID точки из имени точки.
Выполните желаемые операции на наборе данных.
Закройте набор данных точки путем избавления от ID точки.
Оконечный доступ к точке к файлу путем избавления от идентификатора файла.
Чтобы получить доступ к единственному набору данных точки, который уже существует в файле HDF-EOS, используйте следующие команды MATLAB:
fileid = hdfpt('open',filename,access); pointid = hdfpt('attach',fileid,pointname); % Optional operations on the data set... status = hdfpt('detach',pointid); status = hdfpt('close',fileid);
Чтобы получить доступ к нескольким файлам в то же время, получите отдельный идентификатор файла для каждого файла, который будет открыт. Чтобы получить доступ больше чем к одному набору данных точки, получите отдельный ID точки для каждого набора данных.
Важно правильно избавиться от ID точки и идентификатора файла так, чтобы буферизированные операции были записаны полностью в диск. Если вы выходите из MATLAB или очищаетесь, все файлы MEX с идентификаторами PT все еще открываются, MATLAB выдает предупреждение и автоматически избавляется от них.
Обратите внимание на то, что идентификаторы файла, возвращенные hdfpt
, не являются взаимозаменяемыми идентификаторами файла, возвращенными никаким другим HDF-EOS или функцией HDF.
Доступ к стандартным программам инициализирует и отключает доступ к интерфейсу PT и указывает наборы данных (включая открытие и заключительные файлы).
Значение funcstr | Синтаксис функций | Описание |
---|---|---|
открытый | file_id = hdfpt('open',filename,access) | Учитывая имя файла и желаемый режим доступа, открывает или создает файл HDF в порядке создать, считать или записать точку. access может быть 'read' , 'readwrite' или 'create' . file_id -1, если операция перестала работать. |
'create' | point_id = hdfpt('create',file_id,pointname) | Создает набор данных точки с указанным именем. pointname является вектором символа или скаляром строки, содержащим имя набора данных точки. point_id -1, если операция перестала работать. |
'attach' | point_id = hdfpt('attach',file_id,pointname) | Присоединения к существующему набору данных точки в файле. point_id -1, если операция перестала работать. |
'detach' | status = hdfpt('detach',point_id) | Отсоединения от набора данных точки. |
близко | status = hdfpt('close',file_id) | Закрывает файл. |
Стандартные программы определения позволяют пользователю устанавливать ключевые возможности набора данных точки.
Значение funcstr | Синтаксис функций | Описание |
---|---|---|
'deflevel' | состояние = hdfpt ('deflevel', point_id, levelname... | Задает новый уровень в наборе данных точки. levelname является именем уровня, который будет задан. fieldList является массивом ячеек из символьных векторов или массивом строк, содержащим имена полей на новом уровне. fieldTypes является также массивом ячеек из символьных векторов или массивом строк, содержащим тип номера для каждого поля в fieldList . Типы верного номера включают 'uchar8' , 'uchar' , 'char8' , 'char' , 'double' , 'uint8' , 'uint16' , 'uint32' , 'float' , 'int8' , 'int16' и 'int32' . fieldOrders является вектором, содержащим порядок для каждого поля. |
'deflinkage' | status = hdfpt('deflinkage',point_id,parent,child,linkfield) | Задает linkfield между двумя смежными уровнями. parent является именем родительского уровня. child является именем дочернего уровня. linkfield является именем поля, которое задано на обоих уровнях. |
Основное чтение стандартных программ ввода-вывода и записывает данные и метаданные к набору данных точки.
Значение funcstr | Синтаксис функций | Описание |
---|---|---|
'writelevel' | status = hdfpt('writelevel',point_id,level,data) | Добавляет новые записи на заданный уровень в наборе данных точки. level является желаемым (основанным на нуле) индексом уровня. data должен быть P -by-1 массив ячеек, где P является количеством полей, заданных для заданного уровня. Каждая ячейка data должна содержать M(k) -by-N матрица данных, где M(k) является порядком k -th поле (количество скалярных значений в поле), и N является количеством записей. Класс MATLAB ячеек должен совпадать с типом данных HDF, заданным для соответствующих полей. Текстовые данные в MATLAB автоматически преобразованы, чтобы совпадать с любым из символьных типов HDF. Другие типы данных должны соответствовать точно. |
'readlevel' | [данные, состояние] = hdfpt ('readlevel', point_id... | Считывает данные из данного уровня в наборе данных точки. level является индексом (основанным на нуле) из желаемого уровня. fieldList является массивом ячеек из символьных векторов или массивом строк, задающим список полей, чтобы читать. records является вектором, содержащим индексы (основанные на нуле) из записей в чтение. data является P -by-1 массив ячеек, где P является количеством требуемых полей. Каждая ячейка data содержит M(k) -by-N матрица данных, где M(k) является порядком k -th поле, и N является количеством записей или length(records) . |
'updatelevel' | состояние = hdfpt ('updatelevel', point_id... | Обновления (исправляют) данные на конкретном уровне набора данных точки. level является индексом (основанным на нуле) из желаемого уровня. fieldList является массивом ячеек из символьных векторов или массивом строк, задающим список имен полей, чтобы обновить. records является вектором, содержащим индексы (основанные на нуле) из записей на обновление. data является P -by-1 массив ячеек, где P является количеством заданных полей. Каждая ячейка data должна содержать M(k) -by-N матрица данных, где M(k) является порядком k -th поле (количество скалярных значений в поле), и N является количеством записей или length(records) . Класс MATLAB ячеек должен совпадать с типом данных HDF, заданным для соответствующих полей. Текстовые данные в MATLAB автоматически преобразованы, чтобы совпадать с любым из символьных типов HDF. Другие типы данных должны соответствовать точно. |
'writeattr' | status = hdfpt('writeattr',point_id,attrname,data) | Записи или обновления атрибут набора данных точки с указанным именем. Если атрибут уже не существует, он создается. |
'readattr' | [data,status] = hdfpt('readattr',point_id,attrname) | Считывает данные атрибута из заданного атрибута. |
Стандартные программы запроса возвращают информацию о данных, содержавшихся в наборе данных точки.
Значение funcstr | Синтаксис функций | Описание |
---|---|---|
'nlevels' | nlevels = hdfpt('nlevels',point_id) | Возвращает количество уровней в наборе данных точки. nlevels -1, если операция перестала работать. |
'nrecs' | nrecs = hdfpt('nrecs',point_id,level) | Возвращает количество записей на заданном уровне. nrecs -1, если операция перестала работать. |
'nfields' | [numfields,strbufsize] = hdfpt('nfields',point_id,level) | Возвращает количество полей на заданном уровне. strbufsize является длиной массива, содержащего имена полей. numfields -1, и strbufsize является [] , если операция перестала работать. |
'levelinfo' | [numfields, cписок полей, тип поля, fieldOrder] =... | Возвращает информацию о полях для заданного уровня. fieldList является массивом ячеек из символьных векторов или массивом строк, содержащим имена полей. fieldType является массивом ячеек из символьных векторов, который задал тип данных для каждого поля. fieldOrder является вектором, содержащим порядок (количество скалярных значений) сопоставленный с каждым полем. Если операция перестала работать, numfields -1, и другие выходные параметры пусты. |
'levelindx' | level = hdfpt('levelindx',point_id,levelname) | Возвращает индекс уровня (основанный на нуле) из уровня с указанным именем. level -1, если операция перестала работать. |
'bcklinkinfo' | [linkfield,status] = hdfpt('bcklinkinfo',point_id,level) | Возвращает linkfield в предыдущий уровень. status -1, и linkfield является [] , если операция перестала работать. |
'fwdlinkinfo' | [linkfield,status] = hdfpt('fwdlinkinfo',point_id,level) | Возвращает linkfield в следующий уровень. status -1, и linkfield является [] , если операция перестала работать. |
'getlevelname' | [levelname,status] = hdfpt('getlevelname',point_id,level) | Возвращает имя уровня, учитывая индекс уровня. status -1, и levelname является [] , если операция перестала работать. |
'sizeof' | [byteSize,fieldLevels] = hdfpt('sizeof',point_id,fieldList) | Возвращает размер в байтах и полевых уровнях заданных полей. fieldList является массивом ячеек из символьных векторов или массивом строк, содержащим имена полей. byteSize является общим размером байтов заданных полей, и fieldLevels является вектором, содержащим индекс уровня, соответствующий каждому полю. byteSize -1, и fieldLevels является [] , если операция перестала работать. |
'attrinfo' | [numberType, количество, состояние] =... | Возвращает тип номера и размер в байтах заданного атрибута. attrname является именем атрибута. numberType является вектором символа, содержащим имя соответствующего типа данных HDF атрибута. count является количеством байтов, используемых данными атрибута. status -1, и numberType и count является [] , если операция перестала работать. |
'inqattrs' | [nattrs,attrnames] = hdfpt('inqattrs',point_id) | Получите информацию об атрибутах, заданных в наборе данных точки. nattrs и attrnames являются номером и именами всех заданных атрибутов, соответственно. Если операция перестала работать, nattrs -1, и attrnames является [] . |
'inqpoint' | [numpoints,pointnames] = hdfpt('inqpoint',filename) | Получите номер и имена наборов данных точки, заданных в файле HDF-EOS. pointnames является массивом ячеек из символьных векторов, содержащим имена точки. numpoints -1, и pointnames является [] , если операция перестала работать. |
Заполнитель.
Значение funcstr | Синтаксис функций | Описание |
---|---|---|
'getrecnums' | [outRecords, состояние] = hdfpt ('getrecnums'... | Возвращает номера записи в outLevel , соответствующем группа записей, заданных inRecords на уровне inLevel . Аргументы inLevel и outLevel являются основанными на нуле индексами уровня. inRecords является вектором основанных на нуле индексов записи. status -1, и outRecords является [] , если операция перестала работать. |
Стандартные программы подмножества позволяют читать данных из заданной географической области.
Значение funcstr | Синтаксис функций | Описание |
---|---|---|
'defboxregion' | region_id = hdfpt('defboxregion',point_id,cornerLon,cornerLat) | Задает область поля широты долготы для точки. cornerLon является двухэлементным вектором, содержащим долготы противоположных углов поля. cornerLat является двухэлементным вектором, содержащим широты противоположных углов поля. region_id -1, если операция перестала работать. |
'defvrtregion' | period_id = hdfpt ('defvrtregion', point_id, region_id... | Задает вертикальную область для точки. vert_field является именем поля к подмножеству. range является двухэлементным вектором, содержащим минимальные и максимальные вертикальные значения. period_id -1, если операция перестала работать. |
'regioninfo' | [крохотный, состояние] = hdfpt ('regioninfo', point_id... | Возвращает размер данных в байтах периода подмножества заданного уровня. fieldlist является массивом ячеек из символьных векторов или массивом строк, задающим список полей, чтобы извлечь. status и byteSize -1, если операция перестала работать. |
'regionrecs' | [numRec, recNumbers, состояние] = hdfpt ('regionrecs'... | Возвращает числа записей в области из подмножества заданного уровня. status и numrec -1, и recNumbers является [] , если операция перестала работать. |
'extractregion' | [данные, состояние] = hdfpt ('extractregion', point_id... | Считывает данные из заданной области подмножества. fieldList является массивом ячеек из символьных векторов или массивом строк, задающим список требуемых полей. data является P -by-1 массив ячеек, где P является количеством требуемых полей. Каждая ячейка data содержит M(k) -by-N матрица данных, где M(k) является порядком k -th поле, и N является количеством записей. status -1, и data является [] , если операция перестала работать. |
'deftimeperiod' | period_id = hdfpt('deftimeperiod',point_id,startTime,stopTime) | Задает период времени для набора данных точки. period_id -1, если операция перестала работать. |
'periodinfo' | [крохотный, состояние] = hdfpt ('periodinfo', point_id... | Получает размер в байтах периода из подмножества. fieldList является массивом ячеек из символьных векторов или массивом строк, задающим список имен полей. byteSize и status -1, если операция перестала работать. |
'periodrecs' | [numRec, recNumbers, состояние] = hdfpt ('periodrecs'... | Возвращает числа записей в периоде времени из подмножества заданного уровня. numRec и status -1, если операция перестала работать. |
'extractperiod' | [данные, состояние] = hdfpt ('extractperiod'... | Считывает данные из заданного периода времени из подмножества. fieldList является массивом ячеек из символьных векторов или массивом строк, задающим список требуемых полей. data является P -by-1 массив ячеек, где P является количеством требуемых полей. Каждая ячейка data содержит M(k) -by-N матрица данных, где M(k) является порядком k -th поле, и N является количеством записей. status -1, и data является [] , если операция перестала работать. |
Большинство стандартных программ возвращает флаг, status
, который является 0, когда стандартная программа успешно выполняется и-1, когда стандартная программа перестала работать. Стандартные программы с синтаксисами, которые не содержат status
, возвращают информацию об отказе в одних из ее выходных параметров, как записано нотами в синтаксисах функций.
levelName
является скаляром строки или вектором символа.
Некоторые библиотечные функции C принимают входные значения, которые заданы с точки зрения макросов C. Например, функция PTopen()
C требует входного параметра режима доступа, который может быть DFACC_READ, DFACC_RDWR или DFACC_CREATE, где эти символы заданы в соответствующем заголовочном файле C. Где макроопределения используются в библиотеке C, эквивалентные синтаксисы MATLAB используют текст, выведенный с макро-имен. Можно или использовать текст, содержащий целое макро-имя, или можно не использовать общий префикс. Можно использовать или верхний регистр или нижний регистр. Например, этот вызов функции C:
status = PTopen("PointFile.hdf",DFACC_CREATE)
status = hdfpt('open','PointFile.hdf','DFACC_CREATE') status = hdfpt('open','PointFile.hdf','dfacc_create') status = hdfpt('open','PointFile.hdf','CREATE') status = hdfpt('open','PointFile.hdf','create')
В случаях, где функция C возвращает значение с макроопределением, эквивалентная функция MATLAB возвращает значение как текст, содержащий строчную краткую форму макроса.
Типы номера HDF заданы как: 'uchar8'
, 'uchar'
, 'char8'
, 'char'
, 'double'
, 'uint8'
, 'uint16'
, 'uint32'
, 'float'
, 'int8'
, 'int16'
и 'int32'
.
В случаях, где библиотека HDF-EOS принимает NULL
, используйте пустую матрицу ([]
).