HDF5文件简介
分层数据格式版本 5 (HDF5) 是由美国国家超级计算应用中心 (NCSA) 开发的用于存储文件中科学数据的通用型机器无关标准。HDF5 广泛用于工程和科学领域,这些领域需要一种标准的数据存储方式,以便共享数据。
查看he5数据文件信息
h5disp - 查看 HDF5 文件的内容
h5info - 创建包含定义 HDF5 文件的所有元数据的结构体
h5read - 从 HDF5 文件中的变量读取数据
h5readatt - 从与 HDF5 文件中的变量或文件本身相关联的属性(全局属性)读取数据。
以OMI臭氧数据为例
确定 HDF5 文件的内容,HDF5 文件可以包含数据和元数据,称为属性。在 HDF5 文件中,层次结构中的目录称为组。组可以包含其他组、数据集、属性、链接和数据类型。数据集是数据的集合,例如多维数值数组或字符串。属性是与另一实体(例如数据集)相关联的任何数据。数据类型是对数据集或属性中数据的描述。数据类型说明如何解释数据集中的数据。
使用 h5disp 函数快速查看 HDF5 文件的内容。
h5disp
h5disp('C:\Users\Administrator\Desktop\OMI-Aura_L3-OMTO3e_2004m1001_v003-2012m0409t101417.he5')
输出
HDF5 OMI-Aura_L3-OMTO3e_2004m1001_v003-2012m0409t101417.he5
Group '/'
Group '/HDFEOS'
Group '/HDFEOS/ADDITIONAL'
Group '/HDFEOS/ADDITIONAL/FILE_ATTRIBUTES'
Attributes:
'OrbitNumber': 1117 1118 1119 1120 1121 1122 1123 1124 1125 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161
'OrbitPeriod': 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000 5933.000000 5932.000000
'InstrumentName': 'OMI'
'ProcessLevel': '3e'
'GranuleMonth': 10
'GranuleDay': 1
'GranuleYear': 2004
'GranuleDayOfYear': 275
'TAI93At0zOfGranule': 370742405.000000
'PGEVersion': '"1.0.5.1"'
'StartUTC': '2004-09-30T12:15:00.000000Z'
'EndUTC': '2004-10-02T11:45:00.000000Z'
'Period': 'Daily'
Group '/HDFEOS/GRIDS'
Group '/HDFEOS/GRIDS/OMI Column Amount O3'
Attributes:
'GCTPProjectionCode': 0
'Projection': 'Geographic'
'GridOrigin': 'Center'
'GridSpacing': '(0.25,0.25)'
'GridSpacingUnit': 'deg'
'GridSpan': '(-180,180,-90,90)'
'GridSpanUnit': 'deg'
'NumberOfLongitudesInGrid': 1440
'NumberOfLatitudesInGrid': 720
Group '/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields'
Dataset 'ColumnAmountO3'
Size: 1440x720
MaxSize: 1440x720
Datatype: H5T_IEEE_F32LE (single)
ChunkSize: 180x180
Filters: deflate(5)
FillValue: -1267650600228229401496703205376.000000
Attributes:
'_FillValue': -1267650600228229401496703205376.000000
'Units': 'DU'
'Title': 'Best Total Ozone Solution'
'UniqueFieldDefinition': 'TOMS-OMI-Shared'
'ScaleFactor': 1.000000
'Offset': 0.000000
'ValidRange': 50.000000 700.000000
'MissingValue': -1267650600228229401496703205376.000000
Dataset 'RadiativeCloudFraction'
Size: 1440x720
MaxSize: 1440x720
Datatype: H5T_IEEE_F32LE (single)
ChunkSize: 180x180
Filters: deflate(5)
FillValue: -1267650600228229401496703205376.000000
Attributes:
'_FillValue': -1267650600228229401496703205376.000000
'Units': 'NoUnits'
'Title': 'Radiative Cloud Fraction = fc*Ic331/Im331'
'UniqueFieldDefinition': 'TOMS-OMI-Shared'
'ScaleFactor': 1.000000
'Offset': 0.000000
'ValidRange': 0.000000 1.000000
'MissingValue': -1267650600228229401496703205376.000000
Dataset 'SolarZenithAngle'
Size: 1440x720
MaxSize: 1440x720
Datatype: H5T_IEEE_F32LE (single)
ChunkSize: 180x180
Filters: deflate(5)
FillValue: -1267650600228229401496703205376.000000
Attributes:
'_FillValue': -1267650600228229401496703205376.000000
'Units': 'deg'
'Title': 'Solar Zenith Angle'
'UniqueFieldDefinition': 'TOMS-Aura-Shared'
'ScaleFactor': 1.000000
'Offset': 0.000000
'ValidRange': 0.000000 180.000000
'MissingValue': -1267650600228229401496703205376.000000
Dataset 'ViewingZenithAngle'
Size: 1440x720
MaxSize: 1440x720
Datatype: H5T_IEEE_F32LE (single)
ChunkSize: 180x180
Filters: deflate(5)
FillValue: -1267650600228229401496703205376.000000
Attributes:
'_FillValue': -1267650600228229401496703205376.000000
'Units': 'deg'
'Title': 'Viewing Zenith Angle'
'UniqueFieldDefinition': 'TOMS-OMI-Shared'
'ScaleFactor': 1.000000
'Offset': 0.000000
'ValidRange': 0.000000 70.000000
'MissingValue': -1267650600228229401496703205376.000000
Group '/HDFEOS INFORMATION'
Attributes:
'HDFEOSVersion': 'HDFEOS_5.1.11'
Dataset 'StructMetadata.0'
Size: scalar
Datatype: H5T_STRING
String Length: 32000
Padding: H5T_STR_NULLTERM
Character Set: H5T_CSET_ASCII
Character Type: H5T_C_S1
ChunkSize: []
Filters: none
FillValue: ' '
要探查 HDF5 文件的层次结构组织方式,请使用 h5info 函数。h5info 返回包含有关 HDF5 文件的各种信息的结构体,包括文件名称。
h5info
info = h5info('C:\Users\Administrator\Desktop\OMI-Aura_L3-OMTO3e_2004m1001_v003-2012m0409t101417.he5')
info =
包含以下字段的 struct:
Filename: 'C:\Users\Administrator\Desktop\OMI-Aura_L3-OMTO3e_2004m1001_v003-2012m0409t101417.he5'
Name: '/'
Groups: [2×1 struct]
Datasets: []
Datatypes: []
Links: []
Attributes: []
可以看到该文件包含2个组,Datasets、Datatypes 、Attributes和 Links 字段都为空,表示根组不包含任何数据集、数据类型或链接。要进一步了解示例 HDF5 文件的内容,请检查 Groups 中的一个结构体。
g1 = info.Groups(1)
g2 = info.Groups(2)
g1 =
包含以下字段的 struct:
Name: '/HDFEOS'
Groups: [2×1 struct]
Datasets: []
Datatypes: []
Links: []
Attributes: []
g2 =
包含以下字段的 struct:
Name: '/HDFEOS INFORMATION'
Groups: []
Datasets: [1×1 struct]
Datatypes: []
Links: []
Attributes: [1×1 struct]
可以看到组HDFEOS下面还有两个组。
h5read
前面介绍了从he5文件中查看数据结构,接下来将会是 内容,就是和读取需要的数据。
从h5disp函数中可以详细的看到数据结构。
这里读取数据里的臭氧组’/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields’,这个组里包含 数据集有四个(通过h5disp可以查看):
Dataset ‘ColumnAmountO3’
Dataset ‘RadiativeCloudFraction’
Dataset ‘SolarZenithAngle’
Dataset ‘ViewingZenithAngle’
读取其中的臭氧数据
data = h5read('C:\Users\Administrator\Desktop\OMI-Aura_L3-OMTO3e_2004m1001_v003-2012m0409t101417.he5','/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields/ColumnAmountO3');
读取其他字段如上所示。
官方参考
https://ww2.mathworks.cn/help/matlab/import_export/importing-hierarchical-data-format-hdf5-files.html#bsxixpv-2
https://ww2.mathworks.cn/help/matlab/ref/h5read.html