Suite

Mettre à jour/actualiser la liste des paramètres dans Python Toolbox ?

Mettre à jour/actualiser la liste des paramètres dans Python Toolbox ?


J'utilise une boîte à outils python dans ArcGIS 10.2.2 et je souhaite une liste déroulante de toutes les versions parmi lesquelles la personne qui procède à la réconciliation peut choisir. (Et je ne veux pas inclure dbo.DEFAULT et DS.Draft). Mais cette liste est remplie juste après l'exécution d'un script pour créer la version de l'éditeur et si la boîte à outils Python n'est pas actualisée manuellement dans ArcMap, cette dernière version n'apparaît pas dans la liste.

J'ai regardé updateParameters, mais soit je l'écrivais de manière incorrecte, soit cela ne fonctionne pas car l'utilisateur ne modifie pas réellement un paramètre qui le déclenche.

Quoi qu'il en soit, je souhaite actualiser la liste au moment de l'exécution du script.

Puis-je utiliser updateParameters ou effectuer un rechargement ou quelque chose d'autre qui rendra la liste repeuplée ?

L'autre chose est que je pourrais changer l'ordre des paramètres et demander à l'utilisateur de taper d'abord ses initiales, ce qui serait alors une action de l'utilisateur qui pourrait déclencher le updateParmaters, mais je ne suis pas sûr que ce soit le problème et qui semble compliqué.

import sys, arcpy, os class Toolbox(object): def __init__(self): """Définir la toolbox (le nom de la toolbox est le nom du fichier .pyt).""" self.label = "EGDB Data Steward Version" self.alias = "" # Liste des classes d'outils associées à cette boîte à outils self.tools = [Prep] class Prep(object): def __init__(self): """Définir l'outil (le nom de l'outil est le nom de la classe).""" self.label = "Préparer pour la réconciliation et la publication" self.description = "Créer la version grand-père de l'éditeur pour DS" self.canRunInBackground = False def getParameterInfo(self): #Définir les définitions des paramètres params = [] # Premier paramètre param0 = arcpy.Parameter( displayName="Nom de la version de l'éditeur", name="editor_full_versionname", datatype="GPString", parameterType="Required", direction="Input") param0.filter.type = "ValueList" param0.filter.list = [v.name for v in arcpy.da.ListVersions(r"inpyosegis05DatabaseConnectionFilesDataStewardsOnlyYOSEGIS_VectorYOSE_DS.sde") si v.name n'est pas dans ["dbo.DEFAULT", "DS. Brouillon"]] #Take DE FAULT et Draft dans la liste déroulante comme choix. # Second paramètre param1 = arcpy.Parameter( displayName="Data Steward's Initials", name="DS_initials", datatype="GPString", parameterType="Required", direction="Input") params = [param0, param1] return params def isLicensed(self): """Définir si l'outil est autorisé à s'exécuter.""" return True def updateParameters(self, parameters): """Modifier les valeurs et les propriétés des paramètres avant que la validation interne ne soit effectuée. Cette méthode est appelée chaque fois qu'un paramètre a été modifié.""" param0 = arcpy.Parameter( displayName="Nom de la version de l'éditeur", name="editor_full_versionname", datatype="GPString", parameterType="Required", direction="Input") param0. filter.type = "ValueList" param0.filter.list = [v.name pour v dans arcpy.da.ListVersions(r"inpyosegis05DatabaseConnectionFilesDataStewardsOnlyYOSEGIS_VectorYOSE_DS.sde") si v.name pas dans ["dbo .DEFAULT", "DS.Draft"]] #Retirez DEFAULT et Draft de la liste déroulante comme choix. revenir

Essayez ce qui suit :

def updateParameters(self, parameters): if parameters[0].value: parmeters[0].filter.list = [v.name for v in arcpy.da.ListVersions(r"inpyosegis05DatabaseConnectionFilesDataStewardsOnlyYOSEGIS_VectorYOSE_DS. sde") si v.name n'est pas dans ["dbo.DEFAULT", "DS.Draft"]] return