ArcGIS for Desktop

  • Documentation
  • Tarification
  • Support

  • My Profile
  • Aide
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

La plateforme cartographique de votre organisation

ArcGIS for Desktop

Un SIG professionnel complet

ArcGIS for Server

SIG dans votre entreprise

ArcGIS for Developers

Outils de création d'applications de localisation

ArcGIS Solutions

Modèles d'applications et de cartes gratuits pour votre secteur d'activité

ArcGIS Marketplace

Téléchargez des applications et des données pour votre organisation.

  • Documentation
  • Tarification
  • Support
Esri
  • Se connecter
user
  • Mon profil
  • Déconnexion

Aide

  • Accueil
  • Commencer
  • Carte
  • Analyser
  • Gérer les données
  • Outils
  • Plus...

Calculer un champ

  • Récapitulatif
  • Utilisation
  • Syntaxe
  • Exemple de code
  • Environnements
  • Informations de licence

Récapitulatif

Calcule les valeurs d'un champ pour une classe d'entités, une couche d'entités ou un raster.

Afficher des exemples d'utilisation de l'outil Calculer un champ

Utilisation

  • Il est possible de créer des expressions Python à l'aide de propriétés de l'objet Géométrie, 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 surfaciques ou linéaires de mesure (par exemple, !shape.geodesicArea@hectares! ou !shape.geodesicLength@miles!).

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

  • Le calcul ne peut être appliqué qu'à un seul champ par opération.

  • Assurez-vous que cet outil respecte le paramètre d'environnement Etendue en sortie. Seules les valeurs de champs des entités comprises dans l'étendue seront calculées. Le paramètre d'environnement n'a aucune incidence sur les données non spatiales, comme les tables.

  • Les valeurs de champs existantes seront écrasées. Vous devez effectuer 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!).

    S'agissant des calculs VB, les noms de champs doivent être placés entre crochets ([fieldname]).

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

  • Cet outil peut également être utilisé pour mettre à jour des attributs de type caractère. Les expressions qui utilisent une chaîne de caractères doivent être délimitées par des guillemets simples ; par exemple, [CHARITEM] = 'NEW STRING'. Cependant, si la chaîne de caractères proprement dite contient déjà des guillemets simples, placez-la entre guillemets doubles ; par exemple, [CHARITEM] = "TYPE'A'".

  • 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.

  • La fonction arcgis.rand() est prise en charge par cet outil lorsqu'une expression Python est spécifiée. La fonction arcgis.rand() a été créée pour les outils ArcGIS et ne doit pas être confondue avec le module random Python. Vous trouverez la syntaxe des distributions disponibles pour la fonction arcgis.rand() à la section Syntaxe de distribution des valeurs aléatoires.

  • 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 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.

  • La mise en forme et le module math Python sont disponibles pour être utilisés dans le paramètre 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.

  • Les fichiers VB .cal enregistrés dans les versions précédentes d'ArcGIS peuvent fonctionner ou nécessiter des modifications minimes. Si vous avez du code VBA de versions passées qui utilise ArcObjects, vous devrez modifier vos calculs.

  • 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 calculs de champs avec un type VB Expression ne sont pas pris en charge sur les produits 64 bits, notamment ArcGIS for Desktop—Géotraitement en arrière-plan (64 bits) et ArcGIS for Server. Pour utiliser au mieux Calculer un champ dans ces produits, les expressions doivent être converties en Python, ou, dans le cas de Géotraitement en arrière-plan (64 bits), le traitement en arrière-plan peut être désactivé.

  • 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.

  • Exemples d'utilisation de l'outil Calculer un champ

Syntaxe

CalculateField_management (in_table, field, expression, {expression_type}, {code_block})
ParamètreExplicationType de données
in_table

Table en entrée contenant le champ qui sera mis à jour avec le nouveau calcul.

Raster Catalog Layer; Mosaic Layer; Raster Layer; Table View
field

Champ qui sera mis à jour avec le nouveau calcul.

Field
expression

Expression de calcul simple utilisée pour créer une valeur qui sera indiquée dans les lignes sélectionnées.

SQL Expression
expression_type
(Facultatif)

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

  • VB —L'expression sera écrite au format VB standard. Il s'agit de l'option par défaut.
  • PYTHON —L'expression sera écrite au format Python standard. Utiliser des propriétés et des méthodes de géoprocesseur revient à créer un géoprocesseur de version 9.2.
  • PYTHON_9.3 —L'expression sera écrite au format Python standard. Utiliser des propriétés et des méthodes de géoprocesseur revient à créer un géoprocesseur de version 9.3.
