Python批量切割遙感影像為網(wǎng)格狀小區(qū)域的方法

??本文介紹基于Python中的ArcPy模塊,依據(jù)漁網(wǎng)的矢量數(shù)據(jù)文件或通過手動(dòng)劃分小方格的方法,批量將大量柵格圖像分割為多個(gè)矩形小柵格的方法。

??首先明確一下我們的需求?,F(xiàn)有同一區(qū)域內(nèi)的多張柵格遙感影像,我們希望對(duì)于每一景柵格遙感影像而言,都將其分割為多個(gè)小矩形;其中,分割后的每一個(gè)小矩形就是一個(gè)新的小的柵格文件

??知道了需求,我們便可以開始具體的實(shí)踐操作。其中,有2種實(shí)現(xiàn)這一需求的方法——首先第一種方法,我們可以創(chuàng)建一個(gè)漁網(wǎng)的矢量文件,并依據(jù)這一漁網(wǎng)矢量文件對(duì)每一景柵格加以分割,如下圖所示;其中,關(guān)于漁網(wǎng)矢量文件的創(chuàng)建,大家可以參考文章ArcMap創(chuàng)建指定大小的漁網(wǎng)http://www.itdecent.cn/p/33da2c527de5),關(guān)于接下來用漁網(wǎng)中的格網(wǎng)去裁剪柵格圖像,大家可以參考文章依據(jù)矢量圖層批量將柵格圖像切分為多個(gè):Python ArcPyhttp://www.itdecent.cn/p/03ec09a353d3)。

??本文主要介紹第二種方法——基于ArcPy模塊中的SplitRaster_management()函數(shù),手動(dòng)劃定每一個(gè)小矩形的范圍與大小,并直接裁剪每一景柵格遙感影像(也就是不再基于矢量文件來裁剪了)。

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

# -*- 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")

??可以看到,上述代碼與文章依據(jù)矢量圖層批量將柵格圖像切分為多個(gè):Python ArcPyhttp://www.itdecent.cn/p/03ec09a353d3)中的代碼整體思路是比較類似的;因此,關(guān)于代碼整體含義的講解,大家直接參考上述文章即可;我們這里主要對(duì)本文代碼與上述文章中不一致的地方加以介紹。

??其中,我們前面也提到了,本文代碼與上述文章代碼不一致的地方在于,這里是在SplitRaster_management()函數(shù)中手動(dòng)劃定每一個(gè)小矩形的具體大小,而上述文章則是用一個(gè)已經(jīng)得到的矢量要素文件去分割柵格。因此,我們需要對(duì)SplitRaster_management()函數(shù)的一些參數(shù)加以修改。其中,第四個(gè)參數(shù)"SIZE_OF_TILE"表示我們這里將通過指定每一個(gè)小矩形的長度與寬度,來決定大柵格遙感影像將如何分割;第八個(gè)參數(shù)"100 100"表示我們將每一個(gè)小矩形的長度與寬度都設(shè)置為100,并在隨后的第十個(gè)參數(shù)中設(shè)置為"PIXELS",表示這里100的單位是像元個(gè)數(shù)。

??此外,其他的參數(shù)就和前述文章比較一致了(當(dāng)然也要記得將前述文章中關(guān)于矢量要素的幾個(gè)參數(shù)設(shè)置為空白)。

??在 IDLE (Python GUI) 中運(yùn)行代碼。代碼運(yùn)行完畢后,我們即可在結(jié)果保存路徑result_file_path中找到如下圖所示的結(jié)果文件;其中,原本的每一景大的柵格遙感影像文件(以及其各自的輔助信息文件)都被分為了很多部分,每一個(gè)部分在其名稱后通過一個(gè)數(shù)字后綴加以區(qū)別,每一個(gè)部分就是我們分割后得到的每一個(gè)小矩形柵格文件。

??至此,大功告成。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容