HDF4—分层数据格式第4版(HDF4)
司机简称
HDF4型
司机简称
HDF4图像
生成依赖项
利比亚国防军
有两种HDF格式,HDF4(4.x和早期版本)和HDF5。这些格式完全不同,不兼容。此驱动程序用于HDF4文件格式导入。美国国家航空航天局的地球观测系统(EOS)保持着自己的HDF修改,称为HDF-EOS。这种修改适合于与遥感数据一起使用,并与底层HDF完全兼容。这个驱动程序可以导入HDF4-EOS文件。目前EOS使用HDF4-EOS进行数据存储(遥测形式“Terra”和“Aqua”卫星)。未来,他们将切换到HDF5-EOS格式,用于“光环”卫星的遥测。
驱动程序功能
Supports CreateCopy()
This driver supports the GDALDriver::CreateCopy()
operation
Supports Create()
This driver supports the GDALDriver::Create()
operation
Supports Georeferencing
This driver supports georeferencing
多图像处理(子数据集)
分层数据格式是多个不同数据集的容器。用于存储最常用的科学数据集(SDS)的数据。SDS是由数据填充的多维数组。一个HDF文件可能包含多个不同的SDS阵列。它们可能在大小、维数上不同,并且可能代表不同区域的数据。
如果文件仅包含一个看起来是图像的SDS,则可以正常访问该文件,但如果文件包含多个图像,则可能需要通过两步过程导入该文件。第一步是使用 gdalinfo ,然后使用gdal_translate导入所需的图像。这个 gdalinfo 实用程序列出输入HDF文件中的所有多维子数据集。单个图像(子数据集)的名称被分配给 SUBDATASET_n_NAME 元数据项。每个图像的描述在 SUBDATASET_n_DESC 元数据项。对于HDF4图像,子数据集名称的格式如下:
HDF4_SDS:subdataset_type:file_name:subdataset_index
在哪里? subdataset_type 显示一些已知HDF数据集的预定义名称, file_name 是输入文件的名称,并且 subdataset_index 是要使用的图像的索引(供GDAL内部使用)。
在第二步中,您应该为 gdalinfo 或 gdal_translate 用于实际读取数据。
例如,我们希望从MODIS 1B级数据集读取数据:
$ gdalinfo GSUB1.A2001124.0855.003.200219309451.hdf
Driver: HDF4/Hierarchical Data Format Release 4
Size is 512, 512
Coordinate System is `'
Metadata:
HDFEOSVersion=HDFEOS_V2.7
Number of Scans=204
Number of Day mode scans=204
Number of Night mode scans=0
Incomplete Scans=0
…跳过了很多元数据输出。。。
Subdatasets:
SUBDATASET_1_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:0
SUBDATASET_1_DESC=[408x271] Latitude (32-bit floating-point)
SUBDATASET_2_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:1
SUBDATASET_2_DESC=[408x271] Longitude (32-bit floating-point)
SUBDATASET_3_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:2
SUBDATASET_3_DESC=[12x2040x1354] EV_1KM_RefSB (16-bit unsigned integer)
SUBDATASET_4_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:3
SUBDATASET_4_DESC=[12x2040x1354] EV_1KM_RefSB_Uncert_Indexes (8-bit unsigned integer)
SUBDATASET_5_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:4
SUBDATASET_5_DESC=[408x271] Height (16-bit integer)
SUBDATASET_6_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:5
SUBDATASET_6_DESC=[408x271] SensorZenith (16-bit integer)
SUBDATASET_7_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:6
SUBDATASET_7_DESC=[408x271] SensorAzimuth (16-bit integer)
SUBDATASET_8_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:7
SUBDATASET_8_DESC=[408x271] Range (16-bit unsigned integer)
SUBDATASET_9_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:8
SUBDATASET_9_DESC=[408x271] SolarZenith (16-bit integer)
SUBDATASET_10_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:9
SUBDATASET_10_DESC=[408x271] SolarAzimuth (16-bit integer)
SUBDATASET_11_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:10
SUBDATASET_11_DESC=[408x271] gflags (8-bit unsigned integer)
SUBDATASET_12_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:12
SUBDATASET_12_DESC=[16x10] Noise in Thermal Detectors (8-bit unsigned integer)
SUBDATASET_13_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:13
SUBDATASET_13_DESC=[16x10] Change in relative responses of thermal detectors (8-bit unsigned integer)
SUBDATASET_14_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:14
SUBDATASET_14_DESC=[204x16x10] DC Restore Change for Thermal Bands (8-bit integer)
SUBDATASET_15_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:15
SUBDATASET_15_DESC=[204x2x40] DC Restore Change for Reflective 250m Bands (8-bit integer)
SUBDATASET_16_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:16
SUBDATASET_16_DESC=[204x5x20] DC Restore Change for Reflective 500m Bands (8-bit integer)
SUBDATASET_17_NAME=HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:17
SUBDATASET_17_DESC=[204x15x10] DC Restore Change for Reflective 1km Bands (8-bit integer)
Corner Coordinates:
Upper Left ( 0.0, 0.0)
Lower Left ( 0.0, 512.0)
Upper Right ( 512.0, 0.0)
Lower Right ( 512.0, 512.0)
Center ( 256.0, 256.0)
现在选择其中一个子数据集,如下所述 [12x2040x1354] EV_1KM_RefSB (16-bit unsigned integer)
:
$ gdalinfo HDF4_SDS:MODIS_L1B:GSUB1.A2001124.0855.003.200219309451.hdf:2
Driver: HDF4Image/HDF4 Internal Dataset
Size is 1354, 2040
Coordinate System is `'
Metadata:
long_name=Earth View 1KM Reflective Solar Bands Scaled Integers
…跳过元数据。。。
Corner Coordinates:
Upper Left ( 0.0, 0.0)
Lower Left ( 0.0, 2040.0)
Upper Right ( 1354.0, 0.0)
Lower Right ( 1354.0, 2040.0)
Center ( 677.0, 1020.0)
Band 1 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 2 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 3 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 4 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 5 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 6 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 7 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 8 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 9 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 10 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 11 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
Band 12 Block=1354x2040 Type=UInt16, ColorInterp=Undefined
或者你可以用 gdal_translate 用于从该数据集中读取图像带区。
请注意,您应该准确地在GDAL中提供标记行的内容 SUBDATASET_n_NAME,包括 HDF4_SDS: 前缀。
此驱动程序仅用于以栅格图像的形式导入遥感和地理空间数据集。如果您想浏览包含在HDF文件中的所有数据,您应该使用其他工具(您可以使用本页末尾的链接找到有关不同HDF工具的信息)。
地理参考
在HDF文件中存储地理参照没有通用的方法。然而,有些产品类型有保存地理参照的机制,其中一些是由GDAL支持的。当前支持的是( subdataset_type 显示在括号中):
GDAL创建的HDF4文件( GDAL_HDF4 )
阿斯特1A级( ASTER_L1A )
阿斯特1B级( ASTER_L1B )
阿斯特2级( ASTER_L2 )
阿斯特数字高程模型( AST14DEM公司 )
MODIS 1B级地球视图产品( MODIS_L1B )
MODIS三级产品( MODIS_L3 )
Seatifs 3级标准映射图像产品( SEAWIFS_L3 )
默认情况下,hdf4驱动程序仅从EOSu SWATH数据集每隔10行和10列读取gcp。您可以通过将GEOLu ASu GCPS环境变量设置为PARTIAL(默认)、NONE或FULL来更改此行为。
创建问题
此驱动程序支持创建HDF4科学数据集。可以创建一组二维数据集(每个输入标注栏一个)或单个三维数据集,其中第三维表示标注栏编号。输入数据集中的所有元数据和标注栏描述都存储为HDF4属性。投影信息(如果存在)和仿射变换系数也以属性的形式存储。由GDAL创建的文件具有特殊属性:
“签名=使用GDAL创建(http://www.remotesensing.org/GDAL/)”
并且在读取时自动识别,因此投影信息和转换矩阵恢复回来。
创建选项:
RANK=n :创建 n -维度SDS。目前只支持二维和三维数据集。默认情况下,将创建三维数据集。
元数据
所有HDF4属性都透明地转换为GDAL元数据。在HDF文件中,可以将属性分配给整个文件以及特定的子数据集。
打开选项
支持以下打开选项:
LIST_SDS=AUTO/YES/NO :(GDAL>=3.2)是否报告科学数据集(SDS)。默认情况下,当HDF文件包含EOSu SWATH或EOSu GRID时,SDS不会列为GDAL子数据集(因为这会导致它们被报告两次)。通过将LISTu SDS设置为YES,可以强制列出它们。
多维API支持
3.1 新版功能.
HDF4驱动程序支持 多维栅格数据模型 用于读取操作。
司机楼
这个驱动程序建立在NCSA HDF库之上,所以需要一个支持HDF4的GDAL来编译。您可以在操作系统发行版中搜索预编译的二进制文件,或者从NCSA HDF主页下载源代码或二进制文件(请参阅下面的链接)。
请注意,NCSA HDF库是用几个默认值编译的,这些默认值在 hlimits.h 文件。例如, hlimits.h 定义打开文件的最大数目:
# define MAX_FILE 32
如果需要同时打开更多的HDF4文件,则应更改此值并重建HDF4库(如果使用静态HDF库,则重新链接GDAL)。
也见
Implemented as
gdal/frmts/hdf4/hdf4dataset.cpp
andgdal/frmts/hdf4/hdf4imagedataset.cpp
.HDF4和HDF4-EOS格式的数据源:
此驱动程序支持的单个产品文档: