Mehr

Multiplizieren Sie zwei Rasterlisten aus zwei Unterordnern

Multiplizieren Sie zwei Rasterlisten aus zwei Unterordnern


Ich habe zwei Unterordner, die Raster für jedes Land enthalten, aber unterschiedliche Variablen ausdrücken. Ich versuche, eine Möglichkeit zu finden, eine Multiplikation jedes Rasters in einen Ordner mit seinem Paar des anderen Unterordners zu schleifen. Sieht aus wie:.

AFG_13 AFG_25.tif_int für Afghanistan AGO_13 AGO_25.tif_int für Angola usw…

wobei die erste Spalte die Gesamtbevölkerung darstellt und die zweite wie eine Maske ist (tatsächlich brauche ich nur das Pixel mit den Werten 25 umgerechnet in den Pixelwert 1)

Mit anderen Worten, ich muss multiplizierenAFG_13*con(AFG_25.tif_int==25,1)in Python… Ich habe schon versucht, das Problem auf verschiedene Weise zu lösen, aber immer noch nichts… Ratschläge?


Für Folgendes ist eine Spatial Analyst-Lizenz erforderlich.

Das ArcPy Raster-Objekt bietet eine ziemlich intuitive Benutzeroberfläche für die Arbeit mit Rastern. Sobald ein Raster-Objekt erstellt wurde, können Sie mathematische Operationen damit auf sehr ähnliche Weise wie Operationen mit integrierten Python-Objekten ausführen. Eigenschaften und Methoden an Bord des Raster-Objekts sollten auch nützlich sein, um Ihre Raster in Bezug auf Ihre "AFG" usw. Namenskonvention.

Ich würde damit beginnen, eine Liste von Rastern in jedem meiner Unterordner zu erstellen, dann diese Listen durchzugehen und Rasterobjekte für alle Raster zu erstellen. Dann gilt nur für die Raster, die z. "AFG" im Namen, würde ich sie isolieren und meine mathematischen Operationen ausführen. Schließlich würde ich das Ergebnis-Raster in einer permanenten Datei auf der Festplatte speichern.

import arcpy from arcpy.sa import * import os country_code = 'AFG_' variable_code_one = '13' variable_code_two = '25' folder_one = 'C:/rasters/folder_one' folder_two = 'C:/rasters/folder_two' output_folder = 'C: /rasters/output' folders_list = [folder_one, folder_two] raster_objects_list = [] # Verfügbare Raster nach Ländercode filtern und Rasterobjekte für Ordner in folders_list erstellen: arcpy.env.workspace = Ordner für Raster in arcpy.ListRasters('*' + country_code, 'TIF'): raster.split('.')[0] = arcpy.Raster(raster) raster_objects_list.append(raster.split('.')[0]) # Führe die mathematischen Operationen an den Rasterobjekten aus (Dies ist wahrscheinlich nicht der beste Weg) # Dies setzt voraus, dass nur 1 "_13" variable raster und nur 1 "_25" variable raster im Set für raster in raster_objects_list verfügbar sind: if variable_code_one in raster.name: variable_one_raster = raster for raster in raster_objects_list: if variable_code_two in raster.name: variable_two_raster = raster output_raster = (variable_one_r aster * variable_two_raster) # oder eine andere mathematische Operation output_raster.save(output_folder + os.sep + country_code + '_results')

Viel Glück damit.


Schau das Video: Windows 10 Programska traka