很久前我曾发过一篇关于C# HDF4 文件读写配置 的专栏,本来想很快就续上 HDF5 结果拖到现在。
我想补充一些内容
① hdf5 的文件后缀是 H5,我忘了那个modis产品是这个格式了,就自己随便找了一张
② 用 hdf4 和 hdf5 的读写来做 modis 产品处理太浪费精力了,用 mrt 就行了
③ 文档最后附上一些关于 hdf 的工具,需要工具直接翻到最后
一、引入依赖
依赖下载位置时间太久忘了,我就把我本地的压缩包直接分享给大家
https://quqi.gblhgk.com/s/957459/9fp9kXoWmjU7nVsE
我引入的是 x86 版本的,然后 NuGet 可以找到为什么我偏用 dll 引入呢,呃,时间有点久了,我也记不清楚了,我记得好像是 NuGet 版本没办法运行而且和官方的用法差距很大,大家可以试试,我是真记不清了。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbwxCdh1mcvZ2LcV2Zh1Wa9M3clN2byBXLzN3btg3PBNWaWJDZ1dWbOBTSU1kZk5mT5VFVNFEZtJ2d1knTxk0VNpXTU1EbWRUTxEFRNtmSykVNRRkToZkMZJTVql1aWR1T5NGVOlXSXpFNR1mWqJFVOZXVHJmasdEZ5ZkMMpnWtlldwIjYqVTaZNnTIp1b1MUTwlTeMZTTINGMShUYvwlbj5yZtlmbkN3YuQnclZnbvN2Ztl2Lc9CX6MHc0RHaiojIsJye.jpg)
二、开始使用
官方文档的地址是 https://support.hdfgroup.org/HDF5/doc/H5.intro.html
我这个链接是对整个库的概况说明,同时也说明了几个模块之间的关系。
特别是第三节,说明了H5F、G、T、S、D、P、A、C、E、R、I 之间的关系
到这个链接 https://support.hdfgroup.org/HDF5/doc/RM/RM_H5Front.html 大家看右上角
一定要看做什么操作,然后去看对应的稳定,但是这个文档只有C\C++和 Fortran 版本,而且用法上和 C# 有出入。
如果大家看官方文档觉得没法入门,我推荐一个GitHub的项目,我就是看他入门的,虽然他写的东西也很乱 https://github.com/hypesystem/HDF5Reader
三、代码示例
① 获取 h5 文件的目录结构,我只截图结果的一部分
② 从 hdf 中读取内容,左边结果为代码输出,右边为 hdfviewer 显示
这里用到的 Dataset 这个类不是 C# data 的类,而是另外定义的,是从上面粉红色的GitHub链接的项目复制过来的,其中我修改了 Attribute 的 IntegerAttribute,修改如下
第一点,使其支持 两个比特 的整形
Bit.Bit2To4 方法内容如下
本来应该有第三步,数据写入的,但是我懒了,而且 hdf 官方给的工具已经满足我的用途的,就此结束吧,关于 hdf4 那一篇,我的标题是读写,取得不当,应该叫读取。
HDF4、5 工具
① h4h5converter 官方下载位置在这里,有 Windows、centos6、7 和 苹果版本
https://support.hdfgroup.org/ftp/HDF5/h4toh5/bin/
使用文档
https://support.hdfgroup.org/ftp/HDF5/releases/tools/h4toh5/h4toh5-2.2.3/src/unpacked/doc/h4toh5lib_RM.html#Tools-CommandLineUtilities
② hdf 工具箱 官方下载位置,用法大家自己百度吧(没看到苹果版本)
https://support.hdfgroup.org/ftp/HDF/HDF_Current/bin/
③ hdfviewer 官方下载位置为
2.x 下载位置 https://support.hdfgroup.org/products/java/release/download.html
3.x 下载位置(需要登陆) https://www.hdfgroup.org/downloads/hdfview/
鉴于大家可能下载比较慢,我提供了蓝奏云和曲奇网盘下载地址
https://lanzous.com/b00njjoab 密码: h63w 可以下载①②
https://quqi.gblhgk.com/s/957459/3bwRvbmpIIyUIs0o 可以下载③的 3.1.0 版本
其他内容如果我没提供的大家评论给我,我去看看。