Outils de branchement et de logique If-Then-Else

La logique if-then-else constitue un moyen d’effectuer des actions en fonction de conditions différentes. La logique if-then-else peut être expliquée comme suit : si la condition est exacte, effectuez une action, sinon effectuez une autre action.

Dans ModelBuilder, il est possible d’ajouter une logique if-then-else grâce au jeu d’outils logiques intégrés, aux fonctions Python personnalisées ou aux outils de script.

Outils logiques

Les outils logiques contrôlent le flux des traitements dans un modèle et permettent d’utiliser la logique de branchement if-then-else.

UtilitaireDescription

Données présentes

Vérifie si les données spécifiées existent.

Champ présent

Vérifie si les données en entrée contiennent les champs spécifiés.

Sélection présente

Vérifie si les données en entrée possèdent une sélection et si un certain nombre d’enregistrements sont sélectionnés.

Système de coordonnées égal à

Vérifie si les données en entrée possèdent le système de coordonnées spécifié.

Type de données égal à

Évalue si les données en entrée correspondent au type de données spécifié.

Type d’entité égal à

Vérifie si une classe d’entités est du type d’entité spécifié.

Valeur de champ égale à

Vérifie si les valeurs dans un champ attributaire correspondent à une valeur, une expression ou un second champ spécifié.

Nombre de lignes égal à

Vérifie le nombre de lignes des données en entrée et détermine s’il correspond à une valeur spécifiée.

Relation spatiale égale à

Évalue si les entrées possèdent une relation spatiale spécifiée.

Valeur égale à

Évalue une valeur en entrée par rapport à une valeur unique, une liste ou une plage de valeurs en utilisant un opérateur de comparaison défini.

Fusionner les branches

L’outil Merge Branch (Fusionner des branches) fusionne deux branches logiques ou plus dans une seule sortie.

Arrêter

Arrête l’itération si toutes les valeurs en entrée répondent à la condition indiquée vraie ou fausse. En termes de fonctionnalité, cet outil est comparable à l’itérateur Tant que, mais il s’avère particulièrement utile pour arrêter un modèle lorsque celui-ci ne comporte que l’itérateur Tant que et qu’aucun autre itérateur ne peut être ajouté.

En savoir plus sur l’utilisation des outils logiques dans ModelBuilder

Python

Outre les outils logiques intégrés dans ModelBuilder, vous pouvez écrire vos propres fonctions et outils afin de réaliser un branchement if-then-else avec des fonctions Python personnalisées grâce à l’outil Calculer une valeur. Ces fonctions peuvent tester des conditions avec de nombreuses fonctionnalités arcpy et Python, ainsi que des variables booléennes en sortie vraies et fausses. Vous pouvez également écrire un script Python qui teste les conditions et génère des variables booléennes vraies et fausses en sortie, transforme le script en outil de script de géotraitement et ajoute l’outil de script à votre modèle.

Comprendre les conditions

Avant de choisir un outil système ou de rédiger un script personnalisé, il est conseillé de comprendre la logique conditionnelle basée sur les types de données raster ou vectorielles.

Exécuter un modèle uniquement si un fichier est présent

L’exemple suivant illustre l’utilisation de l’outil If Data Exists (Données présentes) pour vérifier l’existence de données dans un espace de travail particulier ; si de telles données existent, l’outil suivant, Add Field (Ajouter un champ), est exécuté dans le modèle. S’il n’existe aucune donnée, vous devez copier la classe d’entités à partir d’un emplacement de sauvegarde avant d’ajouter un champ.

Exemple d’utilisation de l’outil Données présentes

Exécuter un modèle uniquement si une entrée est dotée d’un système de coordonnées spécifique

L’exemple suivant illustre l’utilisation de l’outil If Coordinate System Is (Système de coordonnées égal à) pour contrôler si l’option Coordinate System (Système de coordonnées) de la classe d’entités en entrée est GCS_WGS_1984. Si la sortie booléenne est False (Faux), le modèle utilise l’outil Project (Projeter) pour projeter la classe d’entités en entrée dans le système GCS_WGS_1984.

Exemple de l’outil Système de coordonnées égal à

Exécuter un modèle uniquement si une classe d’entités en entrée a un type de géométrie particulier

L’exemple suivant illustre l’utilisation de l’outil If Feature Type Is (Type d’entité égal à) pour contrôler si le type d’entité de l’entrée est Point. Si la sortie booléenne est True (Vrai), exécutez l’outil suivant Ajouter des emplacements. Si la sortie booléenne est False (Faux), convertissez l’outil Feature To Point (Entités vers points) en entrée avant d’exécuter l’outil Add Location (Ajouter un emplacement). L’outil Merge Branch (Fusionner des branches) fusionne les branches True (Vrai) et False (Faux) pour que l’outil Solve (Rechercher) puisse être exécuté sur n’importe quelle branche.

