Python用shp文件裁剪多个遥感影像的方法

本文介绍基于PythonArcPy 模块,基于矢量数据 范围,对大量栅格遥感影像 加以批量裁剪掩膜的方法。

首先,话不多说,本文所需要的代码如下所示。

python 复制代码
# -*- 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(如下图所示)中运行上述代码。

至此,大功告成。

相关推荐
MO2T11 分钟前
使用 Flask 构建基于 Dify 的企业资金投向与客户分类评估系统
后端·python·语言模型·flask
慢热型网友.14 分钟前
用 Docker 构建你的第一个 Python Flask 程序
python·docker·flask
Naiva15 分钟前
【小技巧】Python + PyCharm 小智AI配置MCP接入点使用说明(内测)( PyInstaller打包成 .exe 可执行文件)
开发语言·python·pycharm
云动雨颤19 分钟前
Python 自动化办公神器|一键转换所有文档为 PDF
运维·python
梅孔立31 分钟前
yum update 报错 Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64 等解决办法
linux·python·centos
前端付豪1 小时前
13、你还在 print 调试🧾?教你写出自己的日志系统
后端·python
这里有鱼汤1 小时前
hvPlot:用你熟悉的 Pandas,画出你没见过的炫图
后端·python
源码站~1 小时前
基于Flask+Vue的豆瓣音乐分析与推荐系统
vue.js·python·flask·毕业设计·毕设·校园·豆瓣音乐
MessiGo1 小时前
Python 爬虫实战 | 国家医保
python
chanalbert1 小时前
Spring 6 源码深度掘金:66+核心原理与高频面试攻坚指南
python·spring·面试