Tutorial: Creating tools with ModelBuilder
This tutorial takes you step-by-step through the process of creating a model tool. In this tutorial, the model built in the Executing tools in ModelBuilder tutorial is made into a useful tool by exposing model variables as model parameters.
For a broad overview of creating model tools, see A quick tour of creating tools with ModelBuilder.
It is assumed that you have installed ArcGIS Desktop (ArcView, ArcEditor, or ArcInfo) before you begin this tutorial. The data required for this tutorial (included on the ArcGIS Desktop CD) by default is installed in C:\arcgis\ArcTutor. The tutorial scenario is fictitious, and the original data has been adapted for the tutorial.
To avoid corrupting the original data, copy the ModelBuilder folder from C:\arcgis\ArcTutor to the C drive on your computer. If you are copying the data to another drive or location, make sure to use that drive for all the steps below.
- Open the map document.
- Create the model.
- Expose tool parameters.
- Create model parameters.
- Rename model elements.
- Set model parameter order.
- Set model parameter type.
- Set filters on model parameters.
- Set symbology for output data.
- Manage intermediate data.
- Change general model properties.
- Document the model.
1-Open the map document
Browse to the C:\ModelBuilder folder in Windows Explorer and double click the Extract Vegetation.mxd. This will start ArcMap and open the map document, or
- Start ArcMap by clicking Start > All Programs > ArcGIS > ArcMap 10.
-
On the ArcMap - Getting Started dialog box, click Existing Maps > Browse for more.
The Open ArcMap Document dialog box appears.
- Browse to C:\ModelBuilder folder, select Extract Vegetation.mxd, and click Open.
This opens the Extract Vegetation.mxd.
2-Creating the initial model
Follow the steps in Executing tools in ModelBuilder. The same model is used in this tutorial as the starting point.
Double-click the example model from the Catalog window. The tool dialog box opens but shows no parameters, as illustrated below.
If you run the tool by clicking OK, the model will run. The output of the model (ClippedFC) will not be added to the ArcMap table of contents, even though Add To Display was checked for the output variable. The reason is that when a model is run from its tool dialog box, the Add To Display setting is ignored. To add the output to the display, you must make the output variable a model parameter.
Another reason for creating model parameters is that you want to run the model with different inputs without having to open ModelBuilder every time, as illustrated below.
Once the model parameters have been created, you can execute the model from its tool dialog box, supplying different values for the Input Roads, Buffer Distance, Input Vegetation, Output Clipped Feature Class, and XY Tolerance parameters. You don't have to open ModelBuilder each time you want to run the model—you can use the tool dialog box instead. An added advantage of running a model from its tool dialog box is that a result in the Results window is created; running a model within ModelBuilder does not create a result in the Results window.
The remaining steps will expose model variables as parameters so they appear on the model tool dialog box as shown above.
3-Exposing tool parameters
To define the Buffer Distance and XY Tolerance parameters, you need to create model variables for them.
When you add a tool to a model, model variables are automatically created for input and output datasets, but not for any other tool parameters. The reason is aesthetics—if variables were automatically created for every tool parameter, the model diagram would quickly become unreadable. For example, when you add the Buffer tool to a model, a variable is automatically made for the Output Feature Class parameter. After you right-click Buffer and fill in the Input Features parameter, a model variable is created for the input features. All other parameters, such as Distance, Side Type, and End Type, are not automatically added as variables in the model. The steps below create model variables for Distance [value or field] and XY Tolerance.
- In the Catalog window, right-click the model and click Edit. This opens the model in ModelBuilder.
- Right-click Buffer.
- Click Make Variable > From Parameter > Distance [value or field].
This adds the Distance parameter as a variable in the model.
- Right-click Clip.
- Click Make Variable > From Parameter > XY Tolerance.
4-Creating model parameters
Now that you've created variables for Distance and XY Tolerance, you're ready to make model parameters.
- Right-click Distance [value or field] and check the Make Parameter option, as illustrated below.
The letter P appears beside the variable, indicating it is a model parameter. This model parameter then also appears on the model tool dialog box.
- Create model parameters for the following variables (do not make a model parameter for BufferedFC):
- PlanA_Roads
- vegetype
- XY Tolerance
- ClippedFC
5-Renaming model elements
ModelBuilder assigns default names to variables. Variable names are used for parameter names on the model tool dialog box. It is good practice to rename variables, especially if they are model parameters.
- Right-click PlanA_Roads and click Rename.
- Type Input Roads and click OK.
The name of the variable changes to Input Roads.
- Rename the remaining variables as follows:
- Rename Distance [value or field] to Buffer Distance.
- Rename vegetype to Input Vegetation.
- Rename ClippedFC to Output Clipped Feature Class.
- Save the model. You do not need to exit ModelBuilder.
- Double-click the model from the Catalog window to open the model tool dialog box. You may have to move or minimize the ModelBuilder window to access the Catalog window. The model tool dialog box should look similar to the illustration below. The order of the parameters may be different on your dialog box, but this is not an issue since you'll change the order below.
You can execute your tool by clicking OK, but it is suggested that you choose a different output feature class before executing. The tool executes, and the output feature class is added to the ArcMap table of contents. Unlike running a model within ModelBuilder, running the model from its dialog box does not change the model diagram.
6-Setting model parameter order
As illustrated above, the order of the parameters is not ideal. The standard practice is to order parameters as follows:
- Required input datasets
- Other required parameters that affect tool execution
- Required output datasets
- Optional parameters
- In ModelBuilder, click Model > Model Properties.
- Click the Parameters tab.
- Choose the Input Roads parameter and move it to the top using the Up and Down arrow buttons on the right side.
- Change the position of other parameters as shown below:
7-Setting model parameter type
Once the model parameters are set in the correct order, change the type of the parameter. If a parameter is a required parameter of a tool in the model, you will not be able to change the type to optional from these settings.
- In ModelBuilder, click Model > Model Properties.
- Click the Parameters tab.
- Click the cell under the Type category for XY Tolerance. A list appears with two options. For this example, keep XY Tolerance as an optional parameter and the rest as a required parameter type as shown in the illustration below.
8-Setting filters on model parameters
You can restrict the type of input to any parameter by applying filters to parameters. The model in this example expects the Input Roads parameter to be line features. In the following steps, the parameter is modified by applying a filter so that it only accepts line features.
- Click Model > Model Properties.
- Click the Parameters tab.
- Choose Input Roads and click the cell under the Filter category.
- Choose the Feature Class filter.
The Feature Class dialog box opens.
- Uncheck all the types except Polyline and click OK.
- Click OK on the Model Properties dialog box to apply the filter.
9-Setting symbology for output data
The output of a model can be set to have a particular symbology that is used to display the output. For this example, the symbology is based on the type of vegetation within the buffer zone. To set the symbology for the output data, the first step is to create a layer file, and the second step is to define the layer file in the output data properties. For this tutorial, a layer symbology file has been created for you.
- In the ModelBuilder window, right-click Output Clipped Feature Class and click Properties.
- Click the Layer Symbology tab.
- Browse the layer file from the ToolData folder that you copied in C:\ModelBuilder\ToolData.
- Choose OutputSymbology.lyr and click Add.
- Click OK.
10-Managing intermediate data
When you run a model, output data is created for each process in the model. Some of the data created is of no use after the model is run since it was only created to connect to another process that creates new output. Such data is called intermediate data. All outputs except the final output, or those that have been made model parameters, are automatically made intermediate data in the model. In this example, the output of the Buffer tool is only useful as an input to the Clip tool and is not used after that, so the Intermediate option is checked. You can choose to save the intermediate data by unchecking the Intermediate option.
11-Changing general model properties
You can set the model name, label, and description for the model.
- Click Model > Model Properties from the ModelBuilder interface.
- Type ExtractVegetationforProposedRoads for the name of the model. No spaces are allowed in the model name.
- Type Extract Vegetation for Proposed Roads in the Label text box. Spaces are allowed in the model label. This label is used to display the model name in the Catalog window.
- Type the desired text in the Description text box.
Check the Store relative path names (instead of absolute paths) option so that you can share your model tool or move your model data and model to a different location. This option is not used in this tutorial but has been introduced here as a good practice to follow for your future models and model tools that you will share.
- Click OK.
- Save the finished model and exit ModelBuilder.
Double-click the model from the Catalog window to open the model tool dialog box. Since the model was saved with the predefined values, all the parameters on the dialog box are filled in. You can change the value of any parameter here by entering a new value. Click OK to run. The final output of the model (Output Clipped Feature Class) is added to the display by default, and the model messages are posted in the Results window. To see your results, uncheck the Vegetation Type layer in the map document table of contents.
12-Documenting the model
It is always a good practice to document the model before you share it. To document:
- Right click the model in Catalog window and click Item Description.This opens the Item Description window, displaying the Description page.
- Click the Edit button on the Item Description window
This opens the documentation editor to enter the item description.
- Type in appropriate description for each item in this model and click the Save button.
Additional analysis
If you want to do some analysis with the model, you can add the Summary Statistics tool to get a summary table of affected area by vegetation type within the buffer polygons around the proposed roads.
The steps below will also show you how to use a model as a tool inside another model.
- Open a new model by clicking the ModelBuilder button on the ArcMap Standard toolbar.
- Now that you have created a model tool, you can use it just like any other tool. You can add the model tool to a new model by dragging it from the Catalog window into the new model, as illustrated below.
- Open the Search window (if not already open in ArcMap) by clicking Geoprocessing > Search For Tools.
This opens the Search window.
- In the Search window, type Summary Statistics and click the Search button .
- Drag the tool into the model.
- Double-click the Summary Statistics element to open the tool dialog box.
- For the Input Table parameter, click the arrow and choose Output Clipped Feature Class with a blue recycle icon next to it. This recycle icon means it is a variable in the model.
- For the Output Table parameter, browse to the output geodatabase (C:\ModelBuilder\Scratch\Output.gdb), type AffectedVegetation for the name, then click Save.
- For the Statistic Field(s) parameter, choose Shape_Area from the list.
- Click the cell next to Shape_Area under Statistic Type and choose SUM from the drop down list.
- For the Case field parameter, choose VEG_TYPE from the list.
- Click OK.
- Right-click Output Clipped Feature Class (the green oval) and check Add to Display. This adds the output to the display after the model runs.
- Right click and check the Add to Display option for the AffectedVegetation variable. This will add the ouput to the display after the model runs.
- Run the model.
The output Output Clipped Feature Class and the AffectedVegetation table are added to the display in the ArcMap table of contents.
- Open the table by right-clicking and clicking Open.
The table shows a summary of area by vegetation type within the buffer polygons that will be affected by the proposed roads for plan A.