ArcPy将.hdf格式栅格数据转为.tif格式

简介: 本文介绍基于Python中ArcPy模块,实现大量HDF格式栅格图像文件批量转换为TIFF格式的方法~

  本文介绍基于PythonArcPy模块,实现大量HDF格式栅格图像文件批量转换TIFF格式的方法。

  首先,来看看我们想要实现的需求。

  在一个名为HDF的文件夹下,有五个子文件夹;每一个子文件夹中,都存储了大量的.hdf格式的栅格遥感影像数据。

  我们在其中任选一个子文件夹,来看看其中所含的文件。

  我们要做的,就是将HDF文件夹下的全部子文件夹中全部.hdf格式图像文件,一次性转换为.tif格式的图像文件,并存储在另一个名为TIFF的文件夹中。

  知道了具体需求,就可以开始操作了。首先,这里用到的代码如下。

# -*- coding: utf-8 -*-
"""
Created on Fri Apr 15 11:13:27 2022

@author: fkxxgis
"""

import os
import arcpy

hdf_file_path="E:/LST/Data/MODIS/HDF/"
tif_file_path="E:/LST/Data/MODIS/TIFF/"

hdf_file_name_list=os.listdir(hdf_file_path)

for hdf_file in hdf_file_name_list:
    if os.path.isdir(hdf_file_path+hdf_file):
        file_name_temp=hdf_file
        hdf_file_name_list_new=os.listdir(hdf_file_path+hdf_file)
        for hdf_file in hdf_file_name_list_new:
            tif_file_name=hdf_file[8:23]+".tif"
            data=arcpy.ExtractSubDataset_management(hdf_file_path+file_name_temp+'/'+hdf_file,tif_file_path+tif_file_name,"0;4")
    else:
            tif_file_name=hdf_file[8:23]+".tif"
            data=arcpy.ExtractSubDataset_management(hdf_file_path+hdf_file,tif_file_path+tif_file_name,"0;4")

  其中,hdf_file_path.hdf格式文件的存储路径,tif_file_path.tif格式文件的存储路径,换句话说也就是我们的结果保存路径。

  首先,通过os.listdir()函数获取HDF文件夹下全部文件;由于我们的.hdf格式文件并不是直接保存在HDF这个大文件夹下的,而是HDF下属的多个子文件夹下,所以进一步通过os.path.isdir()函数进入这些子文件夹,并遍历其中的.hdf格式文件,保存在hdf_file_name_list_new中;随后,依据每一个.hdf格式文件的名称,依次配置之后我们生成的.tif格式文件的名称。

  接下来,我们就可以通过arcpy.ExtractSubDataset_management()函数来实现图像格式的转换了。其中,这一函数的第一个参数是原有.hdf文件的路径及名称,第二个参数是我们希望生成的.tif文件的路径及名称,第三个参数是我们希望在格式转换时,保存的具体波段。

  需要着重说明一下这里保存波段的选取。在本文中,我需要转换格式的是MODIS的地表温度产品MOD11A2,其第一个波段(编号为0)是地表白天的温度,第五个波段(编号为4)是地表夜晚的温度,如下图所示。

  假如在后续处理中,我只需要白天、夜晚这两个波段,也就是编号为04的这两个波段,那么我就只需要在arcpy.ExtractSubDataset_management()函数的第三个参数中输入"0;4"就好了;其他情况以此类推。

  以上便是本次操作的全部代码。我们这里选择在 IDLE (Python GUI) 中运行代码。

  得到结果文件如下图;可以看到,所有图像都已经以.tif的格式保存了。

  至此,大功告成。

相关文章
|
定位技术
【gis】gdal 切分遥感 tif 格式图片
【gis】gdal 切分遥感 tif 格式图片
510 0
【gis】gdal 切分遥感 tif 格式图片
|
测试技术
elf格式转换为hex格式文件的两种方法
这周工作终于不太忙了,可以写点笔记总结一下了。 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次我们再来介绍一下如何将elf文件转换为hex文件。
1864 0
|
3月前
|
JSON 定位技术 数据格式
DEM转换为gltf
DEM转换为gltf
19 0
mapshaper命令:geojson转shp中文乱码的解决方案
mapshaper命令:geojson转shp中文乱码的解决方案
315 0
|
索引
ENVI_IDL:如何读取HDF4数据?
ENVI_IDL:如何读取HDF4数据?
193 0
ENVI_IDL:如何读取HDF4文件和HDF5文件的数据集和属性?
参考Documentation Center (l3harrisgeospatial.com) 由于时间和精力,这里并没有对其中的函数进行详细的说明,只是介绍了函数作用以及用法。
216 0
|
索引
ENVI_IDL:批量拼接Modis Swath的逐日数据并输出为Geotiff格式
ENVI_IDL:批量拼接Modis Swath的逐日数据并输出为Geotiff格式
137 0
|
6月前
|
存储 定位技术 Python
Python中ArcPy实现栅格图像文件由HDF格式批量转换为TIFF格式
Python中ArcPy实现栅格图像文件由HDF格式批量转换为TIFF格式
|
存储 API 数据格式
读取HDF或者NetCDF格式的栅格数据
HDF是对HDF数据模型,数据格式以及HDF库API等一系列技术的总称. HDF的最新版本是HDF5. HDF数据模型基于组(groups)和数据集(datasets)概念:如果把HDF数据比作磁盘,那么组相当于文件夹,数据集相当于文件。组和数据集都有用户自定义的属性(attributes). MODIS影像,以及我国的风云卫星数据都适用HDF格式进行存储.
105 0
|
存储
ENVI_IDL:批量获取影像文件各个波段的中值并输出为csv文件
ENVI_IDL:批量获取影像文件各个波段的中值并输出为csv文件
323 0