Calculer des champs (multiple) (Gestion des données)

Synthèse

Calcule les valeurs de plusieurs champs pour une classe d’entités, une couche d’entités ou un raster.

Utilisation

    Attention :

    Cet outil modifie les données en entrée. Pour plus d’informations et connaître les stratégies permettant d’empêcher les modifications de données indésirables, reportez-vous à la rubrique Outils qui modifient ou mettent à jour les données en entrée.

  • Pour en savoir plus sur les expressions Python, consultez les exemples d’utilisation de l’outil Python Calculer un champ.

    Pour en savoir plus sur les expressions Arcade, reportez-vous au guide ArcGIS Arcade.

    Pour en savoir plus sur les expressions SQL, reportez-vous à la rubrique Calculer des valeurs de champ.

    Pour en savoir plus sur les expressions VBScript, reportez-vous à la rubrique Exemples VBScript d’utilisation de l’outil Calculer un champ.

  • Lorsqu’il est utilisé avec un jeu sélectionné d’entités, telles que celles créées à partir d’une requête dans l’outil Générer une couche ou l’outil Sélectionner une couche par attributs, cet outil ne met à jour que les enregistrements sélectionnés.

  • Les valeurs de champs existantes seront écrasées. Pour conserver les valeurs d’origine, faites une copie de la table en entrée en sauvegarde ou utilisez l’option Activer l’annulation dans la fenêtre Géotraitement.

  • Dans le cas des calculs Python, les noms de champs doivent être délimités par des points d’exclamation (!fieldname!, par exemple).

    Pour les calculs Arcade, les noms de champs doit avoir comme préfixe $feature. ($feature.fieldname, par exemple).

  • Pour les calculs associés au transfert de valeurs temporelles entre différents types de champ, pensez aussi à utiliser l’outil Convertir un champ temporel.

  • Pour calculer des chaînes sur des champs de type texte ou caractère, dans le cas d’une boîte de dialogue, les chaînes doivent être placées entre guillemets doubles (par exemple, "chaîne"). S’il s’agit de scripts, les chaînes entre guillemets doubles doivent, à leur tour, être incluses dans des guillemets simples (par exemple, '"string"').

  • Pour calculer un champ afin qu’il soit une valeur numérique, saisissez la valeur en question dans le paramètre Expression sans guillemets.

  • Vous pouvez créer des expressions complexes à l’aide du paramètre Code Block (Bloc de code). Saisissez directement le bloc de code dans la boîte de dialogue ou sous la forme d’une chaîne dans des scripts. L’expression et le code de bloc sont connectés. Le code de bloc doit relier l’expression ; le résultat du code de bloc doit être transmis à l’expression.

    Le paramètre Code Block (Bloc de code) est uniquement pris en charge pour les expressions Python.

  • Vous pouvez utiliser la mise en forme et le module Python math dans le paramètre Code Block (Bloc de code). Vous pouvez importer des modules supplémentaires. Le module math fournit des fonctions de représentation des nombres et d’arithmétique formelle, des fonctions logarithmiques et de puissance, des fonctions trigonométriques, des fonctions de conversion angulaire, des fonctions hyperboliques et des constantes mathématiques. Pour en savoir plus sur le module math, consultez l’aide de Python.

  • Pour calculer les informations de géométrie dans Python, utilisez des propriétés d’objet Geometry. Par exemple, utilisez une expression de !shape.pointCount! pour calculer le nombre de sommets d’une entité.

    Remarque :

    L’outil Calculer des attributs géométriques prend en charge des calculs similaires.

    Pour calculer la surface et la longueur dans Python, utilisez les méthodes getArea et getLength avec un type de méthode et d’unité.

    • Pour calculer la surface géodésique de polygones en kilomètres carrés, utilisez l’expression suivante :
      !shape.getArea('GEODESIC', 'SQUAREKILOMETERS')!
    • Pour calculer la longueur plane de polylignes (ou de polygones) en yards, utilisez l’expression suivante :
      !shape.getArea('PLANAR', 'YARDS')

    Reportez-vous aux objets Polygon et Polyline pour plus d’informations.

    En savoir plus sur les outils de géotraitement et les unités linéaires et surfaciques

  • Si vous utilisez des données jointes, vous ne pouvez modifier que les champs de la table d’origine. Vous ne pouvez pas modifier les champs de la table jointe. Pour effectuer un calcul sur la table jointe, effectuez-le directement sur cette table.

  • Les expressions Python qui tentent de concaténer des champs de type chaîne comprenant une valeur nulle ou de division par zéro renvoient une valeur nulle pour cette valeur de champ.

  • Les expressions SQL effectuent des calculs plus rapides pour les services d’entités et géodatabases d’entreprise. Au lieu d’effectuer les calculs entité par entité ou ligne par ligne, une requête unique est définie sur le serveur ou la base de données, ce qui entraîne des calculs plus rapides.

    Seuls les services d’entités et les géodatabases d’entreprise prennent en charge les expressions SQL. Pour les autres formats, utilisez des expressions Python ou Arcade.

    L’utilisation de l’option SQL du paramètre Expression Type (Type d’expression) a les limitations suivantes pour les géodatabases d’entreprise :

    • L’option est seulement prise en charge sur les géodatabases d’entreprise Db2, Oracle, PostgreSQL, SAP HANA et SQL Server.
    • Le calcul des valeurs de champ sur les tables jointes n’est pas pris en charge.
    • Les données de géodatabases d’entreprise versionnées et archivées ne sont pas prises en charge.
    • L’annulation des opérations de géotraitement n’est pas prise en charge.

    Consultez la documentation du fournisseur de base de données pour obtenir de l’aide sur les expressions SQL.

