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内部使用)。

在第二步中,您应该为 gdalinfogdal_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)。

也见

此驱动程序支持的单个产品文档: