??本文介紹基于Python中ArcPy模塊,對大量柵格遙感影像檔案進行批量掩膜與批量重采樣的操作,
??首先,我們來明確一下本文的具體需求,現有一個存盤有大量.tif格式遙感影像的檔案夾;且其中除了.tif格式的遙感影像檔案外,還具有其它格式的檔案,

??我們希望,依據一個已知的面要素矢量圖層檔案,對上述檔案夾中的全部.tif格式遙感影像進行掩膜,并對掩膜后的遙感影像檔案再分別加以批量重采樣,使得其空間解析度為1000 m,
??明確了需求后,我們就可以開始具體的操作,首先,本文所需用到的代碼如下,
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 15 16:44:26 2022
@author: fkxxgis
"""
import arcpy
from arcpy.sa import *
tif_file_path="E:/LST/Data/NDVI/03_Mosaic/"
shp_file="E:/LST/Data/Region/YellowRiver_nineprovince.shp"
out_file_path="E:/LST/Data/NDVI/04_Mask/"
resample_file_path="E:/LST/Data/NDVI/05_Resample/"
arcpy.env.workspace=tif_file_path
arcpy.env.extent=shp_file
tif_file_name=arcpy.ListRasters("*","tif")
for tif_file in tif_file_name:
mask_result=ExtractByMask(tif_file,shp_file)
mask_result_path=out_file_path+"/"+tif_file.strip(".tif")+"_Mask.tif"
mask_result.save(mask_result_path)
arcpy.env.workspace=out_file_path
tif_file_name=arcpy.ListRasters("*","tif")
for tif_file in tif_file_name:
resample_file_name=tif_file.strip(".tif")+"_Re.tif"
arcpy.Resample_management(tif_file,resample_file_path+resample_file_name,
1000,"BILINEAR")
??其中,tif_file_path是原有掩膜前遙感影像的保存路徑,shp_file是已知面要素矢量圖層檔案的保存路徑,out_file_path是我們新生成的掩膜后遙感影像的保存路徑,resample_file_path則是最終重采樣后遙感影像的保存路徑,
??在這里,我們首先利用arcpy.ListRasters()函式,獲取路徑下原有的全部.tif格式的影像檔案,并存放于tif_file_name中;隨后,遍歷tif_file_path路徑下全部.tif格式影像檔案(即遍歷tif_file_name),并利用ExtractByMask()函式進行掩膜操作;其次,對于掩膜好的圖層,在其原有檔案名后添加"_Mask.tif"后綴,作為新檔案的檔案名,
??對全部影像檔案完成掩膜操作后,我們繼續進行重采樣操作,和前述代碼思路類似,我們依然還是先遍歷檔案,并在其原有檔案名后添加"_Re.tif"后綴,作為新檔案的檔案名;隨后,利用Resample_management()函式進行重采樣,其中,1000表示重采樣的空間解析度,在這里單位為米;"BILINEAR"表示用雙線性插值的方法完成重采樣,
??以上便是本次操作的全部代碼;我們這里選擇在 IDLE (Python GUI) 中運行代碼,運行完畢,得到的一個結果檔案如下圖;可以看到,遙感影像已經完成了掩膜,且空間解析度已經為1000 m,

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