Paramètres

ÉtiquetteExplicationType de données
Table en entrée

Table contenant les champs qui sont mis à jour avec les nouveaux calculs.

Table View; Raster Layer; Mosaic Layer
Type d’expression

Précise le type d’expression qui est utilisé.

Si l’entrée est un service d’entités, le type d’expression par défaut est SQL. Pour les autres types d’entrée, le type d’expression par défaut est Python.

Pour en savoir plus sur les expressions Python, consultez les exemples d’utilisation de l’outil Python Calculer un champ.

Pour en savoir plus sur les expressions Arcade, reportez-vous au guide ArcGIS Arcade.

Pour en savoir plus sur les expressions SQL, reportez-vous à la rubrique Calculer des valeurs de champ.

Pour en savoir plus sur les expressions VBScript, reportez-vous à la rubrique Exemples VBScript d’utilisation de l’outil Calculer un champ.

  • PythonLe type d’expression Python est utilisé.
  • ArcadeLe type d’expression Arcade est utilisé.
  • SQLLe type d’expression SQL est utilisé.
  • VBScriptLe type d’expression VBScript sera utilisé.
String
Champs

Champs à calculer, leurs expressions et une clause where.

L’expression SQL facultative permet de sélectionner un sous-ensemble d’enregistrements. Seuls les enregistrements correspondant à cette clause where sont calculés. Si la clause where reste vide, tous les enregistrements sont calculés. Pour plus d’informations sur la syntaxe SQL reportez-vous à la rubrique Référence SQL pour les expressions de requête utilisées dans ArcGIS.

Value Table
Bloc de code
(Facultatif)

Bloc de code à utiliser pour des expressions complexes.

Une fonction ne permet pas de renvoyer plusieurs valeurs.

String
Appliquer des domaines
(Facultatif)

Indique si les règles de domaine de champs sont appliquées.

  • Activée : les règles de domaine de champ sont appliquées. Si un champ ne peut pas être mis à jour, sa valeur reste inchangée et les messages de l’outil incluent un message d’avertissement.
  • Désactivée : les règles de domaine de champ ne sont pas appliquées. Il s’agit du paramètre par défaut.
