Tutorial: Creating tools with ModelBuilder

Complexity: Beginner Data Requirement: ArcGIS Tutorial Data Setup Goal: Learn how to create a model tool.

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.

  1. Open the map document.
  2. Create the model.
  3. Expose tool parameters.
  4. Create model parameters.
  5. Rename model elements.
  6. Set model parameter order.
  7. Set model parameter type.
  8. Set filters on model parameters.
  9. Set symbology for output data.
  10. Manage intermediate data.
  11. Change general model properties.
  12. 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

  1. Start ArcMap by clicking Start > All Programs > ArcGIS > ArcMap 10.
  2. On the ArcMap - Getting Started dialog box, click Existing Maps > Browse for more.

    The Open ArcMap Document dialog box appears.

  3. 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.

Starting model
If the model was saved previously, open the model by right-clicking the model and selecting Edit. If this model was saved after the model was run in the "Executing tools in ModelBuilder tutorial," the model elements may have a drop shadow around them. To remove the drop shadows, validate the entire model by clicking the Validate Entire Model button Validate Entire Model on the ModelBuilder toolbar.

Double-click the example model from the Catalog window. The tool dialog box opens but shows no parameters, as illustrated below.

Model tool dialog

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.

Model tool with all its parameters

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.

  1. In the Catalog window, right-click the model and click Edit. This opens the model in ModelBuilder.
  2. Right-click Buffer.
  3. Click Make Variable > From Parameter > Distance [value or field].

    This adds the Distance parameter as a variable in the model.

    Exposing Distance parameter

  4. Right-click Clip.
  5. 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.

  1. Right-click Distance [value or field] and check the Make Parameter option, as illustrated below.
    Making model parameter

    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.

  2. 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.

  1. Right-click PlanA_Roads and click Rename.
  2. Type Input Roads and click OK.

    The name of the variable changes to Input Roads.

  3. 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.
  4. Save Save the model. You do not need to exit ModelBuilder.
  5. 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.
    Renamed variables

    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:

  1. In ModelBuilder, click Model > Model Properties.
  2. Click the Parameters tab.
  3. Choose the Input Roads parameter and move it to the top using the Up and Down arrow buttons on the right side.
  4. Change the position of other parameters as shown below:
    Changing parameter order

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.

  1. In ModelBuilder, click Model > Model Properties.
  2. Click the Parameters tab.
  3. 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.
    Changing parameter type

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.

  1. Click Model > Model Properties.
  2. Click the Parameters tab.
  3. Choose Input Roads and click the cell under the Filter category.
  4. Choose the Feature Class filter.

    The Feature Class dialog box opens.

  5. Uncheck all the types except Polyline and click OK.
  6. Click OK on the Model Properties dialog box to apply the filter.
    Adding 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.

  1. In the ModelBuilder window, right-click Output Clipped Feature Class and click Properties.
  2. Click the Layer Symbology tab.
  3. Browse the layer file from the ToolData folder that you copied in C:\ModelBuilder\ToolData.
  4. Choose OutputSymbology.lyr and click Add.
    Setting output data symbology
  5. Click OK.

Learn more about creating a layer symbology file

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.

Managing intermediate data

11-Changing general model properties

You can set the model name, label, and description for the model.

  1. Click Model > Model Properties from the ModelBuilder interface.
  2. Type ExtractVegetationforProposedRoads for the name of the model. No spaces are allowed in the model name.
  3. 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.
  4. 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.

    Learn more about the relative path option

  5. Click OK.

    Changing general properties

  6. Save Save the finished model and exit ModelBuilder.
    Complete model
  7. 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.

    Final output

12-Documenting the model

It is always a good practice to document the model before you share it. To document:

  1. Right click the model in Catalog window and click Item Description.
    This opens the Item Description window, displaying the Description page.
  2. Click the Edit button on the Item Description window

    This opens the documentation editor to enter the item description.

  3. Type in appropriate description for each item in this model and click the Save button.
  4. To learn more about documenting take A quick tour of documenting tools and toolboxes

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.

  1. Open a new model by clicking the ModelBuilder button ModelBuilder Window on the ArcMap Standard toolbar.
  2. 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.
    Adding model within a model
  3. Since the model tool had predefined values for input and output parameters, it is added to the new model with input and output variables (the blue and green ovals). Note that not all parameters of the model tool are exposed when added in another model. Also, the original names of the input datasets have been used. You can make variables and rename them as described earlier in this tutorial.
  4. Open the Search window (if not already open in ArcMap) by clicking Geoprocessing > Search For Tools.

    This opens the Search window.

  5. In the Search window, type Summary Statistics and click the Search button Search.
  6. Drag the tool into the model.
  7. Double-click the Summary Statistics element to open the tool dialog box.
  8. For the Input Table parameter, click the arrow and choose Output Clipped Feature Class with a blue recycle icon Model Variable next to it. This recycle icon means it is a variable in the model.
  9. For the Output Table parameter, browse to the output geodatabase (C:\ModelBuilder\Scratch\Output.gdb), type AffectedVegetation for the name, then click Save.
  10. For the Statistic Field(s) parameter, choose Shape_Area from the list.
  11. Click the cell next to Shape_Area under Statistic Type and choose SUM from the drop down list.
  12. For the Case field parameter, choose VEG_TYPE from the list.
  13. The completed model with the Summary Statistics dialog box is illustrated below.
    Adding model within a model
  14. Click OK.
  15. 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.
  16. 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.
  17. Run the model.

    The output Output Clipped Feature Class and the AffectedVegetation table are added to the display in the ArcMap table of contents.

  18. 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.