Hi. I'm using ArcGIS 3.2.
I added a new python script to the Toolbox that was created by Default in my new project.
Quick silent video of both scripts at work
https://www.loom.com/share/9e7b72ee9a3448d18994a255ee68d91a?sid=cf199512-b146-49b7-b012-bf4eb819f333
I'd like for user to select from a dropdown, and have report generated.
Currently both scripts work for the purpose of generating reports, but
1- One script has user entering event_id manually.
2- Second script has the dropdown, but duplicates appear. I've tried everything only to still have the duplicates appear.
Any help is welcome and appreciated. I am open to your recommendations.
I only need one script, sharing both to share my history and what brought me here.
Hello, you can try to use a set in your list to remove duplicated values. Line 13:
def initializeParameters(self):
"""Initialize parameters."""
# Retrieve unique event IDs from the hosted feature layer
aprx = arcpy.mp.ArcGISProject("CURRENT")
lyr = aprx.listMaps()[0].listLayers()[0] # Assuming the hosted feature layer is the first layer in the map
event_ids = set()
with arcpy.da.SearchCursor(lyr, "event_id") as cursor:
for row in cursor:
event_ids.add(row[0])
# Populate the dropdown parameter with unique event IDs from the hosted feature layer
sel_event_id = self.params[0]
sel_event_id.filter.list = sorted(list(set(event_ids))) # Set Function Added
# 2-9-24 THIS SECTION IS NOT BEING EXECUTED ALTHOUGH SCRIPT WORKING OK Print all event IDs retrieved from the hosted feature layer
for event_id in event_ids:
arcpy.AddMessage("Retrieved Event ID: {}".format(event_id))
# Print the datasource for the hosted feature layer
arcpy.AddMessage("Connected Hosted Feature Layer: {}".format(lyr.dataSource))
# Print the datasource for the related table (tbl)
tbl = aprx.listMaps()[0].listTables()[0] # Assuming the related table is the first table in the map
arcpy.AddMessage("Connected Related Table: {}".format(tbl.dataSource))
return
Hi, I guess you need to create a set first after you create the list. Then, you convert it to list
I tried to minimize the chaneg of your code
def initializeParameters(self):
"""Initialize parameters."""
try:
# Define REST URLs for the main layer and related table
main_layer_url = "https://services8.arcgis.com/CQeG4yN4mcOJaKOV/arcgis/rest/services/service_b4b3e49de39547628b85a73989096909/FeatureServer/0"
related_table_url = "https://services8.arcgis.com/CQeG4yN4mcOJaKOV/arcgis/rest/services/service_b4b3e49de39547628b85a73989096909/FeatureServer/1"
# Set the selected event ID parameter to populate dropdown
sel_event_id = [row[0] for row in arcpy.da.SearchCursor(main_layer_url, "event_id")]
create_unique_sel_even_id = set(sel_event_id)
self.params[0] = list(create_unique_sel_even_id)
# Print all event IDs retrieved from the hosted feature layer
event_ids = [row[0] for row in arcpy.da.SearchCursor(main_layer_url, "event_id")]
for event_id in event_ids:
arcpy.AddMessage("Retrieved Event ID: {}".format(event_id))
# Print the datasource for the hosted feature layer
lyr = arcpy.MakeFeatureLayer_management(main_layer_url, "Main_Layer")[0]
arcpy.AddMessage("Connected Hosted Feature Layer: {}".format(lyr.dataSource))
# Print the datasource for the related table
tbl = arcpy.MakeTableView_management(related_table_url, "Related_Table")[0]
arcpy.AddMessage("Connected Related Table: {}".format(tbl.dataSource))
except Exception as e:
arcpy.AddError("An error occurred during parameter initialization: {}".format(str(e)))
return