7 votos

Utilice el elemento de la lista para construir nuevo camino

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X