français

Problème : la calculatrice de valeurs de champs se termine mais les valeurs de changent pas

Description

La calculatrice de valeurs de champs est un outil fabuleux qui permet de modifier toutes les valeurs de champ à la fois sans perdre de temps à effectuer des calculs individuels. Son utilisation requiert cependant une attention particulière quant à certains détails tels que le type de champ, la longueur de champ et les domaines. Il peut arriver qu’aucune erreur n’apparaisse lors de l’exécution de la calculatrice de valeurs de champs, mais que les valeurs de champ n’aient pas changé.

Cause

Une mise en garde relative à l’utilisation de la calculatrice de valeurs de champs est que l’utilisateur doit connaître les types de champs employés.

Supposons, par exemple, qu’un utilisateur dispose d’une table à deux colonnes et qu’il souhaite en remplir une troisième avec du texte uniquement si les deux premières colonnes correspondent :
Image showing the input table with three fields.

En utilisant un code de comparaison dans la calculatrice de valeurs de champs :

Image showing code in Field Calculator where, within the code block, the statement "if Field1==Field2:".
L’opération se termine et semble avoir abouti dans le menu Geoprocessing (Géotraitement) > Results (Résultats), mais la troisième colonne ne change pas.
Results window showing that Field Calculator completed successfully.
En effet, les deux champs en entrée, bien qu’étant parfois identiques (1 dans FieldName1 et 1 dans FieldName 2), sont de types différents :
Screenshot of FieldName1 properties showing Type: StringScreenshot of FieldName2 properties showing Type: Short
La chaîne « 1 » n’est donc pas égale à l’entier court « 1 » car aucune instruction « else » n’accompagne l’instruction « if » dans le bloc de code. Aucune donnée n’est donc renvoyée pour renseigner le champ.

Solution ou procédure de contournement

Il convient de toujours vérifier les types de champs des entrées dans la calculatrice de valeurs de champs. Il est possible de modifier temporairement les types de champs avec du code tel que str(), int(), etc., pour convertir les entrées vers le même type afin que le calcul de champs aboutisse. Dans cet exemple, une instruction « else » a pu être ajoutée.
Image showing the added line "else: return "The values are different""
Cela génère une sortie lorsque l’instruction « if » est fausse, ce qui pourrait indiquer qu’une investigation supplémentaire est nécessaire quant à ce résultat occasionnant ainsi une vérification des valeurs et de leurs types.
Image showing the third column now is populated with "The values are different"

Informations associées