本文介绍基于PythonArcPy模块,实现基于栅格图像批量裁剪栅格图像,同时对齐各个栅格图像的空间范围统一其各自行数列数的方法。

  首先明确一下我们的需求。现有某一地区的多张栅格遥感影像,其虽然都大致对应着同样的地物范围,但不同栅格影像之间的空间范围行数列数、像元的位置等都不完全一致;例如,某一景栅格影像会比其他栅格影像多出一行,而另一景栅格影像可能又会比其他栅格影像少一列等等。我们希望可以以其中某一景栅格影像为标准,将全部的栅格影像的具体范围、行数、列数等加以统一。

  本文所用到的具体代码如下。

# -*- coding: utf-8 -*-
"""
Created on Thu Dec 29 21:13:19 2022@author: fkxxgis
"""import arcpytif_file_path = r"E:\02_Project\01_Chlorophyll\ClimateZone\Original"
result_file_path = r"E:\02_Project\01_Chlorophyll\ClimateZone\Original_Snap/"
snap_file_name = r"E:\02_Project\01_Chlorophyll\ClimateZone\Original\F_LC.tif"arcpy.env.workspace = tif_file_path
arcpy.env.snapRaster = snap_file_nametif_file_list = arcpy.ListRasters("*", "tif")for tif_file in tif_file_list:key_name = tif_file.split(".tif")[0] + "S.tif"arcpy.Clip_management(tif_file,"#",result_file_path + key_name,snap_file_name,"#","#","MAINTAIN_EXTENT")

  其中,tif_file_path是保存有我们原有栅格图像的路径,result_file_path是裁剪后各个结果图像的保存路径(记得在这一路径后加一个正斜杠/,否则之后输出结果的路径会有问题),snap_file_name是裁剪其他栅格图像时,所用的模板栅格图像——因为我们要统一各个栅格图像的行号与列号,所以很显然,这里这个模板图像就需要找各个栅格图像中,行数与列数均为最少的那一景图像。这里需要注意,如果大家的各个栅格图像中,行数与列数最少的栅格不是同一个栅格,那么可以分别用行数最少、列数最少的这两个栅格分别作为模板,执行两次上述代码。

  代码整体思路也很简单:首先,我们基于arcpy.ListRasters()函数,获取tif_file_path路径下原有的全部.tif格式的图像文件,并以列表的形式存放于tif_file_list中;随后,逐一取出tif_file_list列表中的栅格文件,进行裁剪处理。这里的裁剪我们是通过arcpy.Clip_management()函数来实现的,其各项参数的具体含义大家可以参考官方帮助文档,我们这里就只对本文中需要修改的参数加以介绍。

  其中,第一个参数就是当前循环所用的栅格图像文件,第三个参数是结果文件的保存路径与文件名,第四个参数则是模板文件;最后一个参数"MAINTAIN_EXTENT"是为了保证得到的裁剪后结果图像严格与模板图像的行数、列数相匹配。除此之外,几个"#"表示我们对其他参数暂时不配置。

  此外,在代码开头的这句arcpy.env.snapRaster = snap_file_name,表明我们将以所选用的模板文件为标准,使得输出的结果文件的像元大小、图像范围等与模板文件保持一致。这里需要注意,这一句代码与前述的"MAINTAIN_EXTENT"参数缺一不可——只有二者同时出现,才可以保证输出结果与模板文件是严格一致的。

  另一方面,由于我们用到了ArcPy模块,因此如果大家的Python版本是3.0及以上,则需要在ArcMap软件中的Python运行框,或其对应的IDLE(如下图所示)中运行上述代码。

  运行结果后,可以发现所有输出结果文件就具有完全一致的行数与列数了,且其各自的像元位置也是完全一致的。

  至此,大功告成。

欢迎关注:疯狂学习GIS

