Utilizar configuraciones de 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 de 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 una 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 de 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 de entorno

Las configuraciones de 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. Los siguientes son ejemplos de cómo utilizar valores de entorno:

NotaNota:

Se puede tener acceso a los entornos como propiedades de lectura y escritura de la clase de entorno, tales como arcpy.env.<nombreDeEntorno>. 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

import arcpy

arcpy.env.workspace = "c:/data"
import arcpy
from arcpy import env

env.workspace = "c:/data"

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)
PrecauciónPrecaución:

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 un caso 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()

Guardar y cargar configuraciones

La transferencia automática de configuraciones solo se realiza cuando una herramienta de geoprocesamiento ejecuta una secuencia de comandos. Cuando una secuencia de comandos de geoprocesamiento llama a otra secuencia de comandos de geoprocesamiento, los entornos no se pasan automáticamente a la secuencia de comandos llamada, dado que no hay ninguna manera de que la primera secuencia de comandos sepa que la segunda secuencia de comandos está utilizando ArcPy.

Para facilitar la transferencia de configuraciones de entorno de una secuencia de comandos a otra y guardar la configuración de una sesión en la próxima, se puede guardar las configuraciones en un archivo. A continuación, ArcPy puede establecer sus entornos cargando un archivo de configuración. En el primer ejemplo siguiente, una secuencia de comandos transfiere su configuración a una segunda secuencia de comandos guardándola en un archivo y pasando ese nombre de archivo como parámetro a una segunda secuencia de comandos. En el segundo ejemplo se carga un archivo de configuración de entorno utilizando un nombre que se pasa como un argumento de secuencia de comandos.

Ejemplo 1:

# Import ArcPy site-package
#
import arcpy
from arcpy import env
import os

# Set the raster environment settings and the workspace
#
env.cellSize = 25
env.mask = "D:/St_Johns/Landcover"
env.workspace = "D:/St_Johns"

# Save the environment settings
#
envfile = arcpy.SaveSettings("c:/St_Johns/settings")

# Call Python script and pass file name as argument
#
os.system('MyHillshade.py ' + envfile)

Ejemplo 2:

# Import ArcPy site-package
#
import arcpy

# Get the input parameter value
#
envfile = arcpy.GetParameterAsText(0)

# Load the environment settings
#
arcpy.LoadSettings(envfile)

# Calculate hillshade
#
arcpy.Hillshade_3d("city_dem","city_shade",250)

Los valores de entorno se pueden pasar entre módulos como argumentos. Guardar y cargar configuraciones entre módulos en ejecución no es una manera eficaz de compartir valores. El uso de un archivo de configuración es válido cuando lo utilizan módulos que no se ejecutan juntos, que es la intención del ejemplo anterior.

Temas relacionados


7/11/2012