Hi there. This is a follow-on question from my previous post. If you would like more context, please visit the post here:
I have previously created a python toolbox script that will create a fishnet and select the cells that intersect a boundary defined by a parameter. Cells that do not intersect the boundary are deleted.
I now want to change the script so that the fishnet is not created in the script - instead it is defined as a parameter. Following this, I want the script to select the cells that intersect the boundary and then save them as a new layer file. param0 is defined as the boundary and param1 as the fishnet. The script looks like this:
# -*- coding: utf-8 -*- import arcpy class Toolbox(object): def __init__(self): self.label = "Toolbox" self.alias = "toolbox" # List of tool classes associated with this toolbox self.tools = [Tool] class Tool(object): def __init__(self): self.label = "Tool" self.description = "" self.canRunInBackground = False def getParameterInfo(self): # Param 0 = UK Boundary param0 = arcpy.Parameter( displayName="Input Feature Class", name="Parameter0", datatype="GPFeatureLayer", parameterType="Required", direction="Input") param0.filter.list=["POLYGON"] # Param 1 = Fishnet param1 = arcpy.Parameter( displayName="GRID", name="Parameter1", datatype="GPFeatureLayer", parameterType="Required", direction="Input") params = [param0,param1] return params def isLicensed(self): return True def updateParameters(self, parameters): return def updateMessages(self, parameters): return def execute(self, parameters, messages): # Overwrite existing file of the same name arcpy.env.overwriteOutput = True # Reference Parameters input1 = parameters.valueAsText inputgrid1 = parameters.valueAsText # Convert inputgrid1 to feature class arcpy.management.MakeFeatureLayer(inputgrid1,"inputgrid1_lyr") # Select by Location arcpy.management.SelectLayerByLocation("inputgrid1_lyr", "INTERSECT", input1, None, "NEW_SELECTION", "NOT_INVERT") # Save to layer file arcpy.management.SaveToLayerFile(inputgrid1,"NewGrid.lyr") return
Upon completion of the script, I receive no errors. However, no new layer file (NewGrid.lyr) appears in my geodatabase. I have a feeling that the solution here is simple - so apologies in advance for my poor understanding of Python toolboxes. Is anybody able to offer any guidance?
Does it appear if you tell the lyr to save to a folder instead of a GDB? I think lyr files are only visible in folders.
I'm also not 100% sure a lyr is what you want in this case; it doesn't alter any data so much as tell it how to present itself.
That is, you're not making any permanent changes here. It seems like your original idea of deleting rows would be better; it'll make sure the changes you want are actually permanent, so you don't accidentally click the wrong button and have the entire grid appear all over again.