I've been doing some experimentation with SelectByLayerAttribute, and I've noticed that it does not select anything when provided with the path of a feature layer (e.g. 'C:\Users\Sean\OneDrive\Documents\ArcGIS\Projects\ProjectName\test.gdb\Electric_substations')
It only works with layers that are sourced from the Contents pane (ArcGIS Pro Script tool)
using input from contents pane
in_substation = arcpy.GetParameterAsText(5)
arcpy.SelectLayerByAttribute_management(in_substation , "NEW_SELECTION", where_cond)
The only solution that I can think of now is to add it to the Contents pane using
m.addDataFromPath('C:\Users\Sean\OneDrive\Documents\ArcGIS\Projects\ProjectName\test.gdb\Electric_substations')
then using that as the input somehow.
If I had a layer located at the path 'C:\Users\Sean\OneDrive\Documents\ArcGIS\Projects\ProjectName\test.gdb\Electric_substations', could I convert it to a format where SelectByLayerAttribute would accept it without adding it to the contents pane using addDataFromPath?
1 Answer 1
The tool, Select Layer by Attribute only works on layers. A layer, is different than the featureclass or item on disk. The layer is either virtual, or resides in the app (ArcMap/ArcGIS Pro, etc). Think of the layer like a view of the data. You need to put the selection (what the tool is doing), on the layer.
I'm not entirely sure of your workflow - it sounds like you're working with a tool, inside the app, but you are not using layers. (Maybe there is a good reason for this, but typically in the app, you'd just use a layer, something added to your map). Anyways, you can still use a item on disk (featureclass). Instead of using Select Layer by Attribute, make use of Make Feature Layer. It will "turn a featureclass into a layer". It has the added benefit of a where
parameter, so the tool does two things at once.
Explore related questions
See similar questions with these tags.
Layer
objects. A source path is not a validLayer
because it doesn't have a selection set property (which moots the purpose ofSelectLayerByAttribute
)