Herramientas de lógica y ramificación If-then-else

La lógica If-Then-Else es un concepto potente para llevar a cabo acciones basadas en distintas condiciones. La lógica If-Then-Else puede explicarse del siguiente modo: si la condición es verdadera, se realiza una acción; en caso contrario, se realiza una acción distinta.

En ModelBuilder, se puede agregar la lógica If-Then-Else utilizando el conjunto de herramientas lógicas integradas o con funciones de Python o herramientas de script personalizadas.

Herramientas de lógica

Las herramientas lógicas son una categoría de utilidades de ModelBuilder que le ayudan a controlar el flujo de procesos de un modelo y permiten la lógica de bifurcación if-then-else.

UtilidadDescripción

Si los datos existen

Evalúa si los datos especificados existen.

Si el campo existe

Evalúa si los datos de entrada contienen los campos especificados.

Si la selección existe

Evalúa si los datos de entrada tienen una selección y si se ha seleccionado un determinado número de registros.

Si el sistema de coordenadas es

Evalúa si los datos de entrada contienen el sistema de coordenadas especificado.

Si el tipo de datos es

Evalúa si los datos de entrada coinciden con el tipo de datos especificado.

Si el tipo de entidad es

Evalúa si una clase de entidad es del tipo de entidad especificado.

Si el valor de campo es

Evalúa si los valores de un campo de atributo coinciden con un valor, expresión o segundo campo especificados.

Si el recuento de filas es

Evalúa si el recuento de filas de los datos de entrada coincide con un valor especificado.

Si la relación espacial es

Evalúa si las entradas tienen una relación espacial especificada.

Si el valor es

Evalúa un valor de entrada respecto a valor único, una lista de valores o un rango de valores mediante un operador de comparación definido.

Fusionar rama

La herramienta Fusionar rama fusiona dos o más ramas lógicas en una sola salida.

Detener

Detiene la iteración si todos los valores de entrada cumplen la condición especificada de true o false. Es una funcionalidad similar a la del iterador Mientras, pero resulta útil para detener un modelo si existe un Iterador Mientras en un modelo y no se puede agregar iteradores adicionales.

Más información sobre la utilización de herramientas lógicas en ModelBuilder

Python

Además de las herramientas lógicas integradas en ModelBuilder, puede escribir sus propias funciones y herramientas para realizar la ramificación If-Then-Else utilizando funciones de Python personalizadas con la herramienta Calcular valor. Estas funciones pueden probar condiciones utilizando una variedad de capacidades de arcpy y de Python y generar variables booleanas verdaderas y falsas. De forma similar, puede escribir un script de Python que pruebe las condiciones y genere variables booleanas verdaderas y falsas, convertir el script en una herramienta de script de geoprocesamiento y agregar la herramienta de script a su modelo.

Información sobre las condiciones

Antes de elegir entre las herramientas del sistema o escribir scripts personalizados, conviene comprender la lógica condicional basada en los tipos de datos vectoriales o ráster.

Ejecutar un modelo solo si existe un archivo

El siguiente ejemplo utiliza la herramienta Si los datos existen para comprobar la existencia de datos en un espacio de trabajo en particular y, si los datos existen de hecho, continuar ejecutando la siguiente herramienta Agregar campo en el modelo. Si no existe, copie la clase de entidad desde una ubicación de respaldo antes de agregar un campo.

Ejemplo de Si los datos existen

Ejecutar un modelo solo si una entrada tiene un sistema de coordenadas específico

El siguiente ejemplo utiliza la herramienta Si el sistema de coordenadas es para comprobar si el Sistema de Coordenadas de la clase de entidad de entrada es GCS_WGS_1984. Si la salida booleana es False, el modelo utilizará la herramienta Proyectar para proyectar la clase de entidad de entrada a GCS_WGS_1984.

Ejemplo de Si el sistema de coordenadas es

Ejecutar un modelo solo si una clase de entidad de entrada corresponde a un tipo de geometría específico

