Utilizar configuraciones del entorno en Python
Cada herramienta tiene un conjunto de parámetros que utiliza para ejecutar una operación. Algunos de estos parámetros son comunes entre todas las herramientas, tales como la tolerancia o la ubicación de salida. Estos parámetros pueden obtener sus valores predeterminados de un entorno de geoprocesamiento que todas las herramientas utilizan durante su funcionamiento. Cuando se ejecuta una herramienta, las configuraciones del entorno actuales también se pueden utilizar como valores de parámetros de entrada globales. Las configuraciones tales como un área de interés, la referencia espacial del dataset de salida y el tamaño de celda de un nuevo dataset ráster se pueden especificar con entornos de geoprocesamiento.
Una secuencia de comandos se puede ejecutar de varias maneras diferentes. Se puede ejecutar como una herramienta de secuencia de comandos en una aplicación ArcGIS, tal como ArcMap. También se puede ejecutar desde otra secuencia de comandos o de manera independiente, desde la ventana Python. Cuando una secuencia de comandos se ejecuta dentro de una herramienta desde una aplicación ArcGIS, o desde otra secuencia de comandos de geoprocesamiento, se le pasa la configuración del entorno utilizada por la aplicación o la secuencia de comandos que realiza la llamada. Esta configuración se convierte en la configuración predeterminada utilizada por la secuencia de comandos de la herramienta cuando se ejecuta. La secuencia de comandos llamada puede modificar la configuración que se le pasa, pero esos cambios solo se utilizan dentro de esa secuencia de comandos o de las herramientas a las que llame. Los cambios no se devuelven a la secuencia de comandos o a la aplicación que realiza la llamada. El modelo de entorno se puede describir como en cascada, donde los valores fluyen hacia abajo a cualquier proceso que utilice el entorno de geoprocesamiento.
Obtener y establecer configuraciones del entorno
Las configuraciones del entorno se exponen como propiedades en la clase env. Estas propiedades se pueden utilizar para recuperar los valores actuales o para establecerlos. Cada configuración de entorno tiene un nombre y una etiqueta. Las etiquetas se muestran en el cuadro de diálogo Configuración del Entorno de ArcGIS. Los nombres se utilizan en secuencias de comandos o en la línea de comandos en aplicaciones ArcGIS. A continuación se encuentran ejemplos de cómo utilizar los valores del entorno:
Se puede obtener acceso a los entornos como propiedades de lectura y escritura desde la clase de entorno, tales como arcpy.env.<environmentName>. Como alternativa, en lugar de prefijar cada nombre de entorno con arcpy.env, puede simplificar el código utilizando la instrucción from-import de Python. Esta alternativa tiene la ventaja de simplificar el código y hacerlo más fácil de leer.
import arcpy |
|
from arcpy import env |
|
Ejemplo 1: Establecer valores de entorno
import arcpy from arcpy import env # Set the workspace environment setting # env.workspace = "c:/St_Johns/data.gdb" # Set the XYTolerance environment setting # env.XYTolerance = 2.5 # Calculate the default spatial grid index, divide in half, then # set the spatial grid 1 environment setting # result = arcpy.CalculateDefaultGridIndex_management("roads") env.spatialGrid1 = float(result.getOutput(0)) / 2 # Clip the roads by the urban area feature class # arcpy.Clip_analysis("roads","urban_area","urban_roads")
Ejemplo 2: Obtener y establecer un valor de entorno
import arcpy from arcpy import env # Check the current raster cell size and make sure it is a certain size # for standard output # env.workspace = "c:/avalon/data" if env.cellSize < 10: env.cellSize = 10 elif env.cellSize > 20: env.cellSize = 20 arcpy.HillShade_3d("island_dem", "island_shade", 300)
Ortografía y uso de mayúsculas y minúsculas al establecer valores de entorno. Asignar un valor a arcpy.env.Workspace no es igual que establecer arcpy.env.workspace (observe: arcpy.env.workspace es la forma correcta). Si encuentra una situación donde haya establecido un entorno pero no está viendo el efecto en las herramientas subsiguientes, compruebe la ortografía y el uso de mayúsculas y minúsculas.
La función ListEnvironments se puede utilizar para comprobar el uso correcto de los nombres de entorno.
import arcpy print arcpy.ListEnvironments()
Utilizar las configuraciones del entorno para manejar datos temporales
scratchGDB y scratchFolder son entornos de solo lectura que proporcionan una ubicación de la carpeta y la geodatabase que se garantiza que existen. Lo que significa que puede usar con confianza una geodatabase o carpeta en cualquier momento, sin tener que crear o administrar una.
import arcpy inputFC = arcpy.GetParameterAsText(0) clipFC = arcpy.GetParameterAsText(1) outputFC = arcpy.GetParameterAsText(2) # Use scratchGDB environment to write intermediate data # tempData = arcpy.CreateScratchName(workspace=arcpy.env.scratchGDB) bufferResult = arcpy.Buffer_analysis(inputFC, tempData, "50 METERS") arcpy.Clip_analysis(clipFC, bufferResult, outputFC)
Cómo se establece el entorno de scratchFolder:
- Si no se establece el scratchWorkspace el scratchFolder tendrá un valor predeterminado en el directorio de archivos temporales de los usuarios actuales.
- Si scratchWorkspace hace referencia a una geodatabase, scratchFolder será la carpeta que contenga la geodatabase.
- Si el scratchWorkspace se establece para una carpeta, scratchFolder será la misma que scratchWorkspace
Cómo se establece el entorno de scratchFolder:
- Si no se establece el scratchWorkspace, scratchGDB tendrá un valor predeterminado para una gdb llamada scratch.gdb en el directorio de archivos temporales de los usuarios actuales.
- Si el scratchWorkspace hace referencia a una geodatabase, scratchGBD será la misma que ScratchWorkspace
- Si se establece el scratchWorkspace a una carpeta, scratchGDB se establecerá a una geodatabase llamada scratch.gdb en la carpeta scratchWorkspace.
Restablecer entornos
Debido a que los entornos de geoprocesamiento pueden afectar de manera significativa la operación y la salida de la herramienta, es importante poder realizar un seguimiento de la configuración del entorno y restablecer los entornos a sus estados predeterminados cuando sea necesario.
La función ResetEnvironments se puede utilizar para restaurar los valores de entorno predeterminados, o la función ClearEnvironment se puede utilizar para restablecer un entorno específico.
# Reset geoprocessing environment settings arcpy.ResetEnvironments() # Reset a specific environment setting arcpy.ClearEnvironment("workspace")