Python中ArcPy将多张栅格图像分割为多个网格小块的方法

  本文介绍基于Python中的ArcPy模块,依据渔网的矢量数据文件或通过手动划分小方格的方法,批量将大量栅格图像分割为多个矩形小栅格的方法。

  首先明确一下我们的需求。现有同一区域内的多张栅格遥感影像,我们希望对于每一景栅格遥感影像而言,都将其分割为多个小矩形;其中,分割后的每一个小矩形就是一个新的小的栅格文件

  知道了需求,我们便可以开始具体的实践操作。其中,有2种实现这一需求的方法——首先第一种方法,我们可以创建一个渔网的矢量文件,并依据这一渔网矢量文件对每一景栅格加以分割,如下图所示;其中,关于渔网矢量文件的创建,大家可以参考网文章ArcGIS中ArcMap创建渔网Create Fishnet:生成指定大小的格网矢量文件(https://blog.csdn.net/zhebushibiaoshifu/article/details/129014745),关于接下来用渔网中的格网去裁剪栅格图像,大家可以参考文章Python中ArcPy基于矢量要素批量将栅格影像切割为多个小部分(https://blog.csdn.net/zhebushibiaoshifu/article/details/128481851)。

在这里插入图片描述

  本文主要介绍第二种方法——基于ArcPy模块中的SplitRaster_management()函数,手动划定每一个小矩形的范围与大小,并直接裁剪每一景栅格遥感影像(也就是不再基于矢量文件来裁剪了)。

  其中,本文所需要的代码如下。

# -*- coding: utf-8 -*-
"""
Created on Mon Feb 13 19:40:39 2023

@author: fkxxgis
"""

import arcpy

tif_file_path = r"E:\02_Project\01_Chlorophyll\Fishnet\OriginalTIFF"
result_file_path = r"E:\02_Project\01_Chlorophyll\Fishnet\Result"
arcpy.env.workspace = tif_file_path
arcpy.env.parallelProcessingFactor = 0

tif_file_list = arcpy.ListRasters("*", "tif")

for tif_file in tif_file_list:
    arcpy.SplitRaster_management(tif_file,
                                 result_file_path,
                                 tif_file.split(".tif")[0] + "_",
                                 "SIZE_OF_TILE",
                                 "TIFF",
                                 "BILINEAR",
                                 "#",
                                 "100 100",
                                 "#",
                                 "PIXELS",
                                 "#",
                                 "#",
                                 "#",
                                 "#",
                                 "#",
                                 "0")

  可以看到,上述代码与文章Python中ArcPy基于矢量要素批量将栅格影像切割为多个小部分(https://blog.csdn.net/zhebushibiaoshifu/article/details/128481851)中的代码整体思路是比较类似的;因此,关于代码整体含义的讲解,大家直接参考上述文章即可;我们这里主要对本文代码与上述文章中不一致的地方加以介绍。

  其中,我们前面也提到了,本文代码与上述文章代码不一致的地方在于,这里是在SplitRaster_management()函数中手动划定每一个小矩形的具体大小,而上述文章则是用一个已经得到的矢量要素文件去分割栅格。因此,我们需要对SplitRaster_management()函数的一些参数加以修改。其中,第四个参数"SIZE_OF_TILE"表示我们这里将通过指定每一个小矩形的长度与宽度,来决定大栅格遥感影像将如何分割;第八个参数"100 100"表示我们将每一个小矩形的长度与宽度都设置为100,并在随后的第十个参数中设置为"PIXELS",表示这里100的单位是像元个数

  此外,其他的参数就和前述文章比较一致了(当然也要记得将前述文章中关于矢量要素的几个参数设置为空白)。

  在 IDLE (Python GUI) 中运行代码。代码运行完毕后,我们即可在结果保存路径result_file_path中找到如下图所示的结果文件;其中,原本的每一景大的栅格遥感影像文件(以及其各自的辅助信息文件)都被分为了很多部分,每一个部分在其名称后通过一个数字后缀加以区别,每一个部分就是我们分割后得到的每一个小矩形栅格文件

在这里插入图片描述

  至此,大功告成。

欢迎关注:疯狂学习GIS

猜你喜欢

转载自blog.csdn.net/zhebushibiaoshifu/article/details/129018876