Resumen
Devuelve un valor basado en una expresión especificada de Python.
Uso
La herramienta esta pensada para utilizarse solo en ModelBuilder y no en secuencias de comandos de Python.
El parámetro Tipo de datos se utiliza en ModelBuilder para ayudar a conectar la salida de la herramienta Calcular valor con otras herramientas. Por ejemplo, si utiliza la herramienta Calcular valor para calcular una distancia que se utilizará como entrada del parámetro Distancia de zona de influencia de la herramienta Zona de influencia, especifique una unidad lineal para el parámetro Tipo de datos.
Con la herramienta Calcular valor se pueden utilizar las variables creadas con ModelBuilder, pero no se pueden conectar las variables que se desean utilizar en el parámetro de expresión. Para utilizar estas variables dentro de la expresión, encierre los nombres de las variables entre signos de porcentaje (%). Por ejemplo, si desea dividir una variable denominada Input por 100, la expresión sería %Input%/100.
Nota: en la expresión anterior, si Input = 123, la expresión devolverá 1. Para obtener posiciones decimales, agregue decimales a los valores en la expresión. Por ejemplo: %Input%/100,00 devolverá 1,23. En la ilustración siguiente se muestra otro ejemplo del uso de variables en la expresión.
Las expresiones solo se pueden crear en Python; no se admiten otros lenguajes de secuencias de comandos.
La herramienta Calcular valor puede evaluar expresiones matemáticas simples. A continuación se muestran algunos ejemplos:
- 3+5
- 9*8
- 4+(9/3)
La herramienta Calcular valor permite el uso del módulo de matemática de Python para realizar operaciones matemáticas más complejas. Para acceder al módulo de matemática, se debe anteponer math a la función deseada. A continuación se muestran algunos ejemplos:
- math.sqrt(25)
- math.cos(0,5)
El módulo de matemática también admite constantes. Por ejemplo:
- math.pi
La función arcgis.rand() es compatible. La función arcgis.rand()se ha creado para las herramientas de ArcGIS y no debe confundirse con la función Rand() de Python. A continuación se presentan ejemplos de uso de arcgis.rand():
- Calcular un valor aleatorio derivado de una distribución uniforme de números enteros entre 0 y 10: arcgis.rand("Integer 0 10")
- Calcular un valor aleatorio derivado de una distribución normal con un valor medio de 10 y una desviación estándar de 3: arcgis.rand("Normal 10 3")
Por lo general, introducirá las expresiones en el parámetro Expresión. Las expresiones más complejas, como cálculos u operaciones lógicas de varias líneas (if, then), requieren el uso del parámetro Bloque de código. El parámetro Bloque de código no se puede utilizar por separado, solo junto con el parámetro Expresión.
Se puede hacer referencia a las variables definidas en el parámetro Bloque de código a partir de la expresión.
Las variables se pueden definir en el parámetro Bloque de código e invocar a partir de la expresión. En el ejemplo siguiente, la función devuelve una cadena de dirección del viento basada en un valor de entrada aleatorio. En Python, las funciones se definen con la palabra clave def seguida del nombre de la función y los parámetros de entrada de la función. En este caso, la función es getWind y tiene un parámetro, wind. Los valores se devuelven de una función con la palabra clave return.
Puede introducir la variable en el parámetro Expresión y utilizar la lógica if-else con las variables en línea que se encuentran en el bloque de código como se muestra a continuación. El bloque de código verifica la variable Input Cell Size para comprobar que no esté vacía y, a continuación, devuelve un valor basado en la condición.
Los métodos de Python se pueden utilizar directamente en el parámetro Expresión de la herramienta. Por ejemplo, si tiene un valor de entrada con un decimal (en este caso, el valor de campo de la tabla de entrada) y desea utilizar el valor en el nombre de salida de otra herramienta por medio de la sustitución de variables en línea, el decimal se puede reemplazar mediante el método replace de Python en la expresión de la herramienta Calcular valor.
Se pueden utilizar los módulos de Python y métodos como replace se pueden combinar o apilar en el parámetro de bloque de código. En el ejemplo siguiente, el módulo time se importa en el bloque de código, que devuelve la fecha y hora actuales, por ejemplo, Fri Mar 19 2010 09:42:39. Este valor devuelto se utiliza como nombre de la herramienta Crear carpeta para denominar la carpeta. Como el nombre de la carpeta no puede contener espacios ni marcas de puntuación, el método replace se utiliza en Python apilando el método de cada elemento que requiere un reemplazo. El nombre que se obtiene para esta carpeta en el presente ejemplo es FriMar192010094239.
Si calcula un valor en el modelo y desea utilizar el valor calculado con herramientas como Zona de influencia, que requieren un valor de distancia de zona de influencia y una unidad lineal, haga lo siguiente:
- Devuelva la unidad lineal del bloque de código, junto con el valor de distancia,
- Cambie el tipo de datos de los valores devueltos, tal como se muestra más adelante y, por último,
- Establezca el parámetro de tipo de datos como unidad lineal, para que el resultado de la expresión se convierta en un valor de unidad lineal.
Puede utilizar la salida de la herramienta Calcular valor directamente en cualquier herramienta de Spatial Analyst que acepte un ráster o un valor constante como Suma, Mayor que y Menor que (estas herramientas se encuentran en la caja de herramientas de Spatial Analyst /Conjunto de herramientas Matemática). Para usar la salida de Calcular valor, cambie el tipo de datos de salida a Ráster formulado. Este formato de tipo de datos de salida es una superficie de ráster cuyas celdas están representadas por una fórmula o una constante.
En Python, parte de la sintaxis es el uso correcto de la sangría. El grado de sangría (dos espacios o cuatro espacios) no es importante, siempre y cuando sea consistente en todo el bloque de código.
No se puede acceder a las variables de modelo desde el bloque de código. Estas variables se deben introducir en el bloque de código desde la expresión. Esto se puede realizar creando una definición en el parámetro Bloque de código y haciendo referencia a esta en el parámetro Expresión.
Las variables de modelo del tipo lista no deben utilizarse en el parámetro Expresión. Teniendo en cuenta cómo funcionan las variables de lista en ModelBuilder, Calcular valor Calcular valor se ejecutará una vez utilizando el primer valor de la variable de lista; otros valores de la variable de lista no se pasarán a Calcular valor.
Sintaxis
CalculateValue_mb (expression, {code_block}, {data_type})
Parámetro | Explicación | Tipo de datos |
expression | Expresión de Python que se evaluará. | SQL Expression |
code_block (Opcional) | Código de Python adicional. Se puede hacer referencia al código que se encuentra en el bloque de código en el parámetro Expresión. | String |
data_type (Opcional) | Tipo de datos de la salida devuelta a partir de la expresión de Python. Este parámetro se debe utilizar en ModelBuilder para ayudar a conectar la herramienta Calcular valor con otras herramientas. | String |
Entornos
Esta herramienta no utiliza ningún entorno de geoprocesamiento.
Información sobre licencias
- ArcGIS Desktop Basic: Sí
- ArcGIS Desktop Standard: Sí
- ArcGIS Desktop Advanced: Sí