Résumé
Dans ArcGIS Pro, les expressions Python permettent de calculer le pourcentage d’une valeur de champ à partir d’un champ spécifié.Cet article décrit un exemple et des instructions utilisant des expressions Python pour calculer le pourcentage de la population de chaque district de Hong Kong et créer un nouveau champ dans ArcGIS Pro.
L’image ci-dessous représente la table attributaire PopDis2021 de la population de chaque district de Hong Kong.
Procédure
- Cliquez avec le bouton droit sur la classe d’entités dans la fenêtre Contents (Contenu) et choisissez Attribute Table (Table attributaire) pour ouvrir la table attributaire de la classe d’entités.
- Cliquez sur Calculate (Calculer) pour ouvrir l’outil Calculate Field (Calculer un champ).
Note:
Refer to ArcGIS Pro: Calculate Field (Data Management) for more information on the parameters in the Calculate Field tool.
- Dans la boîte de dialogue Calculate Field (Calculer un champ), configurez les paramètres suivants :
- Pour Input Table (Table en entrée), sélectionnez la classe d’entités.
- Pour Field Name (Existing or New) (Nom du champ [existant ou nouveau]), sélectionnez le champ à mettre à jour ou créer un champ. Dans cet exemple, le champ « Percentage (Pourcentage) » est créé.
- Pour Field Type (Type de champ), sélectionnez un champ de type entier. Dans cet exemple, le type « Double (64-bit floating point) (Double [virgule flottante 64 bits]) » est sélectionné.
- Pour Expression Type (Type d’expression), sélectionnez Python 3.
- Spécifiez l’expression suivante dans le premier bloc de code. Dans cet exemple, « <fieldName1> » est remplacé par Number_of_Persons (Nombre_de_Personnes).
update(!<fieldName1>!)
- Spécifiez l’expression Python suivante dans Code Block (Bloc de code) :
- Définissez la méthode update(). Dans cet exemple, « <varName> » est remplacé par numbPersons (nombrePersonnes).
def update(<varName>):
Note:
The following procedure must all be within the same indented code block. Refer to the full script sample for clarification.
- Importez le module ArcPy et créez un paramètre de tableau vide.
import arcpy
list = []
- Créez une boucle pour exécuter la fonction SearchCursor() afin d’insérer tous les champs dans le paramètre de tableau à l’étape 3(f)(ii).
with arcpy.da.SearchCursor(r"<featureClassPath>", ["<fieldName1>"]) as cursor:
for row in cursor:
list.append(row[0])
- Calculez la somme de la valeur. Dans cet exemple, « <varName1> » est remplacé par S.
<varName1> = sum(list)
- Spécifiez l’instruction suivante pour renvoyer le pourcentage de la valeur de champ.
return <varname> / <varname1> * 100
Le bloc de code ci-dessous est un exemple de l’expression complète.
def update(numbPersons):
import arcpy
list = []
with arcpy.da.SearchCursor(r"C:\Users\ISC-Testing\Documents\29398 calculate percentage\29398 calculate percentage.gdb\PopDist2021", ["Number_of_Persons"]) as cursor:
for row in cursor:
list.append(row[0])
S = sum(list)
return numbPersons / S * 100
- Cliquez sur Verify (Vérifier) pour exécuter un test de l’expression. Si l’expression est valide, cliquez sur OK.
L’image ci-dessous représente le champ « Percentage (Pourcentage) » ajouté à la table attributaire « PopDist2021 ».