美文网首页遥感处理与应用
Python批量切割遥感影像为网格状小区域的方法

Python批量切割遥感影像为网格状小区域的方法

作者: 疯狂学习GIS | 来源:发表于2023-04-25 14:03 被阅读0次

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

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

      知道了需求,我们便可以开始具体的实践操作。其中,有2种实现这一需求的方法——首先第一种方法,我们可以创建一个渔网的矢量文件,并依据这一渔网矢量文件对每一景栅格加以分割,如下图所示;其中,关于渔网矢量文件的创建,大家可以参考文章ArcMap创建指定大小的渔网https://www.jianshu.com/p/33da2c527de5),关于接下来用渔网中的格网去裁剪栅格图像,大家可以参考文章依据矢量图层批量将栅格图像切分为多个:Python ArcPyhttps://www.jianshu.com/p/03ec09a353d3)。

      本文主要介绍第二种方法——基于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 ArcPyhttps://www.jianshu.com/p/03ec09a353d3)中的代码整体思路是比较类似的;因此,关于代码整体含义的讲解,大家直接参考上述文章即可;我们这里主要对本文代码与上述文章中不一致的地方加以介绍。

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

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

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

      至此,大功告成。

    相关文章

      网友评论

        本文标题:Python批量切割遥感影像为网格状小区域的方法

        本文链接:https://www.haomeiwen.com/subject/duxmjdtx.html