原
使用GDAL获取HDF等数据集中的图像
2013年01月07日 20:42:30
箜_Kong
阅读数 12392
更多
所属专栏:
GDAL交流
</div>
</div>
<div class="operating">
</div>
</div>
</div>
</div>
<article class="baidu_pl">
<div id="article_content" class="article_content clearfix" data-report-view="{"mod":"popu_307","dest":"https://blog.csdn.net/liminlu0314/article/details/8478339"}" data-report-click="{"mod":"popu_307","dest":"https://blog.csdn.net/liminlu0314/article/details/8478339"}" style="height: 2673px; overflow: hidden;">
<div class="article-copyright">
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liminlu0314/article/details/8478339 </div>
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-3019150162.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-3019150162.css">
<div class="htmledit_views" id="content_views">
<p><span style="font-size:14px;color:#000099;"><span> </span>使用GDAL读取HDF,NetCDF等数据集中的数据时,一般需要两个步骤,第一,获取数据集中的子数据集;第二,通过第一步获取的子数据集读取图像数据。一般的HDF图像中会有很多个子数据集,比如常用的MODIS数据,使用Envi打开会弹出下面的对话框来让用户选择需要打开的子数据集(如图1)。</span></p><p style="text-align:center;"><span style="font-size:14px;color:#000099;"><img src="https://img-my.csdn.net/uploads/201301/07/1357559934_8085.png" alt=""><br></span></p><p style="text-align:center;"><span style="font-size:14px;color:#000099;">图1 Envi打开Modis数据</span></p><p><span style="font-size:14px;color:#000099;"><span> </span>从图1中可以看出,Envi是把所有的子数据集的波段都进行了列举,不过这点和GDAL读取有点不一样。(这里有个比较疑惑的地方就是,使用GDALInfo获取的子数据一共有46个,而且很多图像大小都不一样,而这里Envi所有的波段图像大小都是1354×2030,希望知道的同学告知一下,难道那些小一点的406×271的都不要了?)。</span></p><p><span style="font-size:14px;color:#000099;"><span> </span>看完Envi的,我们使用GDALInfo工具查看这个数据的信息,输出的内容如下:</span></p><p><span style="font-size:14px;color:#000099;"></span></p><pre><code class="hljs vbnet"><ol class="hljs-ln hundred" style="width:12678px"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Driver: HDF4/Hierarchical Data Format Release <span class="hljs-number">4</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Files: F:\Data\HDF\MOD021KM.A2010287<span class="hljs-number">.0250</span><span class="hljs-number">.005</span><span class="hljs-number">.2010287121743</span>.hdf</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Size <span class="hljs-keyword">is</span> <span class="hljs-number">512</span>, <span class="hljs-number">512</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Coordinate System <span class="hljs-keyword">is</span> `<span class="hljs-comment">'</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Metadata:</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> % Dead Detector EV Data=<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> 此处省略NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN多字........................................</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SOUTHBOUNDINGCOORDINATE=<span class="hljs-number">27.4153536499348</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> VERSIONID=<span class="hljs-number">5</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> WESTBOUNDINGCOORDINATE=<span class="hljs-number">106.240739628195</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Subdatasets:</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_1_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_1KM_RefSB</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_1_DESC=[<span class="hljs-number">15</span>x2030x1354] EV_1KM_RefSB MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_2_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_1KM_RefSB_Uncert_Indexes</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_2_DESC=[<span class="hljs-number">15</span>x2030x1354] EV_1KM_RefSB_Uncert_Indexes MODIS_SWATH_Type_L1B (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_3_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_1KM_Emissive</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_3_DESC=[<span class="hljs-number">16</span>x2030x1354] EV_1KM_Emissive MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_4_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_1KM_Emissive_Uncert_Indexes</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_4_DESC=[<span class="hljs-number">16</span>x2030x1354] EV_1KM_Emissive_Uncert_Indexes MODIS_SWATH_Type_L1B (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_5_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_250_Aggr1km_RefSB</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_5_DESC=[<span class="hljs-number">2</span>x2030x1354] EV_250_Aggr1km_RefSB MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_6_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_250_Aggr1km_RefSB_Uncert_Indexes</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_6_DESC=[<span class="hljs-number">2</span>x2030x1354] EV_250_Aggr1km_RefSB_Uncert_Indexes MODIS_SWATH_Type_L1B (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_7_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_250_Aggr1km_RefSB_Samples_Used</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_7_DESC=[<span class="hljs-number">2</span>x2030x1354] EV_250_Aggr1km_RefSB_Samples_Used MODIS_SWATH_Type_L1B (<span class="hljs-number">8</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_8_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_500_Aggr1km_RefSB</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_8_DESC=[<span class="hljs-number">5</span>x2030x1354] EV_500_Aggr1km_RefSB MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_9_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_500_Aggr1km_RefSB_Uncert_Indexes</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_9_DESC=[<span class="hljs-number">5</span>x2030x1354] EV_500_Aggr1km_RefSB_Uncert_Indexes MODIS_SWATH_Type_L1B (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_10_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_500_Aggr1km_RefSB_Samples_Used</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_10_DESC=[<span class="hljs-number">5</span>x2030x1354] EV_500_Aggr1km_RefSB_Samples_Used MODIS_SWATH_Type_L1B (<span class="hljs-number">8</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="32"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_11_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:Height</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="33"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_11_DESC=[<span class="hljs-number">406</span>x271] Height MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="34"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_12_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:SensorZenith</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="35"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_12_DESC=[<span class="hljs-number">406</span>x271] SensorZenith MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="36"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_13_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:SensorAzimuth</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="37"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_13_DESC=[<span class="hljs-number">406</span>x271] SensorAzimuth MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="38"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_14_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:Range</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="39"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_14_DESC=[<span class="hljs-number">406</span>x271] Range MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="40"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_15_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:SolarZenith</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="41"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_15_DESC=[<span class="hljs-number">406</span>x271] SolarZenith MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="42"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_16_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:SolarAzimuth</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="43"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_16_DESC=[<span class="hljs-number">406</span>x271] SolarAzimuth MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="44"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_17_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:gflags</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="45"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_17_DESC=[<span class="hljs-number">406</span>x271] gflags MODIS_SWATH_Type_L1B (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="46"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_18_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_Band26</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="47"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_18_DESC=[<span class="hljs-number">2030</span>x1354] EV_Band26 MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="48"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_19_NAME=HDF4_EOS:EOS_SWATH:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:MODIS_SWATH_Type_L1B:EV_Band26_Uncert_Indexes</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="49"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_19_DESC=[<span class="hljs-number">2030</span>x1354] EV_Band26_Uncert_Indexes MODIS_SWATH_Type_L1B (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="50"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_20_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">0</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="51"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_20_DESC=[<span class="hljs-number">406</span>x271] Latitude (<span class="hljs-number">32</span>-bit floating-point)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="52"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_21_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">1</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="53"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_21_DESC=[<span class="hljs-number">406</span>x271] Longitude (<span class="hljs-number">32</span>-bit floating-point)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="54"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_22_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">2</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="55"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_22_DESC=[<span class="hljs-number">15</span>x2030x1354] EV_1KM_RefSB (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="56"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_23_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">3</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="57"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_23_DESC=[<span class="hljs-number">15</span>x2030x1354] EV_1KM_RefSB_Uncert_Indexes (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="58"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_24_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">4</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="59"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_24_DESC=[<span class="hljs-number">16</span>x2030x1354] EV_1KM_Emissive (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="60"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_25_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">5</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="61"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_25_DESC=[<span class="hljs-number">16</span>x2030x1354] EV_1KM_Emissive_Uncert_Indexes (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="62"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_26_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">6</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="63"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_26_DESC=[<span class="hljs-number">2</span>x2030x1354] EV_250_Aggr1km_RefSB (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="64"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_27_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">7</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="65"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_27_DESC=[<span class="hljs-number">2</span>x2030x1354] EV_250_Aggr1km_RefSB_Uncert_Indexes (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="66"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_28_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">8</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="67"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_28_DESC=[<span class="hljs-number">2</span>x2030x1354] EV_250_Aggr1km_RefSB_Samples_Used (<span class="hljs-number">8</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="68"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_29_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">9</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="69"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_29_DESC=[<span class="hljs-number">5</span>x2030x1354] EV_500_Aggr1km_RefSB (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="70"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_30_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">10</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="71"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_30_DESC=[<span class="hljs-number">5</span>x2030x1354] EV_500_Aggr1km_RefSB_Uncert_Indexes (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="72"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_31_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">11</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="73"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_31_DESC=[<span class="hljs-number">5</span>x2030x1354] EV_500_Aggr1km_RefSB_Samples_Used (<span class="hljs-number">8</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="74"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_32_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">12</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="75"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_32_DESC=[<span class="hljs-number">406</span>x271] Height (<span class="hljs-number">16</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="76"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_33_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">13</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="77"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_33_DESC=[<span class="hljs-number">406</span>x271] SensorZenith (<span class="hljs-number">16</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="78"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_34_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">14</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="79"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_34_DESC=[<span class="hljs-number">406</span>x271] SensorAzimuth (<span class="hljs-number">16</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="80"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_35_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">15</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="81"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_35_DESC=[<span class="hljs-number">406</span>x271] Range (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="82"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_36_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">16</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="83"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_36_DESC=[<span class="hljs-number">406</span>x271] SolarZenith (<span class="hljs-number">16</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="84"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_37_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">17</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="85"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_37_DESC=[<span class="hljs-number">406</span>x271] SolarAzimuth (<span class="hljs-number">16</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="86"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_38_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">18</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="87"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_38_DESC=[<span class="hljs-number">406</span>x271] gflags (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="88"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_39_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">19</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="89"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_39_DESC=[<span class="hljs-number">2030</span>x1354] EV_Band26 (<span class="hljs-number">16</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="90"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_40_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">20</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="91"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_40_DESC=[<span class="hljs-number">2030</span>x1354] EV_Band26_Uncert_Indexes (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="92"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_41_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">21</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="93"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_41_DESC=[<span class="hljs-number">16</span>x10] Noise <span class="hljs-keyword">in</span> Thermal Detectors (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="94"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_42_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">22</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="95"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_42_DESC=[<span class="hljs-number">16</span>x10] Change <span class="hljs-keyword">in</span> relative responses <span class="hljs-keyword">of</span> thermal detectors (<span class="hljs-number">8</span>-bit unsigned <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="96"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_43_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">23</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="97"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_43_DESC=[<span class="hljs-number">203</span>x16x10] DC Restore Change <span class="hljs-keyword">for</span> Thermal Bands (<span class="hljs-number">8</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="98"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_44_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">24</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="99"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_44_DESC=[<span class="hljs-number">203</span>x2x40] DC Restore Change <span class="hljs-keyword">for</span> Reflective <span class="hljs-number">250</span>m Bands (<span class="hljs-number">8</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="100"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_45_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">25</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="101"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_45_DESC=[<span class="hljs-number">203</span>x5x20] DC Restore Change <span class="hljs-keyword">for</span> Reflective <span class="hljs-number">500</span>m Bands (<span class="hljs-number">8</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="102"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_46_NAME=HDF4_SDS:UNKNOWN:<span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>:<span class="hljs-number">26</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="103"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_46_DESC=[<span class="hljs-number">203</span>x15x10] DC Restore Change <span class="hljs-keyword">for</span> Reflective <span class="hljs-number">1</span>km Bands (<span class="hljs-number">8</span>-bit <span class="hljs-built_in">integer</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="104"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Corner Coordinates:</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="105"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Upper Left ( <span class="hljs-number">0.0</span>, <span class="hljs-number">0.0</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="106"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Lower Left ( <span class="hljs-number">0.0</span>, <span class="hljs-number">512.0</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="107"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Upper Right ( <span class="hljs-number">512.0</span>, <span class="hljs-number">0.0</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="108"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Lower Right ( <span class="hljs-number">512.0</span>, <span class="hljs-number">512.0</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="109"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Center ( <span class="hljs-number">256.0</span>, <span class="hljs-number">256.0</span>)</div></div></li></ol></code><div class="hljs-button {2}" data-title="复制" onclick="hljs.copyCode(event)"></div></pre><span style="font-size:14px;color:#000099;"><span> </span>从上面的输出信息中可以看出,这个HDF数据其实有46个子数据,从上面的Subdatasets开始,一共有46个子数据集,同时GDAL列举了这些数据的描述信息,包括数据大小波段数以及数据类型。下面以第一个子数据集为例说明一下GDAL输出的这个信息的大致意思,第一个子数据集的描述如下:</span><p></p><p><span style="font-size:14px;color:#000099;"></span></p><pre><code class="hljs ruby"><ol class="hljs-ln" style="width:1178px"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_1_NAME=<span class="hljs-symbol">HDF4_EOS:</span><span class="hljs-symbol">EOS_SWATH:</span><span class="hljs-string">"F:\Data\HDF\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span><span class="hljs-symbol">:MODIS_SWATH_Type_L1B</span><span class="hljs-symbol">:EV_1KM_RefSB</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> SUBDATASET_1_DESC=[<span class="hljs-number">15</span>x2030x1354] EV_1KM_RefSB MODIS_SWATH_Type_L1B (<span class="hljs-number">16</span>-bit unsigned integer)</div></div></li></ol></code><div class="hljs-button {2}" data-title="复制" onclick="hljs.copyCode(event)"></div></pre><span> </span><span style="font-size:14px;color:#000099;">可以看出,一个子数据集由两行组成,第一行表示这个子数据集的“路径”,这里的路径可以认为是这个子数据集存储在HDF文件中的路径。后面使用GDAL读取数据就要使用这个路径。第二行表示的是对这个子数据的描述信息,比如这里的,15×2030×1354就表示这个子数据有15个波段,长和宽分别是2030和1354。周末的EV_1KM_RefSB MODIS_SWATH_Type_L1B表示的是这个数据的处理级别和类型等,接下来的括弧里面的16-bit unsigned integer表示这个子数据集是个16位的无符号整数。</span><p></p><p><span style="font-size:14px;color:#000099;"><span> </span>那么接下来如何使用gdal来获取子数据集里面的图像信息呢,我们还是以gdalinfo这个工具来说明。要获取hdf中每个子数据集的信息,首先要获取hdf中子数据集的路径才行,这个路径就需要上面的SUBDATASET_1_NAM来确定了。还是以第一个子数据集为例,使用的命令行如下,截图如图2所示:</span></p><p><span style="font-size:14px;color:#000099;"></span></p><pre><code class="hljs css"><span class="hljs-selector-tag">gdalinfo</span><span class="hljs-selector-class">.exe</span> <span class="hljs-selector-tag">HDF4_EOS</span><span class="hljs-selector-pseudo">:EOS_SWATH</span><span class="hljs-selector-pseudo">:"F</span>:\<span class="hljs-selector-tag">Data</span>\<span class="hljs-selector-tag">HDF</span>\<span class="hljs-selector-tag">MOD021KM</span><span class="hljs-selector-class">.A2010287</span><span class="hljs-selector-class">.0250</span><span class="hljs-selector-class">.005</span><span class="hljs-selector-class">.2010287121743</span><span class="hljs-selector-class">.hdf</span>"<span class="hljs-selector-pseudo">:MODIS_SWATH_Type_L1B</span><span class="hljs-selector-pseudo">:EV_1KM_RefSB</span></code><div class="hljs-button {2}" data-title="复制" onclick="hljs.copyCode(event)"></div></pre><span></span><div style="text-align:center;"><span> <img src="https://img-my.csdn.net/uploads/201301/07/1357560861_8408.png" alt=""></span></div><div style="text-align:center;"><span style="font-size:14px;color:#000099;">图2 使用gdalinfo查看子数据集的输出信息</span></div><span style="font-size:14px;color:#000099;"><span> </span>由于输出的信息太多,截图不能全部显示,就意思一下,这里就不在贴出来了。有了上面的试验,接下来我们就可以写程序来读取HDF数据了,首先是用gdal打开hdf数据,获取Subdatasets中的子数据集路径,然后再使用gdalopen来打开。至于这个Subdatasets其实就在gdal的元数据里面,可以使用函数,GDALDataset::GetMetadata()函数来获取。示例代码如下:</span><p></p><p><span style="font-size:14px;color:#000099;"></span></p><pre><code class="hljs cpp"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> GDALAllRegister();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">const</span> <span class="hljs-keyword">char</span>* pszSrcFile = <span class="hljs-string">"F:\\Data\\HDF\\MOD021KM.A2010287.0250.005.2010287121743.hdf"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> GDALDataset *pDataSet = (GDALDataset *) GDALOpen( pszSrcFile, GA_ReadOnly );</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">if</span> (pDataSet == <span class="hljs-literal">NULL</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"不能打开该文件,请检查文件是否存在!"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">return</span> RE_FILENOTEXIST;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">char</span> ** papszSUBDATASETS = GDALGetMetadata( (GDALDatasetH)pDataSet, <span class="hljs-string">"SUBDATASETS"</span>);</div></div></li></ol></code><div class="hljs-button {2}" data-title="复制" onclick="hljs.copyCode(event)"></div></pre><span style="font-size:14px;color:#000099;"><span> </span>这段代码最后一行的papszSUBDATASETS中就是存储的子数据的路径和描述信息。papszSUBDATASETS其实就是个字符串数组,接下来就是解析这个字符串数组,然后从里面获取HDF子数据集的路径和描述信息,这里需要注意的是,如果一个HDF文件获取的子数据集是NULL,也就是papszSUBDATASETS这个变量如果为NULL,说明这个hdf数据本身就是一个单一的数据,里面没有子数据集。接下来的代码就是解析这个子数据集的字符串数组:</span><p></p><p><span style="font-size:14px;color:#000099;"></span></p><pre><code class="hljs cpp"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-built_in">vector</span><<span class="hljs-built_in">string</span>> vSubDataSets, <span class="hljs-built_in">vector</span><<span class="hljs-built_in">string</span>> vSubDataDesc;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">if</span> ( papszSUBDATASETS == <span class="hljs-literal">NULL</span> )</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-built_in">string</span> papszMetadata = GDALGetDriverShortName((GDALDriverH)pDataSet);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> vSubDataSets.push_back(papszMetadata);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> vSubDataDesc.push_back(papszMetadata);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li></ol></code><div class="hljs-button {2}" data-title="复制" onclick="hljs.copyCode(event)"></div></pre><span style="font-size:14px;color:#000099;"><span> </span>上面的代码中是如果当前的HDF数据没有子数据集,那么其本身就是一个数据集。这里定义了两个vector<string>,分别用来存储子数据集的路径和描述信息。下面的代码就是解析含有子数据集的HDF数据了。这里需要一点点的std::string的函数,主要是用来截取字符串用的substr函数。</span><p></p><p><span style="font-size:14px;color:#000099;"></span></p><pre><code class="hljs cpp"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">else</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">int</span> iCount = CSLCount(papszSUBDATASETS);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">if</span>( iCount <= <span class="hljs-number">0</span> )</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">if</span>(pProcess != <span class="hljs-literal">NULL</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> pProcess->SetMessage(<span class="hljs-string">"该HDF文件中没有子数据!"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> GDALClose((GDALDriverH)pDataSet);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">return</span> RE_SUCCESS;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i=<span class="hljs-number">0</span>; papszSUBDATASETS[i] != <span class="hljs-literal">NULL</span>; i++ )</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">if</span>(i%<span class="hljs-number">2</span> != <span class="hljs-number">0</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">continue</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-built_in">string</span> tmpstr = <span class="hljs-built_in">string</span>(papszSUBDATASETS[i]);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> tmpstr = tmpstr.substr(tmpstr.find_first_of(<span class="hljs-string">"="</span>) + <span class="hljs-number">1</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">const</span> <span class="hljs-keyword">char</span> *tmpc_str = tmpstr.c_str();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-built_in">string</span> tmpdsc = <span class="hljs-built_in">string</span>(papszSUBDATASETS[i+<span class="hljs-number">1</span>]);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> tmpdsc = tmpdsc.substr(tmpdsc.find_first_of(<span class="hljs-string">"="</span>) + <span class="hljs-number">1</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> GDALDatasetH hTmpDt = GDALOpen(tmpc_str, GA_ReadOnly);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">if</span>(hTmpDt != <span class="hljs-literal">NULL</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> vSubDataSets.push_back(tmpstr);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> vSubDataDesc.push_back(tmpdsc);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> GDALClose(hTmpDt);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="32"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="33"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }<span class="hljs-comment">//end for</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="34"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="35"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="36"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> GDALClose((GDALDriverH)pDataSet);</div></div></li></ol></code><div class="hljs-button {2}" data-title="复制" onclick="hljs.copyCode(event)"></div></pre><span style="font-size:14px;color:#000099;"><span> </span>对上面的代码稍微解释一下:首先使用CSLCount函数获取这个字符串数组的个数,如果不大于0就说明没有,直接关闭HDF数据返回。如果大于0,遍历这个字符串数组,一般这个字符串数组个数肯定是个偶数,你也可以提前判断一下。如果数组的下标是奇数,直接跳过,也就是说,我们直接取下标是0、2、4的字符串。接下来取出的字符串中是有一个“=”连接起来的(具体可以看上面的例子)。这个等号的左边是描述数据集的顺序,右边是值也就是子数据集的路径。使用substr函数把路径取出来存储到前面定义的vector<string>中,同时获取描述信息也存进去(这个描述信息可以不用,如果需要用户交互的话还是留着的好),接下来使用GDALOpen打开测试一下这个子数据集的路径是否正确,如果可以打开就说明正常。</span><p></p><p><span style="font-size:14px;color:#000099;"><span> </span>通过上面的说明,对于HDF的数据(包括HDF4、HDF5、NetCDF等类型的数据)怎么使用GDAL打开就有个了解了吧。下面是我写的一个简单的Demo截图,核心功能就是用的上面这段代码。<br><span> </span>首先是打开HDF数据,如图3所示:</span></p><p></p><div style="text-align:center;"><span style="color:rgb(0,0,153);font-size:14px;"> <img src="https://img-my.csdn.net/uploads/201301/07/1357562437_2240.png" alt=""></span></div><div style="text-align:center;"><span style="color:rgb(0,0,153);font-size:14px;">图3 打开HDF数据</span></div><p></p><p><span style="font-size:14px;color:#000099;"><span> </span>点击打开之后会弹出一个对话框,如图4所示,会在列表中显示打开的HDF数据中所有的子数据集的描述信息,通过用户选择来指定所要打开的子数据集,这个对话框中的列表显示的内容就是上面代码中解析的描述信息。然后点击确定的时候通过选择的第几个来定位子数据集的路径,然后使用GDAL打开进行显示或者进行其他的处理即可。</span></p><p style="text-align:center;"><span style="font-size:14px;color:#000099;"><img src="https://img-my.csdn.net/uploads/201301/07/1357562645_5042.png" alt=""><br></span></p><p style="text-align:center;"><span style="font-size:14px;color:#000099;">图4 打开HDF数据后列举的子数据集描述</span></p> </div>
</div>
</article>