脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python中ArcPy栅格裁剪栅格(批量对齐栅格图像范围并统一行数与列数)

Python中ArcPy栅格裁剪栅格(批量对齐栅格图像范围并统一行数与列数)

2023-03-06 12:18疯狂学习GIS Python

本文介绍基于Python中ArcPy模块,实现基于栅格图像批量裁剪栅格图像,同时对齐各个栅格图像的空间范围,统一其各自行数与列数的方法,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# -*- coding: utf-8 -*-
"""
Created on Thu Dec 29 21:13:19 2022
 
@author: fkxxgis
"""
 
import arcpy
 
tif_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_name
 
tif_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(如下图所示)中运行上述代码。

Python中ArcPy栅格裁剪栅格(批量对齐栅格图像范围并统一行数与列数)

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

到此这篇关于Python中ArcPy栅格裁剪栅格(批量对齐栅格图像范围并统一行数与列数)的文章就介绍到这了,更多相关Python arcpy栅格内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/fkxxgis/p/17150814.html

延伸 · 阅读

精彩推荐
  • PythonPython 中enum的使用方法总结

    Python 中enum的使用方法总结

    这篇文章主要介绍了Python 中enum的使用方法总结,枚举在许多编程语言中常被表示为一种基础的数据结构使用,下文更多详细内容需要的小伙伴可以参考一...

    Moelimoe8422022-11-17
  • PythonPython3中函数参数传递方式实例详解

    Python3中函数参数传递方式实例详解

    这篇文章主要介绍了Python3中函数参数传递方式,结合实例形式较为详细的分析了Python3中函数参数传递的常见操作技巧,需要的朋友可以参考下...

    吕归尘的20183882021-06-23
  • Pythonpython链接Oracle数据库的方法

    python链接Oracle数据库的方法

    这篇文章主要介绍了python链接Oracle数据库的方法,实例分析了Python使用cx_Oracle模块操作Oracle数据库的相关技巧,需要的朋友可以参考下 ...

    秋风秋雨10982020-07-18
  • Pythonpython取数作为临时极大值(极小值)的方法

    python取数作为临时极大值(极小值)的方法

    今天小编就为大家分享一篇python取数作为临时极大值(极小值)的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    晓东邪9322021-04-08
  • PythonPython设计模式之MVC模式简单示例

    Python设计模式之MVC模式简单示例

    这篇文章主要介绍了Python设计模式之MVC模式,简单介绍了MVC模式的概念、原理,并结合实例形式给出了Python实现与使用MVC模式的相关操作技巧,需要的朋友可以...

    李自泰9022021-01-03
  • Python利用python程序帮大家清理windows垃圾

    利用python程序帮大家清理windows垃圾

    Python 是一种面向对象、解释型计算机程序设计语言,下面这篇文章主要给大家介绍了利用python程序如何实现清理垃圾的功能,本文只适用于windows,有需要的...

    栖迟於一丘5472020-09-17
  • Python详解Python数据分析--Pandas知识点

    详解Python数据分析--Pandas知识点

    这篇文章主要介绍了Python数据分析--Pandas知识点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    Star_Zhao8432021-06-09
  • Pythondjango中的HTML控件及参数传递方法

    django中的HTML控件及参数传递方法

    下面小编就为大家分享一篇django中的HTML控件及参数传递方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    benofdog10122021-01-23