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

张春  金牌会员 | 2024-7-24 12:03:59 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 899|帖子 899|积分 2697

  本文介绍基于PythonArcPy模块,基于矢量数据范围,对大量栅格遥感影像加以批量裁剪掩膜的方法。
  首先,话不多说,本文所必要的代码如下所示。
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Dec 13 20:07:48 2022
  4. @author: fkxxgis
  5. """
  6. import arcpy
  7. from arcpy.sa import *
  8. tif_file_path = "E:/AllYear/Original/"
  9. clip_file_path = "E:/AllYear/Clip/"
  10. shp_file_name = "E:/AllYear/Clip.shp"
  11. arcpy.env.workspace = tif_file_path
  12. tif_file_name = arcpy.ListRasters("*", "tif")
  13. for tif_file in tif_file_name:
  14.     key_name = tif_file.split(".tif")[0] + "_C.tif"
  15.     clip_file_name = clip_file_path + key_name
  16.     clip_file = ExtractByMask(tif_file, shp_file_name)
  17.     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(如下图所示)中运行上述代码。

  至此,大功告成。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表