Actualmente estoy tratando de construir dos listas contienen nombres de carpeta, con el fin de utilizar sus elementos para las herramientas de geoprocesamiento más tarde. Sin embargo yo lucho con la creación de las listas. Estoy usando ArcGIS 10.3 (Python 2.7).
Lo que necesito:
C:\test
contiene varias subcarpetas que me gustaría poner en la primera lista, es decir, C:\test\test1
, C:\test\test2
, etc. El primer conjunto de subcarpetas que contiene otro conjunto, es decir, C:\test\test1\xy1
, C:\test\test1\xy2
etc. Lo que necesito es una lista con los nombres, no los caminos, para cada uno de los primeros a nivel de subcarpetas como en firstlevelList = [test1, test2, test3]
y secondlevelList = [xy1, xy2, xy3]
. Luego quiero usar el arcpy.MosaicToNewRaster_management
función de procesar los datos en cada uno de los secondlevelList por separado (una especie de acuerdo a esta pregunta).
Lo que he intentado:
import arcpy, os
workspace = r"C:\test"
arcpy.env.workspace = workspace
arcpy.env.scratchworkspace = workspace
arcpy.env.overwriteOutput = True
firstlevelList = []
firstlevelList.append(os.listdir(workspace))
## up to here, everything works very well, the list contains all the available subfolders in my workspace.
secondlevelList = []
for element in firstlevelList:
newPath = """{0}\{1}""".format(workspace, element)
secondlevelList.append(os.listdir(newPath))
## This creates the following error:
##Runtime error
##Traceback (most recent call last):
## File "<string>", line 8, in <module>
##WindowsError: [Error 3] Das System kann den angegebenen Pfad nicht finden: "C:\\Users\\sutter\\Desktop\\GIS_temp\\test\\['test1', 'test2', 'test3']/*.*"
Entiendo que al parecer no puedo utilizar un elemento de la lista para crear un nuevo camino? También se trató siguiente, que trabajó para uno de los elementos de la fistlevelList (), pero no para todos ellos... :
secondlevelList = []
i = 0
for element in firstlevelList:
newPath = """{0}\{1}""".format(workspace, element[i])
secondlevelList.append(os.listdir(newPath))
i += 1
Estoy utilizando el os.listdir
función de la manera equivocada? Mi conocimiento acerca de la os.path
/ os.walk
funciones es bastante limitado, pero supongo que también podrían ayudar? Sería mejor usar el arcpy.ListFiles()
a la función?
El objetivo de la secuencia de comandos:
Por último, me gustaría crear un mosaico para todos los rásteres en el secondlevelList por separado. Ejemplo: carpeta C:\test\test1\xy1
contiene 3 rásteres. Ellos necesitan ser mosaiced. A continuación, la siguiente carpeta debe ser procesada C:\test\test1\xy2
etc. Escribí este código para hacer esto:
for tile in firstlevelList:
for run in secondlevelList:
zeitschrittRaster = arcpy.ListRasters("*", "TIF")
arcpy.MosaicToNewRaster_management(zeitschrittRaster, Sammelordner, """{0}.tif""".format(run), "", "32_BIT_FLOAT", 10, 1, "MAXIMUM", "FIRST")