Suite

Créer une boîte à outils Python (*.pyt) ?

Créer une boîte à outils Python (*.pyt) ?


Je voudrais créer un nouveau shapefile basé sur l'entrée.

Mon entrée est le paramètre DATE. Voici mon code pour le paramètre d'entrée :

param = arcpy.Parameter( displayName="TARIKH", name="date_feature", datatype="Date", parameterType="Required", direction="Input")

puis la valeur de ce paramètre sera analysée à l'aide de ce code :

out_path = "C:/Last" geometry_type = "POLYGON" out_name = #DATEINPUT result = arcpy.CreateFeatureclass_management(out_path, out_name,geometry_type)

Le point principal est que je ne sais pas comment saisir tout ce code dans le code de la boîte à outils.

#

Ceci est le code complet que je ne sais pas où mettre et quoi insérer dans une boîte à outils .pyt

import arcpy arcpy.env.overwriteOutput = True class Toolbox(object): def __init__(self): """Définir la toolbox (le nom de la toolbox est le nom du fichier .pyt).""" self.label = "Toolbox" self.alias = "" # Liste des classes d'outils associées à cette toolbox self.tools = [Tool] class Tool(object): def __init__(self): """Définir l'outil (le nom de l'outil est le nom de la classe).""" self.label = "Tool" self.description = "" self.canRunInBackground = False def getParameterInfo(self): """Define parameters definitions""" param = arcpy.Parameter( displayName="TARIKH ", name="date_feature", datatype="Date", parameterType="Required", direction="Input") #date_features.filter.list = ["Point","Polyline","Polygon"] #params = [ date_features] return 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. Ceci méthode est appelée chaque fois qu'un paramètre a été modifié.""" self.param[0] = date_feature print "Votre nouveau shapefile a été créé avec succès" out_path = "C:/Last" geometry_type = "POLYGON" out_name = date_features result = arcpy.CreateFeatureclass_management(out_path, out_name,geometry_type) return def updateMessages(self, parameters): """Modifier les messages créés par validation interne pour chaque paramètre d'outil. Cette méthode est appelée après validation interne.""" return def execute(self, parameters, messages): """Le code source de l'outil.""" return

La réponse courte est de déplacer ce que vous aviez dans updateParameters pour l'exécuter. Ce qui serait autrement un script python autonome y va. Correction d'autres problèmes dans votre code également, cela devrait être fonctionnel (conservez tout avant getParameterInfo comme vous l'aviez) :

def getParameterInfo(self): param = arcpy.Parameter( displayName="TARIKH", name="date_feature", datatype="Date", parameterType="Required", direction="Input") params = [param] #fait un liste de vos paramètres return params #renvoie votre liste pour une utilisation future def isLicensed(self): return True def updateParameters(self, parameters): return def updateMessages(self, parameters): return def execute(self, params, messages): # notez que params est répertorié date_feature = params[0].valueAsText # obtient la première valeur de votre liste sous forme de texte out_name = date_feature.replace("/", "") #supprime la mise en forme de la barre oblique de la chaîne out_path = "C:/Last" geometry_type = "POLYGON" arcpy.CreateFeatureclass_management(out_path, out_name, geometry_type) arcpy.AddMessage("Votre nouveau shapefile a été créé avec succès") return

Autres ressources pour apprendre .pyt : ESRI propose un webinaire gratuit et une documentation qui peut vous être utile.