Python中ArcPy栅格裁剪栅格:批量对齐栅格图像范围并统一行数与列数相关推荐

  1. Python中ArcPy实现对大量长时间序列栅格遥感影像批量逐像元求取像素平均值

      本文介绍基于Python中ArcPy模块,对大量长时间序列栅格遥感影像文件的每一个像元进行多时序平均值的求取.   在遥感应用中,我们经常需要对某一景遥感影像中的全部像元的像素值进行平均值求取-- ...

  2. Python中ArcPy实现ArcGIS自动批量制图与地图要素批量设置

    1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有通过这篇博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/123 ...

  3. Python中ArcPy实现栅格图像文件由HDF格式批量转换为TIFF格式

      本文介绍基于Python中Arcpy模块,实现大量HDF格式的栅格图像文件批量转换为TIFF格式的方法.   首先,来看看我们想要实现的需求.   在一个名为HDF的文件夹下,有五个子文件夹:每一 ...

  4. Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容

    1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有一个记录北京市部分PM2.5浓度监测站点信息的Excel表格数据,格式为.xls:文件内包含站点编号.X与Y坐标.站点名称等四列数据 ...

  5. python中获取矩阵的行数和列数

    python中如何获取矩阵的行数和列数呢? 可以通过 a.shape[0] 和 a.shape[1] 来分别获取矩阵a的行数和列数,如下: import numpy as npa = np.array ...

  6. 【数据库】sqlite中的限制:数据库大小、表数、列数、行数、参数个数、连接数等

    目录 一.参考网址 二.详解 1.查看.设置sqlite限制命令.limit 2.SQLite中的限制汇总 1)字符串或BLOB的最大长度 2)最大列数 3)SQL语句的最大长度 4)联接中的最大表数 ...

  7. python使用matplotlib可视化、使用subplots函数将可视化的画布划分为网格状的若干子区、通过nrows和ncols参数设置设置行数和列数

    python使用matplotlib可视化.使用subplots函数将可视化的画布划分为网格状的若干子区.通过nrows和ncols参数设置设置行数和列数 目录

  8. 用VBA得到EXCEL表格中的行数和列数

    用VBA得到EXCEL表格中的行数和列数 每种方法中上面的是Excel的行数,下面的是Excel的列数. 方法1: ActiveSheet.UsedRange.Rows.Count ActiveShe ...

  9. python怎么选取第几行第几列_python DataFrame获取行数、列数、索引及第几行第几列的值方法...

    python DataFrame获取行数.列数.索引及第几行第几列的值方法 更新时间:2018年04月08日 16:22:00 作者:小白九九 下面小编就为大家分享一篇python DataFrame ...

最新文章

  1. ubuntu数据库安装配置
  2. linux下kvm设备配置,Linux下为KVM 配置桥接设备
  3. ArcGIS Server--揭开你的神秘面纱
  4. android 多屏幕 设计翻译,android Supporting multiple screen翻译一
  5. ubuntu18.10 cosmic更换阿里云的源
  6. 【Python CheckiO 题解】Days Between
  7. Java中的注解 Annotations
  8. 手把手系列—风控模型的调参方法和实际应用
  9. 处理模型——通过扩展模型处理器直接处理每个ModelMesh的顶点位置数据
  10. 斐讯k2修改dns服务器,斐讯K2固件修改的一些信息
  11. python 生成nc文件_如何python写nc文件
  12. 国产操作系统之统信UOS安装
  13. WPS国际版(安卓)
  14. 三维坐标系旋转——旋转矩阵到旋转角之间的换算
  15. W10系统电脑启动项文件夹路径
  16. 身份证上传识别测试点
  17. Canvas实例之鼠标移动特效(彩色小球)
  18. 软考成绩什么时候出?
  19. Linux之dos2unix和unix2dos
  20. mysql8找不到bir_beetlsql.adoc

热门文章

  1. Easy Ajax with jQuery[令狐葱翻译版Part1]
  2. CSDN编程竞赛第32期题解
  3. view.performclick()不执行
  4. 如何通过 SAP ABAP OData $expand 操作在同一个 HTTP 请求中返回多个节点的数据试读版
  5. 经典游戏软件工程案例分享--最终幻想14的毁灭与重生(一)
  6. 企业如何高效实施绩效管理系统
  7. 密码学之ASCII编码(02)
  8. 广告变现数据分析,提高媒体广告变现效果的关键指标!
  9. c语言高精度计算n的阶乘,高精度计算n阶乘的c语言源代码和解释
  10. 关于联想y485p装win10显卡驱动问题