import arcpy try: arcpy.env.workspace = "in_memory" # Get parameters Input_Features = arcpy.GetParameterAsText(0) Buffers = arcpy.CreateUniqueName("Buffer") # Perform buffer arcpy.Buffer_analysis(Input_Features, Buffers, "100 Feet", "FULL", "ROUND", "NONE", "") OutFeatureSet = arcpy.FeatureSet() OutFeatureSet.load(Buffers) arcpy.SetParameter(1, OutFeatureSet) except Exception, ErrorDesc: sErr = "ERROR:\n" + str(ErrorDesc) arcpy.AddError(sErr)
import arcpy import os class Toolbox(object): def __init__(self): self.label = "Runtime Tools" self.alias = "" # List of tool classes associated with this toolbox self.tools = [BufferTest] class BufferTest(object): def __init__(self): self.label = "Buffer Test" self.description = "Create buffers" self.canRunInBackground = False def getParameterInfo(self): params = [] param0 = arcpy.Parameter( displayName = "Input Features", name = "inputFeatures", datatype = "Feature Set", parameterType = "Required", direction = "Input") param0.value = os.path.join(os.path.dirname(__file__), "FC_Templates.gdb\PointTemplate") params.append(param0) param1 = arcpy.Parameter( displayName = "Buffers", name = "buffers", datatype = "Feature Set", parameterType = "Derived", direction = "Output") params.append(param1) return params def execute(self, parameters, messages): try: arcpy.env.workspace = "in_memory" # Get parameters Input_Features = parameters[0].valueAsText Buffers = arcpy.CreateUniqueName("Buffer") # Perform buffer arcpy.Buffer_analysis(Input_Features, Buffers, "100 Feet", "FULL", "ROUND", "NONE", "") OutFeatureSet = arcpy.FeatureSet() OutFeatureSet.load(Buffers) # parameters[1] = OutFeatureSet arcpy.SetParameter(1, OutFeatureSet) except Exception, ErrorDesc: sErr = "ERROR:\n" + str(ErrorDesc) messages.addErrorMessage(sErr) return
def execute(self, parameters, messages): try: arcpy.env.workspace = "in_memory" # Get parameters Input_Features = parameters[0].valueAsText Buffers = arcpy.CreateUniqueName("Buffer") # Perform buffer arcpy.Buffer_analysis(Input_Features, Buffers, "100 Feet", "FULL", "ROUND", "NONE", "") # OutFeatureSet = arcpy.FeatureSet() # OutFeatureSet.load(Buffers) parameters[1].value = Buffers except Exception, ErrorDesc: sErr = "ERROR:\n" + str(ErrorDesc) messages.addErrorMessage(sErr) return
import arcpy import os class Toolbox(object): def __init__(self): self.label = "Runtime Tools" self.alias = "" # List of tool classes associated with this toolbox self.tools = [BufferTest] class BufferTest(object): def __init__(self): self.label = "Buffer Test" self.description = "Create buffers" self.canRunInBackground = False def getParameterInfo(self): params = [] param0 = arcpy.Parameter( displayName = "Input Features", name = "inputFeatures", datatype = "Feature Set", parameterType = "Required", direction = "Input") param0.value = r'E:\gis\default.gdb\point' params.append(param0) param1 = arcpy.Parameter( displayName = "Buffer Distance", name = "distance", datatype = "Long", parameterType = "Required", direction = "Input") params.append(param1) param2 = arcpy.Parameter( displayName = "Buffers", name = "buffers", datatype = "Feature Set", parameterType = "Derived", direction = "Output") params.append(param2) return params def execute(self, parameters, messages): try: arcpy.env.workspace = r'E:\gis\default.gdb' Input_Features = parameters[0].valueAsText Buffers = arcpy.CreateUniqueName("Buffer") Distance = parameters[1].valueAsText arcpy.Buffer_analysis(Input_Features, Buffers, Distance, "FULL", "ROUND", "NONE", "") parameters[2].value = Buffers except Exception, ErrorDesc: sErr = "ERROR:\n" + str(ErrorDesc) messages.addErrorMessage(sErr) return
Mark, I'm not sure, but I think I was having the same problem as you. Defining the output parameter datatype as GPFeatureRecordSetLayer
and using SetParameterAsText (I fully tested that function, but with minimal testing, looks like SetParameter also works for me). I'm using 10.2.1.
A basic test case is here:
arcpy - Returning feature class from Python toolbox - Geographic Information Systems Stack Exchange
Hope that stops others from giving up as I almost had.