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

Résumé

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

Utilisation

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

    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.

  • 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. Faites une copie de la table en entrée si vous souhaitez conserver les valeurs d’origine.

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

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

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

  • Pour calculer un champ afin qu'il soit une valeur numérique, entrez la valeur en question dans le paramètre Expression ; la valeur ne doit pas être placée entre guillemets.

  • Le paramètre Bloc de code vous permet de créer des expressions complexes. Vous pouvez saisir directement le bloc de code dans la boîte de dialogue ou sous la forme d'une chaîne continue dans des scripts. L'expression et le code de bloc sont connectés. Le code de bloc doit être associer à l’expression ; transmettez le résultat du code de bloc à l’expression.

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

  • La mise en forme et le module math de Python peuvent être utilisés 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.

  • Il est possible de créer des expressions Python à l’aide de propriétés de l’objet Geometry notamment type, extent, centroid, firstPoint, lastPoint, area, length, isMultipart et partCount (par exemple, !shape.area!).

  • Les expressions Python peuvent utiliser les propriétés géométriques area et length avec une unité surfacique ou linéaire pour convertir la valeur dans une autre unité de mesure (par exemple, !shape.length@kilometers!). Si les données sont stockées dans un système de coordonnées géographiques et qu'une unité linéaire est fournie (par exemple, les miles), la longueur sera calculée à l'aide d'un algorithme géodésique. L’utilisation d’unités surfaciques sur les données géographiques donnera des résultats douteux, car les degrés décimaux ne sont pas cohérents dans l’ensemble du globe.

    • Mots-clés d'unité de mesure surfacique :
      • ACRES | ARES | HECTARES | SQUARECENTIMETERS | SQUAREDECIMETERS | SQUAREINCHES | SQUAREFEET | SQUAREKILOMETERS | SQUAREMETERS | SQUAREMILES | SQUAREMILLIMETERS | SQUAREYARDS | SQUAREMAPUNITS | UNKNOWN
    • Mots-clés d'unité de mesure linéaire :
      • CENTIMETERS | DECIMALDEGREES | DECIMETERS | FEET | INCHES | KILOMETERS | METERS | MILES | MILLIMETERS | NAUTICALMILES | POINTS | UNKNOWN | YARDS
  • Les expressions Python peuvent servir à calculer la surface ou la longueur géodésique d’une entité à l’aide des propriétés geodesicArea ou geodesicLength combinées aux unités de mesure surfaciques ou linéaires (par exemple, !shape.geodesicArea@hectares! ou !shape.geodesicLength@miles!).

  • Lorsque vous calculez des données jointes, vous ne pouvez pas calculer directement les colonnes jointes. Vous pouvez toutefois calculer directement les colonnes de la table d'origine. Pour calculer les données jointes, vous devez commencer par ajouter les tables ou couches jointes à la carte. Vous pouvez alors effectuer séparément des calculs sur ces données. Ces modifications sont apportées aux colonnes jointes.

  • Les expressions Python qui tentent de concaténer les champs de type chaîne comprenant une valeur Null, ou qui se divisent par zéro, renvoient une valeur Null 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 nettement plus rapides.

    Seuls les services d’entités et les géodatabases d’entreprise prennent en charge les expressions SQL. En ce qui concerne 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 pour 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 versionnées ne sont pas prises en charge.
    • La possibilité d’annuler les opérations de géotraitement n’est pas pris en charge.

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

Syntaxe

arcpy.management.CalculateFields(in_table, expression_type, fields, {code_block})
ParamètreExplicationType de données
in_table

Table contenant les champs qui seront mis à jour avec le nouveau calcul.

Table View; Raster Layer; Mosaic Layer
expression_type

Précisez le type d'expression qui sera utilisé.

  • PYTHON3Type d’expression Python. Il s’agit de l’option par défaut.
  • ARCADEType d’expression Arcade.
  • SQLExpression SQL.

Pour en savoir plus sur les expressions Python, consultez les exemples d’utilisation de l’outil 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.

String
fields
[[Field Name, Expression],...]

Champs à calculer et leurs expressions.

Value Table
code_block
(Facultatif)

Bloc de code pour des expressions complexes.

Une fonction ne permet pas de renvoyer plusieurs valeurs.

String

Sortie dérivée

NomExplicationType de données
out_table

Tables mises à jour.

Vue tabulaire, couche raster, couche de mosaïque

Exemple de code

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

Le script de fenêtre Python ci-dessous 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.CalculateFields_management("parcels", "PYTHON3", 
                                 [["xCentroid", "!SHAPE.CENTROID.X!"], 
                                  ["yCentroid", "!SHAPE.CENTROID.Y!"]])
Exemple 2 d'utilisation de la fonction CalculateFields (fenêtre Python)

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

import arcpy
arcpy.CalculateFields_management("<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 de fenêtre Python ci-dessous 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.CalculateFields_management(
    "parcels", "ARCADE", 
    [["max_value", "Max($feature.field1, $feature.field2)"], 
     ["min_value", "Min($feature.field1, $feature.field2)"]])

Informations de licence

  • Basic: Oui
  • Standard: Oui
  • Advanced: Oui

Rubriques connexes