I have a feature class that consists of county wide addresses that need to be exported to a .shp and then "Find & Replace" so all fields that have attributes with COUNTY ROAD, US HIGHWAY, STATE ROAD, STATE HIGHWAY to be changed to CO RD, US HWY, ST RD, ST HWY for a computer aided dispatch software to consume.
This is usually a manual process, in which the .shp is kicked out and using the attribute tables capacity to mass "Find & Replace". But our system growing, having these types of tasks automated is going to be essential.
So far in model builder getting the FC to .shp is obviously self explanatory, but the road block I have ran into is whether to use CALCULATE FIELD or CALCULATE VALUE and whether to use ITERATE FIELDS or ITERATE FIELD VALUES
to iterate through two newly create .shp for Address Points and a Road Centerline that have mutiple fields which contain street name prefix types (eg. COUNTY ROAD, US HIGHWAY, STATE ROAD, STATE HIGHWAY) and convert them to a notation that our PD CAD software can cosume as mention above (eg. CO RD, US HWY, ST RD, ST HWY).
Using either CALCULATE FIELD or CALCULATE VALUE will obviously prompt me for a python expression that will perform an inline variable substitution, that being said which of the two tools would be best and what iterator would be best?
I have provided links to two examples where each of the tools is used to perform the "Find & Replace".
Attribute Value Correction Using ModelBuilder
Getting Started with Model Builder | Map and Data Library
Inline Variable Substitution Test Expression
"%VALUE%".replace("Find", "Replace") OR !VALUE!.replace(%FIND%, %REPLACE%)
Hello Brian Acheff,
From the description I understand you have a feature class/shapefile with few fields of interest say 3 fields. Each of these fields have some values that you need to alter to some other standard.
So feature class A
Field1 Field 2
COUNTY ROAD COUNTY ROAD
US HIGHWAY US HIGHWAY
you want to change it to something like this
Field1 Field 2
CO RD CO RD
US HWY US HWY
Try this:
So if I have four fields that need to be iterated through and have their attributes changed, would it be best to use four "CALCULATE FILED" tools attached to the iterator; there are multiple fields that need to have their attributes match the desired text formatting or would it be better to use the Model Builder Utility Tool "CALCULATE VLAUE" which could possible go through all of the fields and change the text formatting?
Also with having four different field is the "ITERATE FEATURE SELECTION" the best or would "ITERATE FIELDS" or a different iterator be best.
All this being said and even though my Python proficiency needs to improve, would scripting in Python be the best route and if so would the scripting mimic the flow / syntax if I were using Model Builder?
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Current Model Variation:
This is the error I keep getting, it says the OUTPUT from the FeatureClassToFeatureClass does not exist even though that is the first process that should take place, but it does perform the FeatureClassToFeatureClass; in addition would I have to set a precondition?
Also I see that I would need to join the four outputs from the CALCULATE FIELD portion of the model since all of the updated data need to be in a single table that would eventually be exported to a .shp
Hello Brian,
You could try to use two models:
Below is an example of the SubModel. This SubModel alters the values in FieldC. You'll need to set the Input Dataset, Field and the output of Calculate Field tool as model parameters.
The MainModel uses Iterate Fields tool and SubModel. The MainModel iterates through the fields listed in the Field Name parameter and alter values in the fields. In each iteration, the Iterate Fields output Value stores the Field Name to be altered and passes the value to SubModel.
Siqi,
Would I need a 4 sub models, with preconditions combined into the comprehensive Sub Model in the Main Model, since the calculate field only applies to one field or could I use the calculate multiple fields.
I was able to get the model to run the way you showed, but involved only a single field being calculated in the Sub Model, the output did not update the text formatting, but rather changed all targeted values to <NULL>