Exemple d’utilisation de l’outil Type d’entité égal à

Modifier les valeurs de champ en fonction d’une condition

L’exemple suivant illustre l’utilisation de l’outil If Field Value Is (Valeur de champ égale à) pour contrôler si la classe d’entités en entrée possède des enregistrements dont la valeur du champ Type est égale à A. Si la sortie booléenne est True (Vrai), sélectionnez des entités de type A à l’aide de l’outil Select Layer By Attribute (Sélectionner une couche par attributs), puis modifiez les valeurs du champ Description avec l’outil Calculate Field (Calculer un champ).

Exemple d’utilisation de l’outil Valeur de champ égale à

Exécuter un modèle uniquement si une requête SQL aboutit à la sélection d’entités

L’exemple suivant illustre l’utilisation de l’outil If Selection Exists (Sélection présente) pour vérifier si la classe d’entités en entrée comporte des entités sélectionnées. Si la sortie booléenne est True (Vrai), utilisez l’outil Calculer un champ pour calculer les valeurs du champ Description. Si la sortie booléenne est False (Faux), utilisez l’outil Sélectionner une couche par attributs pour effectuer la sélection et modifier les valeurs de champ.

Exemple d’utilisation de l’outil Sélection présente

Exécuter un modèle uniquement si une entrée est d’un type de données spécifique

L’exemple suivant illustre l’utilisation de l’outil Analyser un chemin pour obtenir l’extension de fichier. L’outil If Value Is (Valeur égale à) vérifie si l’extension correspond au paramètre Values (Valeurs). Le modèle copie uniquement des données raster dotées de l’extension .tif.

Exemple d’utilisation de l’outil Valeur égale à

Effectuer l’évaluation booléenne d’un raster

Les outils Tester, Con, Supérieur à et Calculatrice raster permettent d’effectuer l’évaluation booléenne d’un raster. Dans l’exemple suivant, si une valeur de cellule est supérieure à 2000, elle est définie sur1 (True (Vrai)), sinon elle est définie sur 0 (False (Faux)).

Évaluation True (Vrai) ou False (Faux) d’un raster

Effectuer l’évaluation conditionnelle d’un raster

Les outils Con et Raster Calculator (Calculatrice raster) permettent d’évaluer un raster de manière conditionnelle. Dans l’exemple suivant, si une valeur de cellule est supérieure à 2000, la valeur en entrée est conservée, sinon elle est définie sur NoData. Dans le cas de l’outil Con, si vous laissez le paramètre Input false raster or constant value (Raster de valeurs fausses ou valeur constante en entrée) vide, la valeur est définie sur NoData. Si vous le souhaitez, vous pouvez fournir un autre raster ou une autre valeur constante pour le paramètre Input false raster or constant value (Raster de valeurs fausses ou valeur constante en entrée).

Évaluation conditionnelle if...else d’un raster

Extraire des cellules à partir d’un raster à l’aide d’une requête

Les outils Extract By Attribute (Extraction par attributs), Make Raster Layer (Générer une couche raster) et Select Layer By Attribute (Sélectionner une couche par attributs) permettent d’extraire des cellules à partir d’un raster. L’exemple suivant illustre les méthodes de création d’un raster ou d’une couche raster avec des valeurs de cellule supérieures à 2000.

Extraction de raster basée sur une requête

Extraire des cellules à partir d’un raster à l’aide d’une requête et les définir sur NoData

Les outils Set Null, Reclassification et Calculatrice raster permettent d’extraire des cellules à partir d’un raster et de les définir sur NoData. Si la valeur de cellule est supérieure à 2000, elle est définie sur NoData, sinon la valeur des données en entrée est utilisée.

Définition des valeurs de cellule d’un raster sur NoData.

Extraire les cellules NoData à partir d’un raster à l’aide d’une requête et les modifier

L’outil Est nul avec l’outil Con, ou l’outil Calculatrice raster permet d’extraire les cellules NoData à partir d’un raster et de les modifier. Dans l’exemple suivant, si une cellule a pour valeur NoData, elle est définie sur 0, sinon la valeur des données en entrée est utilisée.

Modifier la valeur des cellules NoData d’un raster

Exécuter un modèle uniquement si une propriété du raster correspond à une condition spécifique

Par exemple, si vous souhaitez vérifier si la valeur moyenne de toutes les cellules est supérieure à 100, vous pouvez utiliser les outils Get Raster Properties (Obtenir les propriétés du raster) et If Value Is (Valeur égale à).

Poursuivre ou arrêter l’exécution d’un outil dans un modèle en fonction d’une condition

Les outils While (Tandis que) et Stop (Arrêter) permettent de poursuivre ou d’arrêter l’exécution d’un modèle en fonction d’une condition.