PREGUNTA ORIGINAL
Soy relativamente nuevo en python y en estos fourms, pero estoy teniendo problemas para utilizar los bucles for para los análisis espaciales dentro de ArcGIS. ¡No parece reconocer la variable, RasterImage!
Esta es una parte del código con la que tengo problemas...
import arcpy, os, sys, string
from arcpy import env
from arcpy.sa import *
arcpy.CheckOutExtension("spatial")
arcpy.env.workspace = r'O:\DATA\test'
InputFolder = arcpy.env.workspace
Temp4 = InputFolder + '\\' + 'temp4'
RasterList = arcpy.ListRasters()
for RasterImage in RasterList:
print (RasterImage)
Temp4 = FocalStatistics('RasterImage', NbrRectangle (9, 9, 'CELL'), "RANGE", "DATA")
print ('Focal Statistics Done')
Recibo el siguiente error
"Traceback (most recent call last):
File "O:\test.py", line 67, in <module>
Temp4 = FocalStatistics('RasterImage', NbrRectangle (9, 9, 'CELL'), "RANGE", "DATA")
File "C:\Program Files (x86)\ArcGIS\Desktop10.0\arcpy\arcpy\sa\Functions.py", line 4796, in FocalStatistics
ignore_nodata)
File "C:\Program Files (x86)\ArcGIS\Desktop10.0\arcpy\arcpy\sa\Utils.py", line 47, in swapper
result = wrapper(*args, **kwargs)
File "C:\Program Files (x86)\ArcGIS\Desktop10.0\arcpy\arcpy\sa\Functions.py", line 4790, in wrapper
ignore_nodata)
File "C:\Program Files (x86)\ArcGIS\Desktop10.0\arcpy\arcpy\geoprocessing\_base.py", line 474, in <lambda>
return lambda *args: val(*gp_fixargs(args))
ExecuteError: Failed to execute. Parameters are not valid.
ERROR 000865: Input raster: RasterImage does not exist.
Failed to execute (FocalStatistics)."
Parece que no reconoce mi bucle for in del RasterImage - ¿alguna idea? La declaración de impresión después del bucle muestra que está reconociendo el archivo (en python) pero que los análisis espaciales utilizados en arcpy no.
Pensé que podría tener que ver con el espacio de trabajo utilizado, así que pensé que añadir
RasterImage = InputFolder + '\\' + RasterImage
puede ayudar a localizar la ruta completa de los conjuntos de datos rasterizados, pero no sirve de nada. Estoy perdido de ideas y los únicos archivos de ayuda que utilizan análisis espaciales en la página de recursos de ArcGIS no utilizan bucles en sus scripts. ¨
ACTUALIZACIÓN
El problema se ha resuelto aplicando lo siguiente:
La pregunta original que muestra el error 'RasterImage' no existe fue causada en parte por las marcas '' y los espacios alrededor del NbrRectangle. He implementado parte de mi nuevo código utilizando las sugerencias de nmpeterson por lo que el geoprocesamiento se llama a través de la función
def focalStats(raster):
Temp4 = FocalStatistics(raster, NbrRectangle(9, 9, 'CELL'), "RANGE", "DATA")
return Temp4
En las metodologías en las que varios archivos temporales dependen unos de otros (es decir, un geoproceso dentro de otro geoproceso) he utilizado la función .save en un directorio temporal como muestra om_henners antes de borrar todo ese contenido después.