De nombreux outils de géotraitement disposent de paramètres en entrée qui acceptent plusieurs valeurs. Lorsque vous affichez la page de référence de l'outil ou ses modalités d'utilisation dans la fenêtre Python, dès lors que le paramètre figure entre crochets [ ], il peut accepter une liste de valeurs. Par exemple, l'outil Supprimer un champ accepte une liste de champs à supprimer et les modalités d'utilisation du paramètre s'affichent sous la forme [champ_à_supprimer,...]. Certains paramètres, tels que le paramètre entités_en_entrée de l'outil Agréger, acceptent une liste de listes. Ses modalités d'utilisation sont affichés sous la forme [[entités-en-entrée, {Classement}], ...].
Tout paramètre qui accepte une liste de valeurs (ou une liste de listes de valeurs) est un paramètre à valeurs multiples ; il accepte une ou plusieurs valeurs. Vous pouvez spécifier un paramètre à valeurs multiples de trois manières :
- comme une liste, où chaque valeur est un élément dans la liste,
- comme une chaîne, où les valeurs sont séparées par des points-virgule,
- comme un objet ValueTable, où les valeurs sont stockées dans une table virtuelle composée de lignes et de colonnes.
Des exemples correspondant à chaque manière sont répertoriés ci-dessous.
Comme une liste
Dans un script, les entrées à valeurs multiples peuvent être transmises en tant que liste. Une liste figure entre crochets et correspond à un type Python flexible.
Utilisation de l'outil DeleteFields à l'aide d'une liste Python pour le paramètre champ_à_supprimer
import arcpy
arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.DeleteField_management('roads', ['STREET_NAM', 'LABEL', 'CLASS'])
Utilisation de l'outil Agréger à l'aide d'une liste Python pour le paramètre entités_en_entrée
import arcpy
arcpy.env.workspace = 'C:/base/data/gdb'
arcpy.Union_analysis([['counties', 2],['parcels', 1]], 'state_landinfo')
Comme une chaîne
Votre script doit éventuellement utiliser une chaîne à valeurs multiples dans certains cas, car l'une des valeurs peut être retournée en tant que valeur en sortie d'un outil ou transmise en tant que paramètre en entrée pour votre script.
Utilisation de l'outil DeleteFields à l'aide d'une chaîne à valeurs multiples pour le paramètre champ_à_supprimer
import arcpy
arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.DeleteField_management('roads', 'STREET_NAM;LABEL;CLASS')
Utilisation de l'outil Agréger à l'aide d'une chaîne à valeurs multiples pour le paramètre entités_en_entrée
import arcpy
arcpy.env.workspace = 'C:/base/data/gdb'
arcpy.Union_analysis('counties 2;parcels 1', 'state_landinfo')
Avec ValueTable
Un objet ValueTable permet d'organiser des valeurs dans une table virtuelle composée de lignes et de colonnes. Vous spécifiez le nombre de colonnes lors de la création d'une table de valeurs. La valeur par défaut correspond à une seule colonne.
Utilisation de la fonction DeleteFields à l'aide d'un objet ValueTable pour le paramètre drop_field
import arcpy
arcpy.env.workspace = 'C:/base/county.gdb'
vt = arcpy.ValueTable()
vt.addRow('STREET_NAM')
vt.addRow('LABEL')
vt.addRow('CLASS')
arcpy.DeleteField_management('roads', vt)
Utilisation de la fonction Agréger à l'aide d'un objet ValueTable pour le paramètre in_features
import arcpy
arcpy.env.workspace = 'C:/base/data/gdb'
vt = arcpy.ValueTable(2)
vt.addRow('counties 2')
vt.addRow('parcels 1')
arcpy.Union_analysis(vt, 'state_landinfo')