El siguiente ejemplo utiliza la herramienta Si el tipo de entidad es para comprobar si el tipo de entidad de la entrada es Punto. Si la salida booleana es True, ejecute la siguiente herramienta, Agregar ubicaciones. Si la salida booleana es False, convierta la entrada De entidad a punto antes de ejecutar la herramienta Agregar ubicación. La herramienta Fusionar rama fusiona las ramas True y False de forma que se pueda ejecutar la herramienta Solucionar en ambas ramas.

Ejemplo de Si el tipo de entidad es

Modificar valores de campo en función de una condición

El siguiente ejemplo utiliza la herramienta Si el valor de campo es para comprobar si la clase de entidad de entrada contiene algún registro con el valor del campo Type igual a A. Si la salida booleana es True, seleccione las entidades de tipo A con la herramienta Seleccionar capa por atributo y, a continuación, modifique los valores del campo Description con la herramienta Calcular campo.

Ejemplo de Si el valor de campo es

Ejecutar un modelo solo si una consulta SQL resulta en cualquiera de las entidades seleccionadas

El siguiente ejemplo utiliza la herramienta Si la selección existe para comprobar si la clase de entidad de entrada contiene cualquier entidad seleccionada. Si la salida booleana es True, utilice la herramienta Calcular campo para calcular los valores del campo Description. Si la salida booleana es False, utilice la herramienta Seleccionar capa por atributo para realizar la selección y modificar los valores de los campos.

Ejemplo de Si la selección existe

Ejecutar un modelo solo si una entrada corresponde a un tipo de datos específico

El siguiente ejemplo utiliza la herramienta Analizar ruta para obtener la extensión de archivo. La herramienta Si el valor es comprueba si la extensión coincide con el parámetro Valores. El modelo solo copia los datos ráster que tengan la extensión .tif.

Ejemplo de Si el valor es

Realizar una evaluación booleana de un ráster

Las herramientas Prueba, Evaluación condicional, Mayor que y Calculadora ráster se pueden utilizar para realizar una evaluación booleana de un ráster. En el siguiente ejemplo, si un valor de celda es mayor que 2000, cambie el valor a 1 (True); de lo contrario, cambie el valor a 0 (False).

Evaluación de True o False de ráster

Realizar una evaluación condicional de un ráster

Las herramientas Evaluación condicional o Calculadora ráster permiten evaluar condicionalmente un ráster. En el siguiente ejemplo, si un valor de celda es mayor que 2000, mantenga el valor de entrada; de lo contrario, cambie a NoData. Al dejar vacío el parámetro de la herramienta Evaluación condicional llamado Ráster falso o valor constante de entrada, el valor cambia a NoData. Opcionalmente, puede indicar otro ráster o un valor constante para el parámetro Ráster falso o valor constante de entrada.

Evaluación condicional si...de lo contrario con un ráster

Extraer celdas de un ráster con una consulta

Las herramientas Extraer por atributo, Crear capa ráster y Seleccionar capa por atributo se pueden usar para extraer celdas de un ráster. El siguiente ejemplo muestra métodos para crear un ráster o una capa ráster con los valores de celda mayores que 2000.

Extracción de ráster basada en consulta

Extraer celdas de un ráster con una consulta y cambiarlas a NoData

Las herramientas Establecer nulos, Reclasificar y Calculadora ráster se pueden usar para extraer celdas de un ráster y cambiarlas a NoData. SI el valor de la celda es mayor que 2000, cambie a NoData; de lo contrario, utilice el valor de los datos de entrada.

Cambiar los valores de celda de un ráster a NoData.

Extraer las celdas NoData de un ráster con una consulta y modificarlas

Es posible usar la herramienta Es nulo con la herramienta Evaluación condicional, o bien la herramienta Calculadora ráster para extraer las celdas NoData de un ráster y modificarlas. En el siguiente ejemplo, si un valor de celda es NoData, cambie a 0; de lo contrario, utilice el valor de los datos de entrada.

Modificar el valor de las celdas NoData ráster.

Ejecutar un modelo solo si una propiedad de ráster satisface una condición determinada

Por ejemplo, para comprobar si el valor medio de todas las celdas es mayor que 100, puede usar las herramientas Obtener propiedades de ráster y Si el valor es.

Continuar o detener la ejecución de una herramienta en un modelo en función de una condición

Es posible usar las herramientas Mientras y Detener para continuar o detener un modelo basándose en una condición.