Calculer une valeur (Gestion des données)
Récapitulatif
L'outil Calculer une valeur renvoie une valeur basée sur une expression Python.
Utilisation
-
Cet outil est prévu uniquement pour une utilisation dans ModelBuilder et non dans des scripts Python.
-
Le paramètre Type de données est utilisé dans ModelBuilder pour faciliter l'enchaînement des résultats de l'outil Calculer une valeur avec d'autres outils. Par exemple, si vous utilisez l'outil Calculer une valeur pour calculer une distance à utiliser comme entrée du paramètre Distance de la zone tampon de l'outil Zone tampon, indiquez la valeur Unité linéaire pour le paramètre Type de données.
-
Les variables créées dans ModelBuilder peuvent être utilisées par cet outil, mais celles destinées à une utilisation dans le paramètre d'expression ne peuvent être connectées à l'outil Calculer une valeur. Pour les utiliser dans l'expression, mettez le nom des variables entre deux symboles de pourcentage (%). Par exemple, si vous souhaitez diviser une variable nommée 'Input' par 100, l'expression sera %Input%/100.
Remarque : dans l'expression précédente, si Input = 123, l'expression renvoie le résultat 1. Pour afficher des décimales, ajoutez des décimales aux valeurs dans l'expression. Par exemple, %Input%/100,00 renvoie 1,23. L'illustration ci-dessous montre un autre exemple d'utilisation de variables dans l'expression.
Attention :Les variables en ligne de type chaîne doivent apparaître entre guillemets ("%string variable%") dans une expression. Les variables en ligne de type nombres (double, long) n'ont pas besoin d'être entre guillemets (%double%).
-
Les expressions ne peuvent être créées QUE dans un format Python standard. Les autres langages de script ne sont pas pris en charge.
-
L'outil Calculer une valeur peut évaluer des expressions mathématiques simples. Par exemple :
- 3+5
- 9*8
- 4+(9/3)
-
L'outil Calculer une valeur permet d'utiliser le module mathématique Python pour effectuer des opérations mathématiques plus complexes. Pour accéder au module mathématique, faites précéder la fonction souhaitée de "math". Par exemple :
- math.sqrt(25)
- math.cos(0.5)
-
Les constantes sont également prises en charge via le module mathématique. Par exemple :
- math.pi
-
La fonction arcgis.rand() n'est pas prise en charge. La fonction arcgis.rand() a été créée pour les outils ArcGIS et ne doit pas être confondue avec la fonction Python Rand(). Vous trouverez ci-dessous quelques exemples d'utilisation de la fonction arcgis.rand() :
- Calcul d'une valeur aléatoire dérivée d'une répartition uniforme d'entiers entre 0 et 10 : arcgis.rand("Integer 0 10")
- Calcul d'une valeur aléatoire dérivée d'une répartition normale avec une moyenne de 10 et un écart type de 3 : arcgis.rand("Normal 10 3")
Attention :L'expression arcgis.rand doit être saisie en minuscules.
-
En règle générale, vous allez saisir les expressions dans le paramètre Expression. Les expressions plus complexes, telles que les calculs multilignes ou les opérations logiques (if, then), sont entrées dans le paramètre Bloc de code. Le paramètre Bloc de code ne peut être utilisé seul ; il doit l'être avec le paramètre Expression.
Les variables définies dans le paramètre Bloc de code peuvent être référencées dans l'expression.
Les fonctions peuvent être définies dans le paramètre Bloc de code et appelées depuis l'expression. Dans l'exemple ci-dessous, la fonction renvoie une chaîne de sens du vent à partir d'une valeur en entrée aléatoire. Dans Python, les fonctions sont définies à l'aide du mot-clé def suivi du nom de la fonction et des paramètres en entrée de celle-ci. Dans cet exemple, la fonction est getWind et dispose d'un seul paramètre, wind. Les valeurs sont renvoyées de la fonction à l'aide du mot clé return.
Vous pouvez faire passer des variables via le paramètre Expression et utiliser une logique if-else avec des variables en ligne dans le bloc de code comme illustré ci-dessous. Le bloc de code vérifie si la variable Taille de cellule en entrée est vide et renvoie une valeur basée sur la condition.
Les méthodes Python peuvent être utilisées directement dans le paramètre Expression de l'outil. Par exemple, si vous avez une valeur en entrée comportant une décimale (valeur de champ de la table en entrée dans notre exemple) et que vous souhaitez utiliser cette valeur dans le nom en sortie d'un autre outil via la substitution d'une variable en ligne, la décimale peut être remplacée à l'aide de la méthode Python replace dans l'expression de l'outil Calculer une valeur.
Des modules Python peuvent être appelés et des méthodes telles que replace combinées ou empilées dans le paramètre bloc de code. Dans l'exemple ci-dessous, le module time est importé dans le bloc de code qui renvoie la date et l'heure courantes, comme Fri Mar 19 2010 09:42:39. Cette valeur retournée est ensuite utilisée comme nom dans l'outil Créer un dossier pour nommer le dossier. Etant donné que le nom du dossier ne peut contenir d'espace ou de signe de ponctuation, la méthode replace dans Python est utilisée en empilant la méthode pour chaque élément devant être remplacé. Dans cet exemple, le dossier est donc nommé FriMar192010094239.
Si vous calculez une valeur dans le modèle et souhaitez utiliser la valeur calculée avec des outils tels que Zone tampon qui nécessitent une valeur de distance de zone tampon ainsi qu'une unité linéaire, vous devez :
- renvoyer l'unité linéaire dans le bloc de code ainsi que la valeur de distance,
- modifier le type de données des valeurs retournées, comme indiqué ci-dessous et
- Définir le paramètre de type de données sur unité linéaire afin que le résultat de l'expression soit converti en valeur d'unité linéaire.
Vous pouvez utiliser directement la sortie de l'outil Calculer une valeur dans tous les outils Spatial Analyst qui acceptent un raster ou une valeur constante telle que Plus,Supérieur à et Inférieur à (ces outils sont disponibles dans la boîte à outils Spatial Analyst/le jeu d'outils Mathématiques). Pour utiliser la sortie de l'outil Calculer une valeur, changez le type de données en sortie en Raster (formule). Ce format de type de données en sortie est une surface raster dont les valeurs de cellules sont représentées par une formule ou une constante.
-
Dans Python, une partie de la syntaxe a sa propre indentation. Le niveau d'indentation (deux espaces ou quatre) importe peu tant qu'il est identique dans tout le bloc de code.
-
Vous ne pouvez pas accéder aux variables de modèle depuis le bloc de code. Les variables de ce type doivent être transmises au Bloc de code depuis l'expression. Pour ce faire, vous devez créer une définition dans le Bloc de code et référencer la définition dans la zone Expression.
Pour la rédaction de scripts Python, utilisez des instructions Python standard plutôt que l'outil Calculer une valeur.
Syntaxe
Paramètre | Explication | Type de données |
expression |
Expression Python à évaluer. | SQL Expression |
code_block (Facultatif) |
Code Python supplémentaire. Le code du bloc peut être référencé dans le paramètre Expression. | String |
data_type (Facultatif) |
Type de données de la sortie renvoyé à partir de l'expression Python. Ce paramètre doit être utilisé dans ModelBuilder pour faciliter l'enchaînement de l'outil Calculer une valeur avec d'autres outils. | String |