Un recorrido rápido por el uso de iteradores para iteración (bucles)
La iteración, a menudo denominada bucle, consiste en repetir un proceso una y otra vez con cierto grado de automatización. La iteración es muy importante porque al automatizar tareas repetitivas se reduce el tiempo y el esfuerzo requerido para llevarlas a cabo. Con la iteración en ModelBuilder, se puede ejecutar un proceso una y otra vez con diferentes ajustes o datos en cada iteración. ModelBuilder también proporciona flexibilidad en la iteración, ya que se puede ejecutar repetidamente un modelo completo o simplemente una sola herramienta o proceso.
Iterador |
Descripción |
---|---|
Repite un valor inicial y final mediante un valor determinado. Funciona exactamente igual que For en cualquier lenguaje de secuencia de comandos/programación, ejecutado a través de un número determinado de elementos. | |
Funciona exactamente igual que WHILE en cualquier lenguaje de secuencia de comandos/programación, ejecutando si una condición es verdadera o falsa para la entrada o conjunto de entradas. | |
Itera las entidades de una clase de entidad. | |
Itera filas en una tabla. | |
Itera cada valor en un campo. | |
Itera una lista de valores. | |
Repite datasets en un espacio de trabajo o dataset de entidades. | |
Repite clases de entidad en un espacio de trabajo o dataset de entidades. | |
Itera archivos en una carpeta. | |
Itera rásteres en un espacio de trabajo o un catálogo de ráster. | |
Itera tablas en un espacio de trabajo. | |
Itera espacios de trabajo en una carpeta. |
Entender cómo funciona un iterador
Cada iterador tiene un conjunto de parámetros que pueden diferir de los otros iteradores, pero la estructura general de todas las herramientas de iterador es muy similar. A continuación se explica un iterador de uso común, Iterar clases de entidad.
Iterar clases de entidad requiere un Espacio de trabajo de entrada en el que se almacenan todas las clases de entidad para recorrer en iteración. Se utilizan dos parámetros adicionales, Comodín y Tipo de entidad para restringir las clases de entidad que se repiten en el espacio de trabajo:
- El Comodín limita las clases de entidad por sus nombres.
- El Tipo de entidad limita las clases de entidad por sus tipos de entidad: anotación, arco, dimensión, borde, cruce, etiqueta, línea, nodo, punto, polígono, región, ruta o punto de relevancia.
El parámetro Recurrente se utiliza para controlar la iteración de clases de entidad dentro de subcarpetas en el espacio de trabajo.
Iterar clases de entidad tiene dos variables de salida: la clase de entidad de salida y el nombre de la clase de entidad. La clase de entidad de salida se puede conectar a la siguiente herramienta para el procesamiento, y la variable Nombre se puede utilizar para la sustitución de variables en línea. Por ejemplo, si se agrega la herramienta Zona de influencia al modelo, y la variable Clase de entidad se conecta a la herramienta, todas las clases de entidad en el espacio de trabajo se agregarán a la zona de influencia.
Entrada y salida de iteradores
A continuación, se muestra una lista de iteradores, y sus entradas y salidas. Algunos iteradores tienen un valor o nombre como segunda salida, que se puede utilizar para la sustitución de variables en línea.
Iterador |
Entrada |
Salida 1 |
Salida 2 |
---|---|---|---|
Valores |
Valor |
- |
|
Valores |
Booleano: valor verdadero o falso |
- |
|
Entidades |
Entidad |
Valor |
|
Tabla |
Grabar |
Valor |
|
Tabla |
Valor de campo |
- |
|
Valores |
Valor |
- |
|
Espacio de trabajo o dataset de entidades |
Dataset |
Nombre |
|
Espacio de trabajo o dataset de entidades |
Clase de entidad |
Nombre |
|
Carpeta |
Archivo |
Nombre |
|
Espacio de trabajo o Catálogo de ráster |
Dataset ráster |
Nombre |
|
Espacio de trabajo |
Tabla |
Nombre |
|
Carpeta |
Espacio de trabajo |
Nombre |
- Sólo se puede utilizar un iterador por modelo. Las opciones para agregar otro iterador se desactivarán si existe un iterador en el modelo.
- Si se agrega un iterador a un modelo, todas las herramientas del modelo se repetirán para cada valor en el iterador. Si no desea ejecutar cada herramienta del modelo para cada valor iterado, cree un submodelo/modelo dentro de un modelo o modelo anidado que contenga sólo el iterador y agréguelo al modelo principal como una herramienta de modelo.
- Si se exporta un modelo que contiene un iterador a una secuencia de comandos de Python, dicha secuencia no incluirá la lógica de iteración. Es posible agregar lógica de lista de Python a la secuencia de comandos para conseguir un efecto similar.
- Utilizar un iterador establecerá el valor predeterminado de -1 en las opciones de iteración de Propiedades del modelo, lo que significa que el modelo se ejecutará un número ilimitado de veces o se basará en el número de entradas de un iterador, y no en un número determinado.
- La salida de cualquier herramienta conectada al iterador puede tener (o requerir) un nombre único para cada iteración para evitar que se sobrescriban. Para lograr esto puede:
- Utilizar la variable de sistema %n%, por ejemplo, C:\Sctatch\scratch.gdb\output_%n%.
- Utilizar la salida Name o Value del iterador utilizado en el modelo como una variable en línea, por ejemplo, C:\Sctatch\scratch.gdb\output_%Name%, C:\Sctatch\scratch.gdb\output_%Value%.
- Utilizar cualquier otra variable en el modelo como una variable en línea, por ejemplo, si existe una variable XYZ, el nombre de la salida puede ser C:\Scratch\scratch.gdb\output_%XYZ%. (Esta variable no debe utilizar un valor constante).
- Las salidas de la herramienta con la opción Agregar a visualización marcada, se agregan a la visualización en ArcMap mediante el nombre de la variable. Si desea agregar las salidas de todas las iteraciones a la visualización en ArcMap con el nombre de salida único real en lugar del nombre de la variable, conecte la salida que desea visualizar a la herramienta Adquirir valores, después haga clic con el botón derecho del ratón en la salida de Adquirir valores para marcar la opción Agregar a visualización. Si el modelo se va a ejecutar desde el cuadro de diálogo de la herramienta de modelo, transforme la salida de Adquirir valores en un parámetro de modelo ya que sólo los parámetros de modelo se agregan a la visualización.
Los iteradores sustituyen la opción Propiedades de modelo disponible en versiones de ArcGIS anteriores a la número 10.