Python用shp檔案裁剪多個遙感影像的方法

疯狂学习GIS發表於2024-07-24

  本文介紹基於PythonArcPy模組,基於向量資料範圍,對大量柵格遙感影像加以批次裁剪掩膜的方法。

  首先,話不多說,本文所需要的程式碼如下所示。

# -*- 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(如下圖所示)中執行上述程式碼。

image

  至此,大功告成。

相關文章