本文介紹基於Python中ArcPy模組,基於向量資料範圍,對大量柵格遙感影像加以批次裁剪掩膜的方法。
首先,話不多說,本文所需要的程式碼如下所示。
# -*- coding: utf-8 -*-
"""
Created on Tue Dec 13 20:07:48 2022
@author: fkxxgis
"""
import arcpy
from arcpy.sa import *
tif_file_path = "E:/AllYear/Original/"
clip_file_path = "E:/AllYear/Clip/"
shp_file_name = "E:/AllYear/Clip.shp"
arcpy.env.workspace = tif_file_path
tif_file_name = arcpy.ListRasters("*", "tif")
for tif_file in tif_file_name:
key_name = tif_file.split(".tif")[0] + "_C.tif"
clip_file_name = clip_file_path + key_name
clip_file = ExtractByMask(tif_file, shp_file_name)
clip_file.save(clip_file_name)
其中,tif_file_path
表示待裁剪柵格檔案的儲存路徑,clip_file_path
表示裁剪後柵格檔案的儲存路徑,shp_file_name
表示裁剪時所需依據的空間範圍向量檔案。
程式碼整體思路也很簡單:首先,我們基於arcpy.ListRasters()
函式,獲取tif_file_path
路徑下原有的全部.tif
格式的影像檔案,並以列表的形式存放於tif_file_name
中;隨後,逐一取出tif_file_name
列表中的柵格檔案,進行裁剪處理。其中,因為是批次操作,所以需要對每一個輸出的裁剪後柵格檔案加以分別命名;我們就先透過字串擷取的方式,將原有柵格檔名稱的.tif
字尾前的全部內容保留,並在其後新增一個欄位_C
,表示是裁剪後的柵格檔案,並將其作為裁剪後柵格檔案各自的名稱。隨後,透過ExtractByMask()
函式,基於向量資料,對柵格檔案加以裁剪,並最終透過.save()
函式加以儲存。
透過上述程式碼,我們即可在clip_file_path
路徑中看到批次裁剪後的柵格遙感影像檔案。
這裡需要注意,由於我們用到了ArcPy模組,因此如果大家的Python版本是3.0
及以上,則需要在ArcMap軟體中的Python執行框,或其對應的IDLE(如下圖所示)中執行上述程式碼。
至此,大功告成。