Définition des paramètres des outils de script
Presque tous les outils possèdent des paramètres. Vous pouvez définir leurs valeurs dans la boîte de dialogue de l'outil ou à partir d'un script. Lorsque l'outil est exécuté, les valeurs du paramètre sont envoyées au code source de l'outil. Votre outil lit ces valeurs et poursuit son travail.
Pour en savoir plus sur les paramètres, consultez la rubrique Présentation des paramètres des outils de script.
Les paramètres d'outil de script peuvent être définis lors de l'utilisation de l'Assistant Ajouter un script. Vous pouvez également ajouter, supprimer et modifier des paramètres d'outil de script à partir de la boîte de dialogue Propriétés d'un outil. Pour accéder aux propriétés de l'outil de script, cliquez avec le bouton droit sur l'outil, cliquez sur Propriétés, puis sur l'onglet Paramètres.
Que vous définissiez les paramètres dans l'Assistant Ajouter un script ou dans la boîte de dialogue Propriétés, la procédure (telle que décrite ici) est la même.
Pour ajouter un nouveau paramètre, cliquez sur la première cellule vide dans la colonne Nom complet et saisissez le nom du paramètre. Il s'agit du nom qui sera affiché dans la boîte de dialogue de l'outil. Il peut contenir des espaces. Pour la syntaxe Python, le nom du paramètre sera le nom complet avec les espaces remplacés par des traits de soulignement (_).
Après avoir saisi le nom complet du paramètre, sélectionnez un type de données pour le paramètre en cliquant dans la cellule Type de données, comme illustré ci-dessous.
Chaque paramètre comporte des propriétés supplémentaires que vous pouvez définir, comme illustré ci-dessous.
Propriété |
Description |
---|---|
Peut être Required, Optional ou Derived. Dérivé signifie que l'utilisateur de l'outil ne saisit pas de valeur pour le paramètre. Les types Derived sont toujours des paramètres en sortie. |
|
Peut être Input ou Output. Si le Type du paramètre est Derived, la direction est toujours Output. |
|
La valeur est Oui si vous voulez une liste de valeurs et Non si vous voulez une seule valeur. |
|
La valeur par défaut du paramètre. Lorsque le type de données du paramètre est un jeu d'entités ou un jeu d'enregistrements, Par défaut est remplacé par structure. |
|
Si la valeur par défaut du paramètre provient d'un paramètre d'environnement, cette propriété contient le nom du paramètre d'environnement. |
|
Si vous voulez que certains jeux de données ou valeurs uniquement soient saisis pour un paramètre, vous pouvez spécifier un filtre. Il y a six types de filtres. Le type de filtre que vous pouvez sélectionner dépend du type de données du paramètre. |
|
Cette propriété s'applique aux paramètres en sortie dérivés et aux types de données de paramètre en entrée. Pour les paramètres en sortie dérivés, la propriété Obtenu à partir de peut être définie sur le paramètre contenant la définition de la sortie. Pour les paramètres en entrée, Obtenu à partir de est défini sur le paramètre contenant les informations nécessaires pour l'entrée. |
|
Cette propriété s'applique uniquement aux paramètres en sortie. La valeur est l'emplacement d'un fichier de couches (.lyr) qui contient la symbologie permettant d'afficher la sortie. |
Type
Trois options sont disponibles pour Type :
- Un paramètre Required requiert une valeur en entrée de l'utilisateur. L'outil ne peut pas être exécuté tant que l'utilisateur ne fournit pas une valeur.
- Un paramètre Optional ne requiert pas de valeur de l'utilisateur.
- Un paramètre Dérivé est uniquement destiné aux paramètres en sortie (consultez la section Direction ci-dessous). Un paramètre en sortie dérivé ne s'affiche pas dans la boîte de dialogue de l'outil.
Il existe cinq cas d'utilisation pour un paramètre en sortie dérivé :
- La sortie est la même que l'entrée, comme pour Calculer un champ. L'outil Calculer un champ modifie les valeurs d'un champ particulier dans la table en entrée, il ne crée pas une nouvelle table ni ne modifie la structure de l'entrée. D'autres outils dont la sortie est la même que l'entrée sont disponibles dans la boîte à outils Editing.
- L'outil modifie la structure de l'entrée, comme pour Ajouter un champ. L'outil Ajouter un champ ajoute un champ à la table en entrée, il ne crée pas de nouvelle table en sortie.
- L'outil crée une sortie à l'aide des informations contenues dans d'autres paramètres, tels que l'outil Créer une classe d'entités. L'outil Créer une classe d'entités permet de spécifier l'espace de travail et le nom de la nouvelle classe d'entités. La classe d'entités est alors créée.
- L'outil génère une valeur scalaire contrairement à un jeu de données. CompterCompter, par exemple, génère une variable de type entier (le nombre d'enregistrements). Lorsque l'outil génère une valeur scalaire, la sortie est Derived.
- L'outil créera les données dans un emplacement connu. Par exemple, vous pouvez avoir un script qui met à jour une table existante dans un espace de travail connu. L'utilisateur n'a pas besoin de fournir cette table dans la boîte de dialogue ou dans des scripts.
Si votre outil de script a une sortie dérivée, vous devez définir la valeur du paramètre en sortie dérivé dans votre script à l'aide de la fonction SetParameterAsText().
Tous les outils doivent avoir des sorties
Tous les outils de script doivent avoir des paramètres en sortie afin de pouvoir être utilisés dans ModelBuilder. L'idée fondamentale de ModelBuilder est de connecter la sortie des outils aux entrées d'autres outils. Si votre outil de script ne comporte pas de paramètre en sortie, il est de peu d'utilité dans ModelBuilder. Au minimum, vous pouvez fournir en sortie un booléen contenant true si l'outil a été correctement exécuté, et false dans le cas contraire.
Une sortie dérivée qui modifie un paramètre en entrée
L'illustration ci-dessous montre un outil de script hypothétique, Mettre à jour les valeurs de champs, utilisé dans ModelBuilder. (Dans le cadre de cette description, l'outil Mettre à jour les valeurs de champs est utilisé par une organisation pour examiner le contenu d'un ensemble de champs de texte connus et permet de corriger les erreurs d'orthographe et de capitalisation.) L'outil Mettre à jour les valeurs de champs ne crée pas de nouvelle classe d'entités, mais il met à jour les valeurs des champs de la classe d'entités en entrée.
La configuration appropriée des paramètres de l'outil Mettre à jour les valeurs de champs est illustrée ci-dessous, dans laquelle Mettre à jour les valeurs de champs a un paramètre de classe d'entités en sortie dont la propriété Type a pour valeur Dérivé. Comme la sortie est identique à l'entrée de cet outil, la propriété Obtenu à partir de est définie sur le paramètre en entrée. (Obtenu à partir de utilise le nom du paramètre, à savoir le nom complet avec les espaces remplacés par des traits de soulignement.)
Une sortie dérivée qui ne modifie pas de paramètre en entrée
L'illustration suivante montre un outil différent, dont la sortie est dérivée, mais n'est pas obtenue à partir d'un paramètre en entrée (la propriété Obtenu à partir de n'est pas définie). Dans ce scénario, l'outil hypothétique Réinjecter les données dans le référentiel copie la classe d'entités en entrée vers un espace de travail connu (le référentiel), puis ajoute et renseigne un champ date/heure.
Définition de la valeur en sortie
Dans le modèle illustré ci-dessus, notez que l'outil Copier des entités est vide (blanc au lieu de jaune). Cela est dû au fait que la variable Entités en sortie, bien que verte, ne contient pas de valeur : le nom et l'emplacement des entités en sortie ne sont pas connus tant que l'outil n'a pas été exécuté. Dans ce cas, votre script doit spécifier la valeur en sortie en utilisant la fonction ArcPy SetParameterAsText(). La fonction SetParameterAsText() définit la valeur d'un paramètre en sortie à l'aide d'une chaîne de texte ou d'un objet, tel qu'une table de valeurs.
Il est possible de fournir une valeur pour la sortie avant l'exécution de l'outil en fournissant le code de validation de l'outil.
Pour en savoir plus sur la validation de l'outil
Voici un exemple de code qui utilise SetParameterAsText(), en se basant sur le travail effectué par le script Réinjecter les données dans le référentiel, décrit ci-dessus.
# Post data to Repository - copies the input features to the
# current repository, adding and populating a date
# field
#
# Import system modules and arcpy
#
import sys
import string
import os
import arcpy
# Get the value of the input parameter
#
inFC = arcpy.GetParameterAsText(0)
# Create the pathname to the output feature class.
# 1) get the name of the feature class
# 2) remove any file extension, such as ".shp"
# (we're copying to a geodatabase which doesn't
# allow file extensions, like .shp)
#
fcName = os.path.basename(inFC)
fcName = os.path.splitext(fcName)[0]
repository = "e:/repository/featuredata.gdb"
outFC = os.path.join(repository, fcName)
# Copy the input to the output, add the date field
#
arcpy.CopyFeatures_management(inFC, outFC)
arcpy.AddField_management(outFC, "PostDate", "DATE")
# Create a locale-specific string containing the current date
# and time, then calculate it into the PostDate field, adding
# the required quotes around the postTime string.
#
import time
postTime = time.strftime("%x %X")
arcpy.AddMessage(postTime)
qPostTime = "\"" + postTime + "\""
arcpy.CalculateField_management(outFC, "PostDate", qPostTime)
# Set output parameter
#
arcpy.SetParameterAsText(1, outFC)
Valeurs en sortie au lieu de données
Les exemples précédents montrent la sortie de jeux de données dérivés. Cependant, certains outils génèrent des valeurs à la place de jeux de données, tel que l'outil Compter, qui génère un type de données Long contenant le nombre de lignes dans une table. La génération de valeurs à la place de jeux de données est courante. Il se peut que certains de vos scripts effectuent une analyse de plusieurs jeux de données associés et ne génèrent rien de plus que quelques nombres, ou une valeur booléenne pass/fail.
Les paramètres en sortie qui contiennent des types de données de valeur (tels que Long ou Booléen) sont toujours Dérivé plutôt que Requis.
Direction
Cette propriété détermine si le paramètre est une entrée ou une sortie de l'outil.
Si le type de paramètre est Derived, la direction du paramètre est alors automatiquement définie sur sortie.
Valeurs multiples
Si votre paramètre doit pouvoir gérer une liste de valeurs plutôt qu'une seule, vous devez attribuer la valeur Oui à la propriété Valeurs multiples.
Dans les boîtes de dialogue d'outil, deux différents contrôles d'interface utilisateur sont utilisés pour les valeurs multiples, comme illustré ci-dessous.
- Une liste de cases à cocher est utilisée pour les champs et les chaînes, longs et doubles s'ils contiennent un filtre ValueList.
- Tous les autres types de données affichent le contrôle de paramètre à valeurs multiples.
Les deux types de contrôles à valeurs multiples sont illustrés ci-dessous.
Les valeurs multiples sont transmises à votre script en tant que chaînes séparées par des points-virgules. D'après l'illustration précédente, si l'utilisateur a sélectionné tous les types de routes, la valeur du paramètre serait Interstates;Primary roads;Secondary roads. Pour fractionner une chaîne délimitée, utilisez la méthode Python split(), comme indiqué dans l'exemple de code ci-dessous.
roadTypes = arcpy.GetParameterAsText(0)
roadTypeList = roadTypes.split(";")
# Process each road type
#
for rType in roadTypeList:
# rType contains an individual road type string (ex: "Interstates")
#
arcpy.AddMessage("Processing: " + rType)
Par défaut
La valeur par défaut est le contenu du paramètre lors de l'ouverture de la boîte de dialogue de l'outil de script. C'est également la valeur qui est utilisée si un # est entré pour le paramètre dans les scripts. Si vous ne spécifiez pas de valeur pour la propriété Par défaut, la valeur du paramètre reste vide lorsque la boîte de dialogue du script est ouverte. Si vous spécifiez une valeur pour cette propriété, la propriété Environnement est désactivée. Pour activer la propriété Environnement, effacez le contenu de la propriété Par défaut.
structure
Lorsque le type de données du paramètre en entrée est un Jeu d'entités ou un Jeu d'enregistrements, vous devez spécifier l'emplacement d'une structure qui définit les champs et le type de géométrie des entités à entrer. Une structure peut être une classe d'entités, une table ou un fichier de couches (.lyr).
A propos des jeux d'entités et d'enregistrements
Les types de données Jeu d'entités et d'enregistrements permettent la saisie interactive de données. Un Jeu d'entités permet à l'utilisateur de votre script de créer de façon interactive des entités dans ArcMap en cliquant sur la carte. Le Jeu d'enregistrements permet à votre utilisateur de créer de façon interactive des lignes dans une grille de table simple.
Pour en savoir plus sur les Jeux d'entités et d'enregistrements, cliquez sur les liens ci-dessous.
Rubrique |
Description |
---|---|
Cette rubrique décrit la manière d'utiliser les objets FeatureSet et RecordSet dans Python. |
|
Utilisation des contrôles d'entrée d'entités et d'enregistrements interactifs |
Cette rubrique décrit la manière d'utiliser des contrôles de jeu d'entités et d'enregistrements. |
Environnement
Vous pouvez définir la valeur par défaut d'un paramètre sur la valeur d'un paramètre d'environnement en cliquant avec le bouton droit sur la cellule située en regard de Environnement et en sélectionnant le nom du paramètre d'environnement. Lorsque vous sélectionnez un paramètre d'environnement, la propriété Par défaut est ignorée. Pour utiliser la propriété Par défaut au lieu de la propriété Environnement, effacez le contenu de la propriété Environnement en sélectionnant l'entrée vierge dans la liste déroulante.
Filtre
Si vous voulez que seuls certains types de jeux de données ou valeurs soient entrés pour un paramètre, vous pouvez spécifier un filtre. Cliquez sur la cellule à côté de Filtre et sélectionnez le filtre approprié dans la liste déroulante. Une boîte de dialogue s'ouvre où vous spécifiez les valeurs pour le filtre. Il y a six types de filtres. Le type de filtre que vous pouvez sélectionner dépend du type de données du paramètre.
Type de filtre |
Valeurs |
---|---|
Liste de valeurs |
Liste de valeurs de type chaîne ou numériques. Utilisé avec des types de données de paramètre String, Long, Double et Boolean. |
Plage |
Valeurs minimale et maximale. Utilisé avec les types de données Long et Double. |
Classe d'entités |
Liste des types de classe d'entités autorisés : Point, Multi-points, Polyligne, Polygone, MultiPatch, Sphère, Annotation et Dimension. Plusieurs valeurs peuvent être appliquées au filtre. |
Fichier |
Une liste de suffixes de fichier, par exemple, txt; e00; ditamap.. |
Champ |
Liste de types de champs autorisés : Court, Long, Réel simple, Réel double, Texte, Date, OID, Géométrie, Blob, Raster, GUID, GlobalID et XML. Plusieurs valeurs peuvent être appliquées au filtre. |
Espace de travail |
Liste des types d'espace de travail autorisés : Système de fichiers, Base de données locale ou Base de données distante. Plusieurs valeurs peuvent être appliquées. |
Vous pouvez généralement choisir un seul type de filtre. Seuls les types Long et Double ont deux options : Liste de valeurs et Plage.
Vous pouvez également définir des filtres à l'aide d'un programme Python en fournissant la classe ToolValidator d'un outil de script.
Liste de valeurs
Le filtre Liste de valeurs est très utile pour fournir un ensemble de mots-clés. De nombreux outils disposent d'un ensemble prédéfini de mots-clés, tels que le paramètre de type de champ figurant dans l'outil Ajouter un champ ou le paramètre Attributs de jointure de nombreux outils dans le Jeu d'outils Superposition.
Un filtre Liste de valeurs peut être utilisé pour les types de données Long et Double. Pour ces types, saisissez les valeurs numériques autorisées.
Si vous voulez que l'utilisateur soit en mesure de sélectionner plusieurs valeurs, définissez la propriété Valeurs multiples sur Oui.
Une Liste de valeurs peut être utilisée pour les types de données Boolean. Pour les types de données Boolean, la Liste de valeurs contient deux valeurs : True et False. La valeur True est toujours la première valeur dans la liste. Ces valeurs sont utilisées dans la ligne de commande pour spécifier la valeur. Prenez par exemple l'outil Ajouter un champ et les mots-clés {NULLABLE | NON_NULLABLE} utilisés pour la propriété IsNullable.
Plage
Un paramètre Long ou Double peut avoir un filtre Plage. Les filtres Plage ont deux valeurs, une valeur minimale et une valeur maximale. La première valeur de la liste est la valeur minimale. La plage est inclusive, les valeurs minimale et maximale sont donc des choix valides.
Classe d'entités
Pour ce filtre, sélectionnez une ou plusieurs valeurs de filtre. Les classes d'entités en entrée seront comparées aux valeurs de filtre. Par exemple, si vous sélectionnez uniquement la valeur de filtre Points, l'utilisateur peut uniquement saisir des classes d'entités ponctuelles comme valeur de paramètre.
Fichier
Le filtre de fichier contient une liste de suffixes acceptés par un fichier, tels que txt (fichier texte simple) et csv (valeurs séparées par des virgules). Le suffixe peut être n'importe quel texte : il n'a pas besoin d'être reconnu par ArcGIS. La longueur du suffixe est illimitée et les points ne sont pas acceptés.
Champ
Le filtre de champ définit les types de champs autorisés : Court, Entier long, Réel simple, Réel double, Texte, Date, OID, Géométrie, Blob, Raster, GUID, ID global et XML. Plusieurs valeurs peuvent être appliquées au filtre.
Espace de travail
Le filtre d'espace de travail spécifie les types d'espaces de travail en entrée autorisés. Trois valeurs sont disponibles :
- Système de fichiers
Un dossier système utilisé pour stocker des fichiers de formes, des couvertures, des tables INFO et des grilles
- Base de données locale
Une géodatabase fichier ou personnelle
- Base de données distante
Une connexion à une base de données ArcSDE
Obtenu à partir de
La propriété Obtained From a deux buts :
- Pour un paramètre en sortie dérivé, la propriété Obtenu à partir de est définie sur le paramètre en entrée qui sera modifié par l'outil. Pour plus d'informations sur les données dérivées et la propriété Obtenu à partir de, reportez-vous à la description de la propriété Type ci-dessus.
- Pour les paramètres en entrée, Obtenu à partir de contient le nom des autres paramètres utilisés par le type de données. Par exemple, pour un type de données de champ en entrée, la propriété Obtenu à partir de est définie sur le nom du paramètre de la table contenant les champs, comme illustré ci-dessous.
Vous pouvez uniquement définir Obtained From pour certains paramètres en entrée, comme indiqué dans le tableau ci-dessous.
Type de données en entrée |
Type de données de la propriété Obtained From |
Description |
---|---|---|
Champ ou expression SQL |
Table |
Table contenant les champs |
Elément INFO ou expression INFO |
Table INFO |
Table INFO contenant les attributs |
Classe d'entités de couverture |
Couverture |
Couverture contenant des entités |
Unités de surface ou unités linéaires |
Jeu de données géographiques |
Jeu de données géographiques utilisé pour déterminer les unités par défaut |
Système de coordonnées |
Espace de travail |
Espace de travail utilisé pour déterminer le système de coordonnées par défaut. |
Paramètres de hiérarchie Network Analyst |
Jeu de données réseau |
Jeu de données réseau contenant les informations de hiérarchie |
Table de valeurs géostatistiques |
Couche géostatistique |
Couche d'analyse contenant des tables |
Symbologie
Si la sortie de votre outil est une couche Extension ArcGIS Network Analyst, vous pouvez spécifier l'emplacement d'un fichier de couches (.lyr)) dans la propriété Symbologie. Lorsque votre outil est exécuté à partir d'ArcMap, ArcGlobe ou ArcScene, et que l'option Ajouter les résultats du géotraitement à l'affichage est activée, la sortie est ajoutée à la zone d'affichage et dessinée à l'aide de la symbologie définie dans le fichier de couches symbologie.
le fichier de couches est lu à chaque exécution de l'outil. Si le fichier de couches est introuvable (car il a été déplacé ou supprimé), la symbologie par défaut est utilisée.