Boolean

Sortie obtenue

ÉtiquetteExplicationType de données
Table en sortie

Table mise à jour.

Table View; Raster Layer; Mosaic Layer

arcpy.management.CalculateFields(in_table, expression_type, fields, {code_block}, {enforce_domains})
NomExplicationType de données
in_table

Table contenant les champs qui sont mis à jour avec les nouveaux calculs.

Table View; Raster Layer; Mosaic Layer
expression_type

Précise le type d’expression qui est utilisé.

  • PYTHON3Le type d’expression Python est utilisé.
  • ARCADELe type d’expression Arcade est utilisé.
  • SQLLe type d’expression SQL est utilisé.
  • VBLe type d’expression VBScript sera utilisé.

Si l’entrée est un service d’entités, le type d’expression par défaut est SQL. Pour les autres types d’entrée, le type d’expression par défaut est PYTHON3.

Pour en savoir plus sur les expressions Python, consultez les exemples d’utilisation de l’outil Python Calculer un champ.

Pour en savoir plus sur les expressions Arcade, reportez-vous au guide ArcGIS Arcade.

Pour en savoir plus sur les expressions SQL, reportez-vous à la rubrique Calculer des valeurs de champ.

Pour en savoir plus sur les expressions VBScript, reportez-vous à la rubrique Exemples VBScript d’utilisation de l’outil Calculer un champ.

String
fields
[[Field Name, Expression, {Where Clause}],...]

Champs à calculer, leurs expressions et une clause where.

L’expression SQL facultative permet de sélectionner un sous-ensemble d’enregistrements. Seuls les enregistrements correspondant à cette clause where sont calculés. Si la clause where reste vide, tous les enregistrements sont calculés. Pour plus d’informations sur la syntaxe SQL reportez-vous à la rubrique Référence SQL pour les expressions de requête utilisées dans ArcGIS.

Value Table
code_block
(Facultatif)

Bloc de code à utiliser pour des expressions complexes.

Une fonction ne permet pas de renvoyer plusieurs valeurs.

String
enforce_domains
(Facultatif)

Indique si les règles de domaine de champs sont appliquées.

  • ENFORCE_DOMAINSLes règles de domaine de champ sont appliquées.
  • NO_ENFORCE_DOMAINSLes règles de domaine de champ ne sont pas appliquées. Il s’agit de l’option par défaut.
Boolean

Sortie obtenue

NomExplicationType de données
out_table

Table mise à jour.

Table View; Raster Layer; Mosaic Layer

Exemple de code

Exemple 1 d’utilisation de la fonction CalculateFields (fenêtre Python)

Le script ci-dessous pour la fenêtre Python illustre l’utilisation de la fonction CalculateFields en mode immédiat avec le type d’expression Python.

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.management.CalculateFields("parcels", "PYTHON3", 
                                 [["xCentroid", "!SHAPE.CENTROID.X!"], 
                                  ["yCentroid", "!SHAPE.CENTROID.Y!"]])
Exemple 2 d’utilisation de la fonction CalculateFields (fenêtre Python)

Le script ci-dessous pour la fenêtre Python illustre l’utilisation de la fonction CalculateFields en mode immédiat avec le type d’expression SQL.

import arcpy
arcpy.management.CalculateFields("<a feature service url>", "SQL", 
                                 [["ceiling_field", "CEILING(field1)"], 
                                  ["floor_field", "FLOOR(field1)"]])
Exemple 3 d’utilisation de la fonction CalculateFields (fenêtre Python)

Le script ci-dessous pour la fenêtre Python illustre l’utilisation de la fonction CalculateFields en mode immédiat avec le type d’expression Arcade.

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.management.CalculateFields(
    "parcels", "ARCADE", 
    [["max_value", "Max($feature.field1, $feature.field2)"], 
     ["min_value", "Min($feature.field1, $feature.field2)"]])

Rubriques connexes