2月** 動態激勵計畫 本文介紹了以下基礎:pythonarcpy
模組,基於乙個大資料夾並逐一檢查子資料夾在所有這些中遙感影像光柵檔案並且將是原始的每個場景遙感影像檔案四分位數剪下,或裁剪成其他指定小件數方法。
首先,讓我們澄清我們的需求。 有乙個現有的大資料夾,其中有多個子資料夾,如下圖所示。
其中的每乙個子資料夾,大量含有光柵遙感影像檔案(我們將在這裡進行。.tif
例如,光柵影象檔案的格式);例如,隨意開啟上述任何圖表子資料夾,如下圖所示。
我們希望實現的是,每乙個子資料夾每個場景的遙感影像,所有這些都被裁剪和剪下,以將原始遙感影象劃分為新的遙感影象份數,等同於是四分位數。在這裡,我們想拍攝原始影象可以把它分成幾個部分,即原始影象可以分為
n * m
部分。
了解了需求後,我們就可以開始編寫了。 本文使用的**實際上類似於我們之前文章中提到的Python批量切割遙感影象的思路,Arcpy根據向量圖層將柵格遙感影象劃分為多個塊,但在檔案讀取和裁剪引數設定方面有所不同。 如果需要,可以先檢視以上兩篇文章。 本文中使用的**如下。
# -*coding: utf-8 -*
3created on mon aug 28 22:39:52 2023
5@author: fkxxgis
8import os
9import arcpy
11tif_file_path = r"e:/02_project/202307_ndviproduce/beijing_preprocessing/original"
12result_file_path = r"e:/02_project/202307_ndviproduce/beijing_preprocessing/four_result"
13arcpy.env.parallelprocessingfactor = 0
15for root, dirs, files in os.walk(tif_file_path):
16 for dir_name in dirs:
17 dir_path = os.path.join(root, dir_name)
18 arcpy.env.workspace = dir_path
19 tif_file_list = arcpy.listrasters("*", "tif")
21 for tif_file in tif_file_list:
22 arcpy.splitraster_management(tif_file,23 result_file_path,24 tif_file.split(".tif")[0] +"_",25 "number_of_tiles",26 "tiff",27 "bilinear",28 "2 2",29 "##",31 "pixels",32 "#####
38 print(dir_path)
首先,我們需要設定輸入和輸出資料夾路徑; 其中,tif_file_path
指示原始遙感影像的儲存大資料夾路徑,而result_file_path
表示儲存拆分結果的資料夾的路徑。 隨後,您需要在此處進行設定arcpy
環境引數,通過arcpy.env.parallelprocessingfactor = 0
這句話禁用並行處理,以確保在處理過程中沒有問題 - 有關此設定的原理,請參閱文章 ArcGIS ArcMap 分割柵格工具沒有結果解決方案(即。
隨後,我們使用:os.walk
迴圈訪問所有源資料夾子資料夾;對於每個子資料夾設定arcpy
工作環境是這樣的子資料夾這樣我們就可以使用它arcpy.listrasters
得到這個子資料夾一起.tif
遙感影像檔案的格式。
接下來,對於每個遙感影象,使用arcpy.splitraster_management
功能來切片。 其中,第乙個引數tif_file
是遙感影像被分割的路徑,第二個引數result_file_path
是拆分後儲存結果的資料夾的路徑,第三個引數tif_file.split(".tif")[0] +"_"
是輸出檔案的字首,此處使用原始檔名將其刪除.tif
字尾,並在末尾新增下劃線; 接下來的引數用於設定拆分方法、輸出格式、插值方法等。 在這裡,我們選擇將遙感影像拆分為塊(如果需要將遙感影像拆分為其他量,可以在這裡修改),插值方式為
bilinear
,輸出格式為tiff
。最後乙個引數表示原始遙感影像
剪下後的小影象的價值nodata價值。
執行上面的**,我們可以看到每個遙感影象在結果資料夾中被劃分為多個部分這裡的每個文件後面都跟著乙個數字字尾(數字字尾是
開始數學運算,這就是本文的內容
跟
);,如下圖所示。
接下來,如果我們希望獲得這些小型遙感影像根據檔名的特點,複製和剪下到其他資料夾,可以參考文章python根據檔名的特點,將大量不同的檔案複製到多個指定的資料夾中,並結合遙感影象檔案名將每個檔案複製到對應的資料夾中: Python 中提到的 ** 是自動實現的。就是這樣。