Python ArcPy schneidet oder schneidet eine große Anzahl von Fernerkundungsbildern in mehreren Ordnern stapelweise in N×M-Teile

In diesem Artikel wird ein auf Python   basierendes Modul vorgestellt ,ArcPy das auf einem großen Ordner basiert, alle Fernerkundungsbild-Rasterdateien in jedem Unterordner durchläuft und jede ursprüngliche Fernerkundungsbilddatei in Viertel schneidet oder sie in eine andere angegebene Anzahl kleiner Stücke schneidet .

  Lassen Sie uns zunächst unsere Bedürfnisse klären. Es gibt einen großen Ordner mit mehreren Unterordnern , wie in der Abbildung unten dargestellt.

Darunter   enthält jeder Unterordner eine große Anzahl von Raster-Fernerkundungsbilddateien (wir .tifstellen hier das Format von Rasterbilddateien als Beispiel vor); wenn Sie beispielsweise einen Unterordner in der obigen Abbildung öffnen , werden Sie dies tun siehe Wie in der folgenden Abbildung gezeigt.

  Wir hoffen, dass jedes Fernerkundungsbild in jedem Unterordner zuschneiden und ausschneiden und das ursprüngliche Fernerkundungsbild in neue Teile aufteilen , was vier gleichen Teilen4 entspricht . Hier können Sie das Originalbild bei Bedarf in mehrere Teile aufteilen , d. h. Sie können das Originalszenenbild in Teile aufteilen.N * M

  Sobald wir die Anforderungen verstanden haben, können wir mit dem Schreiben von Code beginnen. Der in diesem Artikel verwendete Code ist tatsächlich derselbe wie in unserem vorherigen Artikel. ArcPy in Python schneidet Rasterbilder basierend auf Vektorelementen stapelweise in mehrere kleine Teile (https://blog.csdn.net/zhebushibiaoshifu/article/details/128481851). ArcPy in Python Die in der Methode zum Aufteilen mehrerer Rasterbilder in mehrere Rasterblöcke erwähnten Codeideen (https://blog.csdn.net/zhebushibiaoshifu/article/details/129018876) sind ähnlich, aber beim Lesen von Dateien gibt es Unterschiede in Zuschneideparametereinstellungen und andere Aspekte; wenn Sie es benötigen, können Sie zuerst die beiden oben genannten Artikel lesen.

  Der in diesem Artikel verwendete Code lautet wie folgt.

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 28 22:39:52 2023

@author: fkxxgis
"""

import os
import arcpy

tif_file_path = r"E:/02_Project/202307_NDVIProduce/Beijing_Preprocessing/Original"
result_file_path = r"E:/02_Project/202307_NDVIProduce/Beijing_Preprocessing/Four_Result"
arcpy.env.parallelProcessingFactor = 0

for root, dirs, files in os.walk(tif_file_path):
    for dir_name in dirs:
        dir_path = os.path.join(root, dir_name)
        arcpy.env.workspace = dir_path
        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] + "_",
                                         "NUMBER_OF_TILES",
                                         "TIFF",
                                         "BILINEAR",
                                         "2 2",
                                         "#",
                                         "#",
                                         "PIXELS",
                                         "#",
                                         "#",
                                         "#",
                                         "#",
                                         "#",
                                         "0")
        print(dir_path)

  Zuerst müssen wir die Eingabe- und Ausgabeordnerpfade festlegen; wobei , den großen Ordnerpfadtif_file_path darstellt , in dem die ursprünglichen Fernerkundungsbilder gespeichert werden, und den Ordnerpfad darstellt, in dem die geteilten Ergebnisse gespeichert werden. Anschließend müssen Sie hier die Umgebungsparameter festlegen . Deaktivieren Sie die Parallelverarbeitung über diesen Code, um sicherzustellen, dass bei der Verarbeitung keine Probleme auftreten. Das Prinzip dieser Einstellung finden Sie im Artikel ArcMap Split Raster Split Raster Tool in ArcGIS. Keine Ergebnisse . Die Lösung (https://fkxxgis.blog.csdn.net/article/details/128474804) reicht aus.result_file_pathArcPyarcpy.env.parallelProcessingFactor = 0

  Anschließend durchsuchen wir alle Unterordner im os.walkQuellordner und stellen für jeden Unterordner die , damit wir Fernerkundungsbilddateien verwenden könneneinUnterordnersArbeitsumgebung auf den Pfad desArcPyarcpy.ListRasters.tif

  Als nächstes verwenden Sie für jedes Fernerkundungsbild arcpy.SplitRaster_managementeine Funktion, um es zu segmentieren. Dabei ist der erste Parameter tif_fileder Pfad des zu teilenden Fernerkundungsbildes, der zweite Parameter result_file_pathder Ordnerpfad, in dem die Teilungsergebnisse gespeichert werden, und der dritte Parameter tif_file.split(".tif")[0] + "_"das Präfix der Ausgabedatei. Hier der ursprüngliche Dateiname wird verwendet .tif, um das Suffix zu entfernen und am Ende einen Unterstrich hinzuzufügen; die folgenden Parameter werden verwendet, um die Aufteilungsmethode, das Ausgabeformat, die Interpolationsmethode usw. festzulegen. Hier entscheiden wir uns dafür, das Fernerkundungsbild in 2 * 2Blöcke aufzuteilen (wenn Sie das Fernerkundungsbild in andere Mengen aufteilen müssen, können Sie es hier ändern), die Interpolationsmethode ist BILINEAR, und das Ausgabeformat ist TIFF. Der letzte Parameter 0gibt an, dass der Wert im ursprünglichen Fernerkundungsbild nach dem Schneiden als NoData-0 Wert des kleinen Bildes verwendet wird .

  Durch Ausführen des obigen Codes können wir im Ergebnisordner sehen, dass jedes Fernerkundungsbild in 4Teile unterteilt wurde und jede Datei hier ein numerisches Suffix hat (das numerische Suffix wird 0von Anfang an berechnet, dieser Artikel Darunter sind 0, 1, 2und 3); wie in der Abbildung unten gezeigt.

Wenn wir als Nächstes diese kleinen Fernerkundungsbilder entsprechend den Merkmalen der Dateinamen in andere Ordner   kopieren oder ausschneiden möchten , können wir auf den Artikel „Python zum Kopieren verschiedener Dateien in die entsprechenden Ordner basierend auf den Dateinamen von Fernerkundungsbildern“ verweisen (https://blog.csdn.net/zhebushibiaoshifu/article/details/129125339), Python durchläuft mehrere Unterordner und kopiert Dateien basierend auf Dateinamenmerkmalen in verschiedene Zielordner (https://blog.csdn.net/ Der erwähnte Code in zhebushibiaoshifu/article/details/132332068) wird automatisch implementiert.

  An diesem Punkt sind Sie fertig.

Willkommen bei: Crazy Learning GIS

Acho que você gosta

Origin blog.csdn.net/zhebushibiaoshifu/article/details/132550536
Recomendado
Clasificación