Implémentation du paramètre MultiValue avec plusieurs colonnes avec Python et ArcGIS Desktop?


10

Je travaille sur un script Python ArcGIS (9.3). L'une des entrées est une liste de fonctionnalités. Pour chaque fonctionnalité, je dois sélectionner un champ correspondant. La définition du paramètre sur MultiValue donne un joli tableau dans l'interface utilisateur pour toutes les fonctionnalités en cours de traitement. Comment ajouter une autre colonne à la table MultiValue pour sélectionner un champ pour chaque fonctionnalité?

Publication croisée: http://forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multiple-Columns

Réponse d'Esri sur le forum ArcGIS:

Malheureusement, la solution pour cela a été implémentée récemment pour 10.1 avec des entrées ValueTable pour les outils de script. Vous aurez besoin d'avoir deux paramètres à valeurs multiples avec une validation personnalisée pour que cela fonctionne pour 9.3.1.


Si c'est la génération d'une liste de choix à valeurs multiples qui vous intéresse - j'ai vu ce billet de blog Esri récemment, cela pourrait être utile.
Alex Tereshenkov

Réponses:


1

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:

Exemple d'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.

Réglage initial de l'interface

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 .


0

si vous recherchez une liste déroulante pour le paramètre d'ID de site, vous pouvez utiliser un code comme suit:

 param.filters[1].list = ['pid', 'id']

Ainsi, vous pouvez créer un curseur ou utiliser une autre méthode pour lire tous les champs du FC et les passer, sous forme de liste, à la phrase précédente

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.