Suite

Obtenir le paramètre défini dans un outil vers un autre outil dans la même boîte à outils Python ?

Obtenir le paramètre défini dans un outil vers un autre outil dans la même boîte à outils Python ?


C'est ce que je recherche :

  1. Créez deux outils dans Python Toolbox : Tool1 et Tool2 (je suis capable de le faire)
  2. Je veux définir un paramètre dans Tool2 dont la valeur dépend du paramètre entré par l'utilisateur dans Tool1.

Comment puis je faire ça? Tool1 peut-il être appelé dans Tool2 et Tool2 obtient automatiquement la valeur du paramètre entré par l'utilisateur dans Tool1 ? Je souhaite utiliser la valeur du paramètre entrée par l'utilisateur dans Tool1 pour définir un espace de travail dans def getParameterInfo(self): dans Tool2.


Une solution serait de créer un modèle dans ModelBuilder. Vous pouvez faire glisser et déposer vos deux outils dans le modèle, puis les connecter comme vous le souhaitez en fonction de votre flux de travail, c'est-à-dire que la sortie de l'outil 1 devient une entrée pour l'outil 2.

Si, comme cela semble dans votre cas, l'utilisateur spécifie un paramètre pour l'outil 1 que vous souhaitez également utiliser dans l'outil 2, alors dans votre modèle, vous pouvez créer une variable (cliquez avec le bouton droit dans la fenêtre ModelBuilder et sélectionnez Créer une variable), appelons-le InVar, qui contiendra l'entrée des utilisateurs. Vous devrez choisir un type pour cette variable, par ex. Classe d'entités, expression SQL, dossier, etc.

Vous pouvez ensuite connecter cet InVar à l'outil 1 et à l'outil 2 et sélectionner le paramètre qu'il deviendra pour chaque outil, par ex. Ensemble de données de sortie, expression, dossier de sortie. Cela dépendra de vos paramètres pour vos deux outils.

Ensuite, vous devez définir les paramètres de votre modèle afin que lors de son exécution, il invite l'utilisateur à attribuer des valeurs à ces paramètres via une boîte de dialogue - tout comme les autres outils.

Cliquez avec le bouton droit sur un élément de modèle (par exemple, jeu de données d'entrée/sortie ou InVar) et choisissez Paramètre de modèle pour en faire un paramètre - la lettre « P » apparaîtra au-dessus de l'élément. Dans ce cas, faites InVar un paramètre.

Lorsque vous êtes satisfait de votre modèle, enregistrez-le dans une boîte à outils. Pour exécuter le modèle, double-cliquez sur l'outil que vous venez de créer et la boîte de dialogue habituelle s'affichera pour entrer vos paramètres.

Comme je ne connais pas les détails de vos deux outils ou du flux de travail, il est difficile d'entrer dans trop de détails, mais c'est l'essentiel.

Pour plus d'informations (et quelques tutoriels) sur ModelBuilder, consultez les pages de ressources ESRI car elles fournissent un aperçu assez approfondi de la création de modèles : http://resources.arcgis.com/en/help/main/10.2/#/What_is_ModelBuilder /002w00000001000000/.

Mettre à jour

Dans le graphique suivant, j'ai mis en place un modèle dans lequel la sortie d'un outil (outil 1) devient l'entrée dans un autre (outil 2), et j'ai créé InVar, une variable d'espace de travail, comme décrit ci-dessus.

Ensuite, à l'aide de l'outil Connecter (), j'ai connecté InVar à l'outil 1 et à l'outil 2. Puisque vous avez mentionné que vous vouliez qu'InVar devienne la variable d'environnement de l'espace de travail dans l'outil 2, j'ai sélectionné Environnements - Espace de travail actuel lors de la connexion (comme indiqué dans le graphique).

De plus, j'ai créé les paramètres de modèle Invar et InFeatures comme décrit précédemment.


Créez un outil de script à partir duquel Tool1 et Tool2 sont exécutés.

Vous avez déclaré que vous pouvez créer vos deux outils, alors créez simplement un troisième outil qui importe ces outils de script, prend le paramètre requis, le transmet à l'outil de script 1, puis le transmet à l'outil de script 2.

Le nouveau script ne nécessiterait vraiment que quelques lignes de code - importez la boîte à outils, obtenez le paramètre, appelez l'outil 1, appelez l'outil 2