Suite

Renvoyer la classe d'entités de la boîte à outils Python


J'essaie de renvoyer une classe d'entités (mes exemples de données sont un polygone fc) à partir d'une boîte à outils Python et je ne trouve aucune information sur ce que je dois définir pour que cela fonctionne. Cela fonctionne avec succès et me donne un nombre d'enregistrements de 917 mais dans ArcCatalog dans la fenêtre de résultatsen dehors: (et l'icône ressemble à une table et non à une classe d'entités surfaciques).

import arcpy class Toolbox(object): def __init__(self): self.label='BasicOutput' self.alias='BasicOutput' self.description='BasicOutput' self.summary=self.description # Liste des classes d'outils associées à ce toolbox self.tools=[BasicOutput] class BasicOutput(object): def __init__(self): """Définir l'outil (le nom de l'outil est le nom de la classe).""" self.label='BasicOutput' self.description ='BasicOutput' self.summary=self.description def getParameterInfo(self): ps=[ arcpy.Parameter( displayName="out", name="out", datatype="GPFeatureRecordSetLayer", parameterType="Derived", direction= "Sortie"), ] return ps def updateParameters(self,parameters): return def updateMessages(self,parameters): return def execute(self,parameters,messages): fs=arcpy.FeatureSet() fs.load(r'D :customAppsPaddockGRASPBasicOutput.gdb/Cadastre') arcpy.AddMessage('record count : %s'%arcpy.GetCount_management(fs)) parameters[0].value=fs

Je le publierai ensuite en tant que service GP sur le serveur ArcGis, mais je ne peux même pas le faire fonctionner dans ArcCatalog ! Utilisation d'ArcGis 10.2.1.


TLDR : Modifierparamètres[0].value=fsàarcpy.SetParameterAsText(0,fs)

EDIT : après quelques tests mineurs, on diraitarcpy.SetParameterfonctionne aussi.

EDIT2 : Oups, je viens de remarquer que j'ai également changé le type de données enDEFeatureClass.

OK, après de nombreuses heures à essayer diverses choses et à parcourir des forums sur des problèmes qui n'étaient pas les mêmes que les miens ou sur l'obtention de fonctionnalités en entrée au lieu de sortie, je suis tombé sur la solution simple (mais complètement peu intuitive pour moi). Malgré le nom de la fonctionSetParameterAsText, il définit en fait la valeur de retour pour ma classe d'entités - renvoie le chemin dans ArcCatalog à partir duquel je peux copier des entités et renvoie JSON lorsqu'il est publié en tant que GPService.