Intégration d'un modèle au sein d'un modèle

Les outils de modèle sont entièrement intégrés au sein de la structure de géotraitement et peuvent être utilisés de la même façon que tous les outils système ou de script. A l'instar de tous les autres outils de géotraitement, les outils de modèle peuvent être exécutés à partir d'une boîte de dialogue, par le biais de scripts Python ou être ajoutés à un autre modèle et exécutés à partir de celui-ci.

Un outil de modèle ajouté à un autre modèle et exécuté à partir de celui-ci est parfois désigné par les termes "sous-modèle", "modèle imbriqué" ou "modèle dans un modèle". Il existe deux raisons principales pour l'utilisation de ce type de hiérarchie de modèles : d'une part pour simplifier un grand modèle complexe et d'autre part pour permettre une utilisation avancée des itérateurs de modèle.

Simplification d'un grand modèle complexe

L'incorporation d'un outil de modèle à un autre modèle permet de diviser des grands processus complexes en plus petites unités de modèle plus facilement gérables et réutilisables dans d'autres modèles ou scripts. Ces sous-modèles peuvent également être modifiés et réexécutés sans devoir relancer le processus entier. Si un sous-modèle comporte une erreur, il suffit de le corriger, puis de le relancer au lieu de devoir corriger et réexécuter le processus entier.

Division d'un grand modèle en plusieurs sous-modèles
Grand modèle divisible en quatre sous-modèles et un modèle principal

Le grand modèle ci-dessous peut être divisé en quatre sous-modèles et un modèle principal. Les sous-modèles plus petits peuvent être ajoutés à un modèle principal et connectés à un processus final. Lorsqu'un sous-modèle est ajouté à un autre modèle, la sortie finale du sous-modèle est ajoutée en tant que variable en sortie.

Ajout de sous-modèles au modèle principal

Utilisation avancée d'itérateurs de modèle

L'incorporation d'un outil de modèle à un autre modèle permet également une utilisation avancée des itérateurs de modèle. Lorsqu'un workflow nécessite un processus itératif de modèle, les outils ou processus spécifiques devant être exécutés plusieurs fois doivent être séparés des outils ou processus qui ne doivent être exécutés qu'une seule fois par workflow. Dans cette situation, tous les outils qui doivent être exécutés plusieurs fois doivent être placés dans un modèle avec un itérateur de modèle et employés en tant que sous-modèles. Les outils qui ne doivent être exécutés qu'une fois doivent être placés dans le modèle principal, qui appelle le sous-modèle d'itération.

L'exemple suivant est un workflow automatisé qui fusionne un ensemble d'entrées d'une géodatabase. L'outil Combiner accepte plusieurs classes d'entités comme entrées à fusionner, mais il n'existe aucun moyen automatisé d'ajouter toutes les classes d'entités issues d'un espace de travail spécifique. Dans cette situation, l'itérateur de modèles Itérer les classes d'entité peut être utilisé en association avec l'outil Recueillir les valeurs pour parcourir toutes les classes d'entités d'un espace de travail et les rassembler dans une seule variable. Puisque ces deux processus doivent être exécutés plusieurs fois (itérations), ils seront ajoutés à un sous-modèle, alors que l'outil Combiner, qui doit être exécuté uniquement une fois, sera ajouté au modèle principal et connecté à la sortie du sous-modèle Itérer les classes d'entité/Recueillir les valeurs.

Modèle principal et sous-modèle

La section suivante donne une description détaillée de la façon dont le workflow complet ci-dessus a été créé. Reportez-vous à la rubrique Terminologie essentielle de ModelBuilder pour plus d'informations sur les termes et les techniques utilisés ci-dessous.

Etapes :
  1. Créez deux modèles : un modèle principal et un sous-modèle imbriqué dans le modèle principal. Ajoutez l'outil Combiner au modèle principal. Ajoutez l'itérateur Itérer les classes d'entité et l'outil Recueillir les valeurs au sous-modèle.
  2. Dans le sous-modèle, définissez l'espace de travail qui contient les classes d'entités à fusionner en tant qu'entrée pour l'itérateur Itérer les classes d'entité. Pour itérer uniquement les classes d'entités points, définissez le paramètre Type d'entités de l'itérateur Itérer les classes d'entité sur POINT.
    Définition de l'itérateur
  3. Connectez la variable en sortie Classe d'entités en sortie de l'itérateur Itérer les classes d'entité à l'outil Recueillir les valeurs de sorte que chaque classe d'entités points dans l'espace de travail soit itérée et recueillie.
  4. Convertissez la variable d'espace de travail en entrée et la sortie de l'outil Recueillir les valeurs en paramètres de modèle. Pour plus de clarté, renommez la variable d'espace de travail en entrée Jeu de données en entrée.
    Définition du sous-modèle
  5. Enregistrez et fermez le sous-modèle, puis ajoutez-le comme processus au modèle principal.
  6. Lorsque le sous-modèle est ajouté au modèle principal, ses paramètres sont automatiquement ajoutés en tant que variables dans le modèle principal.
    Ajout du sous-modèle
  7. Définissez la variable en sortie du sous-modèle comme Jeux de données en entrée de l'outil Combiner. Assurez-vous que la sortie de l'outil Combiner a un chemin d'accès valide.
  8. Renommez la variable en entrée du sous-modèle Jeu de données en entrée et la variable en sortie Sortie combinée de l'outil Combiner. Définissez les variables Jeu de données en entrée et Sortie combinée en tant que paramètres de modèle.
    Modèle imbriqué
5/10/2014