Using the Validator in the ArcGIS 10.1 tool GUI, can I loop through and List feature classes from a workspace type parameter (ie a file geodatabase) and then go on and list the values of a field in a feature class from that list? I'm trying to do this:
if self.params[0].value and arcpy.Exists(self.params[0].value):
for fc in arcpy.ListFeatureClasses(self.params[0].value):
if fc == "TestFC":
value_set = set(row.getValue("SITE")
for row in arcpy.SearchCursor(str(self.params[0].value)))
self.params[1].filter.list = sorted(value_set)
where param[0]
is a workspace type parameter where the user chooses a geodatabase. param[1]
will be a string type parameter set as a value list. I want to read in a setted value list from all the values in the 'SITE' field so the user can choose which site the tool will further process on.
Maybe in other words:
- User opens tool
- User chooses a file geodatabase as the first parameter
- User will then choose a SITE from the list derived from the first parameters testfc feature class, 'SITE' field
1 Answer 1
This should be possible but your usage of ListFeatureClasses
and SearchCursor
is incorrect:
ListFeatureClasses
requires you to setarcpy.env.workspace
first. Its arguments are optional, but the first is a wildcard, not a workspace.SearchCursor
's first argument is a table or feature class, not a workspace.
That being said, I wouldn't really recommend using tool validation for this if you can avoid it. It will be slow, and really doesn't add much value compared to simply exposing a SQL Expression parameter obtained from another parameter (this doesn't require any tool validation code). See How to populate SQL options for parameter in ArcGIS 10 tool?
-
Thanks blah238. I went back and noticed I was entering wrong arguments. I wrote a script before this using the validation in the same kind of way and it worked well. In this case, you were right. It slowed the loading sequence and processing time significantly. I've tried a whole different approach with my script now. Thanks,Mike– Mike2013年04月25日 15:22:27 +00:00Commented Apr 25, 2013 at 15:22
Explore related questions
See similar questions with these tags.