Nous avons déjà vu deux types d’itérateurs, les itérateurs de couche (ArcGis Model Builder: étendre un modèle à un ensemble de données en entrée) et les itérateurs numériques (ArcGis Model Builder: les itérateurs FOR et WHILE ). Il nous reste le dernier type d’itérateurs: les itérateurs d’entités.
Les itérateurs d’entités, c’est quoi?
Vous connaissez la différence entre ArcCatalog et ArcMap : quand il s’agit d’une opération sur une couche (création, copie, projection,…) vous utilisez ArcCatalog. Quand il s’agit d’intervenir sur les entités d’une couche (modification, ajout, …) vous utilisez ArcMap. Ici c’est pareil: quand vous voulez appliquer un modèle de traitement à plusieurs couches, vous utilisez les itérateurs de couche, quand vous voulez travailler sur différentes entités d’une seule couche, vous utiliserez les itérateurs d’entités.
Ces itérateurs sont au nombre de trois:
- itérer la sélection d’entités
- Itérer la sélection d’enregistrements
- Itérer les valeurs de champ
Les trois itérateurs correspondent au même objectif: sélectionner des entités de la couche en entrée en fonction des valeurs contenues dans un champ attributaire. Alors, pourquoi trois itérateurs? Ce n’est pas à cause de la sélection que vous faites, elle est toujours la même, mais de ce que l’itérateur produit comme sortie. Si vous êtes en train de lire cet article c’est bien que vous avez déjà eu maille à partir avec Model Builder. Vous savez donc que les outils de la toolbox sont capricieux et qu’ils ne fonctionnent pas sur n’importe quel type de donnée en entrée.
Vous avez des outils qui vous demandent une Classe d’entités (Feature Class) comme données en entrée, d’autres qui s’appliquent à des vues tabulaires (Row selection) et d’autres qui demandent une valeur (Value). Les trois itérateurs correspondent à ces trois types de conditions des outils de la toolbox.
Pour être plus clair, vous avez une seule couche de données en entrée, vous utilisez un attribut avec différentes valeurs;
- vous utilisez l’itérateur itérer la sélection d’entités vous aurez une sortie de type Feature Class à relier au modèle de traitement
- vous utilisez l’itérateur Itérer la sélection d’enregistrements vous aurez une sortie de type Vue tabulaire à relier au modèle de traitement
- vous utilisez l’itérateur Itérer les valeurs de champ vous aurez une sortie de Valeur (texte) à relier au modèle de traitement
Itérer la sélection d’entités
La couche en entrée contient 5 régions hydrographiques, chacune représentée par un polygone. L’itérateur va créer, successivement, une classe d’entités contenant un des polygones, et cette classe d’entités sera utilisée en entrée du modèle de traitement.
Pour chaque itération, l’itérateur va générer aussi une chaîne de caractères, Value, contenant le code de la région hydrographique. Cette valeur sera utilisée comme variable de substitution en ligne pour la couche en sortie du modèle de traitement. Pour cela, nous insérons %Value% dans le nom de la couche en sortie du dernier outil su modèle, par exemple C:\Users\admin\Documents\ArcGIS\Projects\MyProject10\HYDROGRAPHIE_SURFACIQUE_%Value%.shp
Itérer la sélection d’enregistrements
La couche en entrée contient 18 secteurs hydrographiques, chacun représenté par un polygone. L’itérateur va créer, successivement, une table contenant les enregistrements d’une région hydrographique. Pour la régions Bretagne, par exemple, il y a 9 polygones (entités) dans la couche en entrée. Cette table sera utilisée en entrée du modèle de traitement, et les statistiques seront calculées pour les 9 enregistrements de la Bretagne, puis, dans les autres itérations, pour chaque code région présent dans la classe d’entités en entrée.
Pour chaque itération, l’itérateur va générer aussi une chaîne de caractères, Value, contenant le code de la région hydrographique. Cette valeur sera utilisée comme variable de substitution en ligne pour la couche en sortie du modèle de traitement. Pour cela, nous insérons %Value% dans le nom de la couche en sortie du dernier outil su modèle, par exemple C:\Users\admin\Documents\ArcGIS\Projects\MyProject10\MyProject10.gdb\SECTEURS_%Value%_Statistics
Itérer les valeurs de champ
La table attributaire de la couche en entrée contient un champ avec des valeurs. Cet itérateur permet de créer une série de valeurs qui seront utilisées successivement comme entrée d’un outil du modèle de traitement, par exemple pour l’outil Buffer, la distance du buffer.
L’itérateur lit tous les enregistrements de la table en entrée et, selon votre choix, crée une série de valeurs différentes ou une série comportant toutes les valeurs trouvées, même s’il y a des valeurs qui se répètent. Ceci est contrôlé par la case à cocher « Unique Values ».
Par exemple, une table avec 100 enregistrements comporte 12 valeurs différentes.
Si la case est cochée, le modèle s’exécutera 12 fois, une fois pour chacune des 12 valeurs. Si la case n’est pas cochée, le modèle s’exécutera 100 fois, une fois pour chaque enregistrement.
Dernier élément, dans les trois fenêtres de paramétrage vous verrez une case à cocher « Skip Null Values ». S’il est possible de trouver des valeurs nulles (pas zéro, mais bien Null) , il vaut mieux cocher cette case car l’itérateur n’aura pas de problème mais les outils de traitement auront bien du mal à traiter cette entrée. Dans le doute, cochez-là, ça peut pas nuire, à moins que les valeurs nulles soient bien prise en compte par le modèle de traitement.