??本文介紹基于Python中ArcPy模塊,實作大量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=https://www.cnblogs.com/fkxxgis/archive/2023/03/13/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=https://www.cnblogs.com/fkxxgis/archive/2023/03/13/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)是地表夜晚的溫度,如下圖所示,

??假如在后續處理中,我只需要白天、夜晚這兩個波段,也就是編號為0和4的這兩個波段,那么我就只需要在arcpy.ExtractSubDataset_management()函式的第三個引數中輸入"0;4"就好了;其他情況以此類推,
??以上便是本次操作的全部代碼,我們這里選擇在 IDLE (Python GUI) 中運行代碼,

??得到結果檔案如下圖;可以看到,所有影像都已經以.tif的格式保存了,

??至此,大功告成,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/546678.html
標籤:其他
