# check how many parcels are selected count = int(arcpy.GetCount_management("Parcel").getOutput(0)) # returns count of all parcels if none selected. This makes if statement always true, regardless if any parcels are selected # if no parcels are selected, inform user and exit script if count < 1: arcpy.AddError("No features selected! \n Please select at least one parcel feature. \n") arcpy.AddError("Quitting the Create Case tool \n") sys.exit("Goodbye! Try again!")
Solved! Go to Solution.
I want to check if any features in a feature class are selected, and exit the script with a message to the user if they aren't.
# check how many parcels are selected
count1 = int(arcpy.GetCount_management("Parcel").getOutput(0))
arcpy.SelectLayerByAttribute_management("Parcel","SWITCH_SELECTION") # switch selection
count2 = int(arcpy.GetCount_management("Parcel").getOutput(0))
arcpy.SelectLayerByAttribute_management("Parcel","SWITCH_SELECTION") # switch it back
# if no parcels are selected, inform user and exit script
if count1 == 0 or count2 == 0:
arcpy.AddError("No features selected! \n Please select at least one parcel feature. \n")
arcpy.AddError("Quitting the Create Case tool \n")
I tried switching selections, but that raised an error on SelectLayerByAttribute - module has no attribute
I am working on a similar script but instead of just listing the selection, I want to use it as a logical parameter for executing "Calculate Geometry Attributes" on a parcel polygon.
So far I have built a model which works OK, except I get a field character count warning :face_with_rolling_eyes: When I export the model as a python script (see python window for the model script), I get an error saying this:
File "<string>", line 6
def # NOT IMPLEMENTED# Function Body not implemented
SyntaxError: invalid syntax
# -*- coding: utf-8 -*- """ Generated by ArcGIS ModelBuilder on : 2021-09-17 08:27:10 """ import arcpy def # NOT IMPLEMENTED# Function Body not implemented def GeometryCalc(): # GeometryCalc # To allow overwriting outputs change overwriteOutput option to True. arcpy.env.overwriteOutput = False arcpy.ImportToolbox(r"c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx") # Model Environment settings with arcpy.EnvManager(scratchWorkspace=r"C:\Users\abishop\AppData\Local\Temp\ArcGISProTemp10544\1ba0f558-c873-4c6c-be6d-dc08393016c0\Default.gdb", workspace=r"C:\Users\abishop\AppData\Local\Temp\ArcGISProTemp10544\1ba0f558-c873-4c6c-be6d-dc08393016c0\Default.gdb"): parcel = "I:\\users\\abishop\\DATA\\CadastreCopy.gdb\\parcel" # Process: Select Layer By Attribute (Select Layer By Attribute) (management) parcel_Layer, Count = arcpy.management.SelectLayerByAttribute(in_layer_or_view=parcel, selection_type="NEW_SELECTION", where_clause="GIS_ACRES IS NULL", invert_where_clause="") # Process: If Selection Exists (If Selection Exists) () True_48, False_49 = # NOT IMPLEMENTED(in_layer_or_view=parcel_Layer, selection_condition="EXISTS", count=0, count_min=0, count_max=0) # Process: Calculate Geometry Attributes (Calculate Geometry Attributes) (management) if True_48: parcel_Layer_2_ = arcpy.management.CalculateGeometryAttributes(in_features=parcel_Layer, geometry_property=[["GIS_ACRES", "AREA"]], length_unit="", area_unit="ACRES", coordinate_system="PROJCS[\"NAD_1983_StatePlane_Florida_West_FIPS_0902_Feet\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",656166.6666666665],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",-82.0],PARAMETER[\"Scale_Factor\",0.9999411764705882],PARAMETER[\"Latitude_Of_Origin\",24.33333333333333],UNIT[\"Foot_US\",0.3048006096012192]]", coordinate_format="SAME_AS_INPUT") if __name__ == '__main__': GeometryCalc()
The line ("def #...") is not valid Python syntax. For some reason, exporting to Python script has malfunctioned - it has lots of problems. If there's supposed to be a function there, you'll have to write it yourself. If not, delete that line and continue on.
edit: I'm pretty sure you'll also have to edit the line "True_48, False_49 = #"
The problem with changing or eliminating the True False is that the logical condition of checking the selection will be eliminated. I think that's why there is a malfunction. That logical operator I used in the ModelBuilder "If Selection Exists" only works in ModelBuilder. :sad_but_relieved_face: