HDF4
HDF4(Hierarchical Data Format version 4)是一种用于存储和管理机器间数据的库和多功能文件格式。它是一种自描述的文件格式,用于存档和管理数据。
HDF4与HDF5是两种截然不同的技术,HDF5解决了HDF4的一些重要缺陷。因此,The HDF Group建议新应用程序使用HDF5,除非是为了处理现有的HDF4数据。
HDF4广泛应用于地球科学领域,特别是NASA维护的一系列地球观测卫星每天传输大量新的图像数据,这些数据大多以HDF4格式存储。因此,HDF4在地球科学中得到了广泛的使用。
HDF4转TIF
本次使用的数据是GLASS产品的全球植被覆盖度数据集FVC。下载网址:FVC数据集。
FVC的数据格式是HDF4
我首先尝试了gdal命令来转换HDF4文件,结果失败。
% gdal_translate -of GTiff GLASS10B02.V40.A2020001.2022323.hdf test.tif
Input file size is 7200, 3600
0ERROR 1: GDreadtile() failed for block.
ERROR 1: GLASS10B02.V40.A2020001.2022323.hdf, band 1: IReadBlock failed at X offset 0, Y offset 0: GDreadtile() failed for block.
然后准备用QGIS直接转换,将文件导入QGIS时发现是不支持的文件格式。
然后准备用python转换,发现需要使用pyhdf包,安装有点麻烦,解决老版本的HDF文件转换问题也有点麻烦。
看来,用gdal、qgis、python解决这个问题会有点麻烦。最后尝试用ENVI转换,完美的解决了这个问题。
我使用的ENVI版本是5.3。
打开ENVI软件,选择文件,选择打开为,选择通用格式,选择HDF4可以直接导入HDF4文件。
数据集选择,选择所有数据集,点击确定即可。(单个HDF文件可能包含多个数据集,此HDF文件只含有一个数据集)。
接着选择文件,选择另存为,点击另存为…。
数据选择直接点击确定。
文件输出格式选择TIFF,点击确定即可。
可以看到tif文件转换成功。
GLASS FVC产品说明
取值范围为0-250,比例系数为0.004,实际FVC取值需要乘以0.004,所以波段的每个值需要乘以0.004得到实际的FVC值。海洋的值为0,陆地中也有部分值为0,不好区分。如果想排除海洋部分,可能需要做一个陆地掩膜的tif,陆地部分为1,海洋部分为nodata,然后两个tif做光栅运算,这样就可以只关心陆地部分。