Un modelo de geoprocesamiento se guarda como una herramienta de modelo en una caja de herramientas. Las herramientas de modelo se pueden ejecutar como cualquier otra herramienta de geoprocesamiento desde el panel Geoprocesamiento y utilizarse en otros modelos y scripts de Python.
Al concepto de agregar y ejecutar una herramienta de modelo dentro de otro modelo se le suele denominar submodelo, modelo anidado o modelo dentro de un modelo. El uso de un modelo dentro de otro modelo permite dividir los modelos más grandes en modelos más reducidos y sencillos de administrar y que se pueden reutilizar.
Para agregar un submodelo a un modelo, siga estos pasos.
- Cree un modelo que realice el procesamiento que desea llamar desde otros modelos: el submodelo. Usted ejecutará este submodelo dentro de otro modelo, por lo que el submodelo se debe crear acorde con las mejores prácticas para una herramienta de modelo, incluida la configuración de las propiedades y los parámetros de la herramienta de modelo.
Si ya tiene una parte de un modelo que desea convertir en un submodelo, puede copiar y pegar las variables y los procesos del modelo en un nuevo modelo o agruparlos y utilizar el comando Guardar grupo como nuevo modelo.
- Asegúrese de guardar el modelo una vez completados los pasos anteriores y se disponga a agregar el modelo a otro modelo.
- Edite o cree un nuevo modelo principal.
- Agregue el submodelo al modelo principal mediante una de las técnicas para agregar una herramienta a un modelo. Necesita localizar el submodelo en el panel Catálogo y arrastrarlo hasta el modelo principal, a no ser que el submodelo se encuentre en una caja de herramientas de proyecto.
Los parámetros de datos de entrada y salida del submodelo se convertirán automáticamente en variables del modelo principal. Es posible exponer parámetros adicionales del submodelo como variables en el modelo haciendo clic con el botón derecho en el submodelo y haciendo clic en Crear variable > Desde parámetro > <seleccione un parámetro>.
A continuación se indican los dos motivos principales de usar un modelo dentro de un modelo:
- Simplificar un modelo grande y complejo y obtener modelos más pequeños y fáciles de administrar.
- Admitir el uso de iteradores de modelo dentro de un área de un modelo mayor.
Simplificar un modelo grande y complejo
Incorporar una herramienta de modelo dentro de otro modelo permite dividir procesos grandes y complejos en unidades de modelo más reducidas que se pueden administrar mejor y volver a utilizar más fácilmente en otros modelos o scripts. Estos submodelos también se pueden modificar y ejecutar de nuevo sin necesidad de editar un modelo grande y potencialmente engorroso o volver a ejecutar todo el proceso: si se produce un error en un submodelo, corrija solo ese modelo y, a continuación, vuelva a ejecutar el modelo único en lugar de ejecutar todo el proceso de nuevo.
El modelo grande de arriba se puede dividir en cuatro submodelos y un modelo principal. Los submodelos más reducidos se pueden agregar al modelo principal y conectarse a un proceso final. Cuando se agrega un submodelo a otro modelo, los parámetros de salida del submodelo se agregan como variables de salida.
Uso avanzado de iteradores de modelo
Integrar una herramienta de modelo dentro de otro modelo también permite un uso avanzado de los iteradores del modelo. Cuando un flujo de trabajo requiere iteración de modelo, las herramientas o procesos específicos que se deben ejecutar más de una vez deben separarse de las herramientas o procesos que sólo tienen que ejecutarse una vez.
Nota:
Pensar que solo las herramientas de aguas abajo de un iterador de modelo se ejecutarán varias veces es una concepción errónea común. Cuando un modelo contiene un iterador, todos los procesos del modelo se ejecutarán varias veces.
El siguiente ejemplo es un flujo de trabajo que fusiona un conjunto de entradas de una geodatabase. La herramienta Fusionar acepta varias clases de entidad como entradas para fusionar, pero no hay ninguna forma automática de agregar todas las clases de entidad desde un espacio de trabajo específico. En esta situación, se puede utilizar el iterador de modelo Iterar clases de entidad junto con la herramienta Recopilar valores para leer todas las clases de entidad de un espacio de trabajo y reunirlas en una variable con varios valores. Puesto que estos dos procesos deben ejecutarse varias veces (iteraciones), se agregarán a un submodelo, mientras que la herramienta Fusionar, que solo debe ejecutarse una vez, se agregará al modelo principal y se conectará a la salida del submodelo que contiene el iterador.
A continuación, se muestra una descripción paso a paso del proceso de creación del flujo de trabajo anterior. Consulte Vocabulario de ModelBuilder para obtener más información acerca de los términos y las técnicas utilizados a continuación.
- Cree dos modelos: un modelo principal y un submodelo, en el que el submodelo se agrega al modelo principal. Agregue la herramienta Fusionar al modelo principal y el iterador de Iterar clases de entidad y la herramienta Capturar valores al submodelo.
- En el submodelo, establezca el espacio de trabajo que contiene las clases de entidad que se han de fusionar como entrada para el iterador Iterar clases de entidad. Para iterar solo las clases de entidad de puntos, establezca el parámetro Tipo de entidad de Iterar clases de entidad en POINT.
- Conecte la variable de salida Iterar clases de entidad, Clase de entidad de salida, a la herramienta Recopilar valores de modo que se itere y se capture la ruta de todas las clases de entidad de puntos del espacio de trabajo.
- Convierta la variable del espacio de trabajo de entrada y la salida de la herramienta Capturar valores en parámetros de modelo. Cambie los nombres de los Datasets de entrada de la variable del espacio de trabajo de entrada para asegurarse de que el nombre de la variable es relevante y fácil de comprender.
- Guarde y cierre el submodelo y, a continuación, agréguelo como un proceso al modelo principal. Cuando el submodelo se agrega al modelo principal, los parámetros del submodelo se agregan automáticamente como variables del modelo principal.
- Conecte la variable de salida del submodelo como el parámetro Datasets de entrada de la herramienta Fusionar. Asegúrese de que la salida de la herramienta Fusionar tiene una ruta válida.