Attention :

Les calculs de champs avec un type VB Expression ne sont pas pris en charge sur les produits 64 bits, notamment ArcGIS Pro, ArcGIS for Desktop—Géotraitement en arrière-plan (64 bits) et ArcGIS for Server. Pour utiliser au mieux Calculer un champ dans ces produits, les expressions doivent être converties en Python, ou, dans le cas de Géotraitement en arrière-plan (64 bits), le traitement en arrière-plan peut être désactivé.

String
code_block
(Facultatif)

Permet de saisir un bloc de code pour des expressions complexes.

String

Exemple de code

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

Le script de fenêtre Python suivant illustre l'utilisation de la fonction CalculateField en mode immédiat.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.AddField_management("vegtable.dbf", "VEG_TYP2", "TEXT", "", "", "20")
arcpy.CalculateField_management("vegtable.dbf", "VEG_TYP2", 
                                '!VEG_TYPE!.split(" ")[-1]', "PYTHON_9.3")
Exemple CalculateField : calculer des centroïdes

Utilisez CalculateField pour affecter des valeurs de centroïde à de nouveaux champs.

# Name: CalculateField_Centroids.py
# Description: Use CalculateField to assign centroid values to new fields

# Import system modules
import arcpy

try: 
    # Set environment settings
    arcpy.env.workspace = "C:/data/airport.gdb"
 
    # Set local variables
    inFeatures = "parcels"
    fieldName1 = "xCentroid"
    fieldName2 = "yCentroid"
    fieldPrecision = 18
    fieldScale = 11
 
    # Add fields
    arcpy.AddField_management(inFeatures, fieldName1, "DOUBLE", 
                              fieldPrecision, fieldScale)
    arcpy.AddField_management(inFeatures, fieldName2, "DOUBLE", 
                              fieldPrecision, fieldScale)
 
    # Calculate centroid
    arcpy.CalculateField_management(inFeatures, fieldName1, 
                                    "!SHAPE.CENTROID.X!",
                                    "PYTHON_9.3")
    arcpy.CalculateField_management(inFeatures, fieldName2, 
                                    "!SHAPE.CENTROID.Y!",
                                    "PYTHON_9.3")
except Exception:
    e = sys.exc_info()[1]
    print(e.args[0])
Exemple CalculateField : calculer des plages

Utilisez CalculateField avec un bloc de code pour calculer des valeurs à partir de plages.

# Name: CalculateField_Ranges.py
# Description: Use CalculateField with a codeblock to calculate values
#  based on ranges

# Import system modules
import arcpy
 
# Set environment settings
arcpy.env.workspace = "C:/data/airport.gdb"
 
# Set local variables
inTable = "parcels"
fieldName = "areaclass"
expression = "getClass(float(!SHAPE.area!))"
codeblock = """def getClass(area):
    if area <= 1000:
        return 1
    if area > 1000 and area <= 10000:
        return 2
    else:
        return 3"""
 
# Execute AddField
arcpy.AddField_management(inTable, fieldName, "SHORT")
 
# Execute CalculateField 
arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON_9.3", 
                                codeblock)
Exemple CalculateField : calculer des valeurs aléatoires

Utilisez CalculateField pour affecter des valeurs aléatoires à un nouveau champ.

# Name: CalculateField_Random.py
# Description: Use CalculateField to assign random values to a new field

# Import system modules
import arcpy
 
# Set environment settings
arcpy.env.workspace = "C:/data/airport.gdb"
  
# Set local variables
inFeatures = "parcels"
fieldName = "RndValue"
expression = "arcgis.rand('Integer 0 10')"
 
# Execute AddField
arcpy.AddField_management(inFeatures, fieldName, "LONG")
 
# Execute CalculateField 
arcpy.CalculateField_management(inFeatures, fieldName, expression, "PYTHON_9.3")

Environnements

  • Espace de travail courant
  • Etendue

Informations de licence

  • ArcGIS for Desktop Basic: Oui
  • ArcGIS for Desktop Standard: Oui
  • ArcGIS for Desktop Advanced: Oui

Thèmes connexes

  • Vue d'ensemble du jeu d'outils Champs
Vous avez un commentaire à formuler concernant cette rubrique ?

ArcGIS for Desktop

  • Accueil
  • Documentation
  • Tarification
  • Support

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

A propos d'Esri

  • A propos de la société
  • Carrières
  • Blog des initiés
  • Conférence des utilisateurs
  • Sommet des développeurs
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | Confidentialité | Légal