Définition 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 (_).

Création d'un nouveau paramètre

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.

Définition du type de données d'un paramètre

Chaque paramètre comporte des propriétés supplémentaires que vous pouvez définir, comme illustré ci-dessous.

Propriétés du paramètre

Propriété

Description

Type

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.

Direction

Peut être Input ou Output. Si le Type du paramètre est Derived, la direction est toujours Output.

Multivalue

La valeur est Oui si vous voulez une liste de valeurs, Non si vous voulez une seule valeur.

Par défaut ou structure

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.

Environnement

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.

Filter

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.

Obtained from

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.

Symbologie

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.

Propriétés du paramètre

Type

Trois options sont disponibles pour Type :

RemarqueRemarque :

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é, ou 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.

Outil sans sortie dans ModelBuilder

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

Outil avec sortie dérivée

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.

Données dérivées en sortie qui ne sont pas obtenues à partir d'un paramètre en entrée

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.

Les deux types de contrôles à valeurs multiples sont illustrés ci-dessous.

Contrôles à valeurs multiples

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.

Jeux d'entités et d'enregistrements

Pour en savoir plus sur les Jeux d'entités et d'enregistrements, cliquez sur les liens ci-dessous.

Rubrique

Description

Objets FeatureSet et RecordSet

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.

Rubriques sur les jeux 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.

Sélection d'un paramètre d'environnement

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

Une liste des types de classe d'entités autorisés : "Point", "Multi-points", "Polyligne", "Polygone", "MultiPatch", "Sphère", "Annotation", "Dimension". Plusieurs valeurs peuvent être appliquées au filtre.

Fichier

Liste de suffixes de fichier. Exemple : "txt; e00; ditamap".

Champ

Une liste de types de champs autorisés : "Court", "Long", "Réel simple", "Réel double", "Texte", "Date", "OID", "Géométrie", "Blob", "Raster", "GUID", "ID global", "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.

Type de filtre et valeurs

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 en fournissant la logique de validation.

Pour en savoir plus sur la logique de validation

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.

Spécification d'un filtre de fichier

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", "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 ArcInfo, 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 :

Obtained From pour un type de données de champ

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

Le jeu de données réseau qui contient les informations de hiérarchie.

Table de valeurs géostatistiques

Couche géostatistique

Couche d'analyse contenant des tables

Types de données de la propriété Obtenu à partir de

Symbologie

Si la sortie de votre outil est une couche de jeu d'entités, raster, de TIN ou 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.

RemarqueRemarque :

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.


7/10/2012