I do a lot of proximity analysis using "select by location" and would like to cut down on the effort spent each time doing this!
I have put together a model using ModelBuilder that:
- Iterates over features in a feature layer (source layer);
- Selects features in a separate target layer based on the set parameters; and
- Uses summary statistics to summarize over a certain field.
Where I'm getting caught up is in making this as much like a standard tool as possible.
I have two issues I'm running into:
- I've set the "statistics field" of the Summary Statistics tool as a model parameter. However, when I go to run this tool through ArcToolbox, I set the target layer, but the statistics field isn't populated with the list of potential fields from the target layer. The drop down menu remains blank.
Is there a way to make all the target layer fields populate similarly to how they would if you were using the Summary Statistics tool alone and set an input layer? - Get Field Value gets the value of the first row of the specified field, but I do not know how to tell it to get the value of the field of what I just summarized on.
So, in Summary Statistics, if I told it to get the SUM of a field called POPTOTAL, then I want the Get Field Value tool to grab the value from the new field called "SUM_POPTOT" in the output statistics.
There should only be one row of data, so I don't need to worry about getting the correct row. I have "Field" set as a model parameter currently, but I don't think it needs to be.
I've posted this thread in the ArcGIS forum, but I haven't received any feedback. I'm still new to ModelBuilder…I have some background in programming, so Python script would be fine (or maybe even better).
Best Answer
If I'm understanding the need correctly, you could modify the validation code so it will populate the list after selecting a layer. You might have to convert to a python script to get to it (it's in the Script Properties under the Validation tab).
The validation code contains functions that are run when the tool is opened, when a parameter is changed, and after internal validation runs. It doesn't reference a script file like the tool itself does. You have to either edit in place and save, or copy and paste your code in.
I modified this validation code to disable some parameter fields until the first parameter is picked. It also populates a pick list by grabbing the unique values from a feature class's attribute field. Basically, it's set up to wait for a connection to be picked by the user, uses that connection to look at feature class, populates a list based on the values found for one of the FC's fields, and only then makes the rest of the parameters available to fill in.
Some resources on script validation: