J'ai travaillé sur la façon de le faire, mais de manière assez simple. Je voulais créer un paramètre à valeurs multiples dans lequel j'ajoute de nombreux FeatureLayers, puis je choisis un champ ID pour chaque couche. Je l'ai fait fonctionner mais je n'ai pas réussi à faire du champ une liste déroulante, donc un utilisateur doit entrer un nom de champ manuellement. Voici l'interface:
Si quelqu'un a réussi à résoudre ce problème ou qu'un gourou d'ESRI nous bénit avec ses connaissances, j'aimerais savoir comment transformer ma deuxième colonne (ID de site) en une liste déroulante, répertoriant des champs spécifiques. Si vous voulez voir un exemple de cela, jetez un œil à l' outil Créer un TIN .
Quoi qu'il en soit, pour créer cette interface, je crée un outil de script et j'ajoute un paramètre de type couche d'entités et le définit sur plusieurs valeurs comme indiqué ci-dessous.
J'ai ensuite cliqué sur l'onglet Validation en haut puis sur le bouton Modifier. Comme ce paramètre est le 6ème paramètre de mon outil de script, j'ai mis à jour le code suivant:
def initializeParameters(self):
"""Refine the properties of a tool's parameters. This method is
called when the tool is opened."""
# Get the 6th parameter
param = self.params[6]
param.datatype = "Value Table"
param.columns = [["Feature Layer","Activity Layer"],["Field","Site ID"]]
return
Cela réinitialise l'interface dans la table multi-colonnes que je voulais. Lorsque vous utilisez GetParameterAsText, il renvoie ce qui suit à l'aide de mon exemple:
pipeline pid;Dredging did
J'ai fait quelques recherches supplémentaires et j'ai créé l'outil à l'aide d'une boîte à outils python. Cela fonctionne très bien mais a une limitation si vous revenez en arrière et choisissez un autre ID. J'ai publié le code sur GeoNet ici .