本文介绍基于
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
(如下图所示)中运行上述代码。

image

至此,大功告成。

标签: none

添加新评论