Explore the schema of a tree inventory feature class

All trees pose some level of risk to nearby people, structures, and utilities. Typically, this risk is minimal and is far outweighed by the environmental, social, and economic benefits offered by the trees. As trees age or become weakened by pests, disease, and other stresses, this balance may shift, requiring a tree owner or manager to decide what risk level they are willing to accept and what modifications and actions may be needed. This workflow and data will be used to support the decision-making process for conducting a risk assessment that identifies the likelihood of whole or partial tree failure, the consequences of such a failure, and the potential affected targets.

Explore tree inventory fields

In this tutorial, you'll start by exploring a preconfigured layer for storing tree feature data. The schema of this layer is modeled after the ISA Basic Tree Risk Assessment Form for assessing tree risk. Additionally, it uses attribute validation, which makes data collection more efficient and accurate.

  1. Download the TreeInventory data.
  2. Locate the downloaded file and double-click TreeInventory.ppkx to open the project in ArcGIS Pro.
  3. If prompted, sign in using your licensed ArcGIS account.
    Note:

    If you don't have access to ArcGIS Pro or an ArcGIS organizational account, see options for software access.

  4. In the Catalog pane, expand the Databases folder and expand treeinventory.gdb.

    The Databases and treeinventory.gdb folders expanded in the Catalog pane

    Note:

    In ArcGIS Pro, you can personalize the appearance of the user interface with either a light or a dark theme. In these tutorials, the example images will use the dark theme, but you can use the theme that you prefer.

    If you want to change the theme, click Options. In the Options window, under Application, click General. Expand Application Theme and choose Dark. You'll need to restart ArcGIS Pro for your theme changes to take effect.

  5. Drag the TreeInventory feature class onto the Tree Inventory Map.

    The Tree Inventory layer is currently empty. You will use it later to store tree features that you collect. The layer already has attribute validation applied in the form of subtypes and domains.

  6. Optionally, on your own, symbolize the Tree Inventory layer by applying suitable symbols for various tree types.
    Note:

    Review the following topics for help on Applying Point Symbology and Supported tree genus type symbols.

  7. On the map, in the Contents pane, review the Tree Inventory layer.

    A subtype has been applied to the TreeTypeCode field and as a result, the layer is automatically categorized and symbolized. Subtypes are a way to categorize or group features in a feature class, domains are a way to constrain what values a user may apply to a field and contingent values are a way to build a decision tree where a value applied to a field is constrained by a previous value selected.

    The Tree Inventory layer on the Contents pane

    Subtypes are not required for contingent values, but they do allow for additional functionality.

    Next, you will explore the field properties.

  8. In the Contents pane, click the Tree Inventory layer to select it.
  9. On the ribbon, on the Data tab, in the Data Design group, click Fields.

    Fields button in the Data Design group on the Data tab

    The Fields view appears. From here you can create, delete, and modify fields.

  10. In the Fields view, make sure Current layer is set to Tree Inventory.

    Current Layer set to Tree Inventory in the Fields view

    If you choose Tree Inventory, the changes are made only to the layer, which is a local instance of a feature class on a map. If you choose Data Source, your changes will be applied to the data stored in the geodatabase and will affect any other layers that also use the TreeInventory feature class as their data source.

  11. In the Fields view, for Tree Inventory, in the Visible column, uncheck the following fields:
    • OBJECTID
    • Shape
    • FACILITYID

    The Fields OBJECTID, Shape, and FACILITYID with the Visible column unchecked in the Fields view

    These fields do not need to be modified when you start creating tree features, so they do not need to be displayed in the table.

  12. On the ribbon, on the Fields tab, in the Changes group, click Save.
  13. In the Fields view, in the Field Name column, review the TreeTypeCode field.

    The TreeTypeCode Field Name is bold and preceded by an asterisk in the Fields view

    The field name is bold and preceded by an asterisk to denote that it has a subtype applied.

  14. Review the Domain column. Domains have been assigned as constraints to several fields.

    List of Domains for Field Names

    Attribute domains define valid values for a field in a table in a geodatabase. They enforce data integrity by restricting the data values you can use in a particular field. Apply attribute domains to fields only if there is a definable set or range of specific values possible for that field.

    Domains are required in order to set up contingent values, so you'll be using these domains throughout the tutorial.

    Note:

    You can learn more about both subtypes and domains in the Apply Subtypes and Domains to Vienna Hiking Trails tutorial.

  15. Close the Fields view.

Next, you will explore the tree subtypes.

Review tree subtypes

Subtypes allow you to categorize a layer into a subset of features that share the same attribute values. Domains constrain what values may be applied to a field. As a result, different domains and default values can be applied to each subtype.

  1. On the ribbon, click the Data tab. In the Data Design group, click Subtypes.

    Subtypes in the Data Design group on the Data tab

    The subtypes view opens. It lists all of the layer's fields in a table.

  2. On the ribbon, on the Subtypes tab, in the Subtypes group, click Create/Manage.

    Create/Manage on the Subtypes group

    The Manage Subtypes window appears.

    In the Manage Subtypes window, you can see that the current subtype field is TreeTypeCode. There are five subtype codes representing different tree types. These represent the highest level of categorization for your tree inventory.

    Manage Subtypes window for Subtype Field TreeTypeCode

  3. In the Manage Subtypes window, click OK.
  4. In the subtypes view, scroll and review the subtype categories.

    Subtype view showing Evergreen and Deciduous Domain and Default Value values

    Each subtype has a default value for the COMMONNAME field. They also each have three domains applied: Common, Genus, and Species. You could apply different domains (lists of allowable values) to each subtype—for example, a list of evergreen species or a list of deciduous species. However, the same outcome can be achieved more efficiently with contingent values.

  5. Close the subtypes view.

Next, you will review the layer domains.

Review tree identification domains

Attribute domains enforce data integrity by limiting allowed values for a field to a list or range of choices. Domains are required in order to set up contingent values.

  1. In the Contents pane, make sure the Tree Inventory layer is selected.
  2. On the ribbon, click the Data tab. In the Data Design group, click Domains.

    Domains in the Data Design group

  3. If necessary, in the Domains view, click Common.

    The view displays the domain codes and descriptions. This domain consists of 38 common California tree names.

    Domains view showing the Common domain Code and Description values

    These are all of the allowable values for the Common domain, which is currently applied to the Common Tree Name field. You can update this list to include other trees that grow in your area.

  4. Review the allowable values for the other domains.

    You will use these domain values to identify trees and use contingent values to make the choice of domain values easier.

  5. Close the Domains view.

Explore current contingent value settings

Contingent values allow you to set up field dependencies in your data so your choice for a value in one field restricts the list of valid choices for another field. This results in a decision tree. An example of a decision tree for your tree feature class is outlined below. In this scenario, every time a new tree feature is created, the data collector will be provided with a sequential set of choices that are filtered by the initial choice that was made.

  • First, the data collector will specify the tree's type.
  • Second, the data collector will choose the tree's common name from a list that is filtered based on tree type.
  • Third, the contingent values will automatically select the tree's genus and species. The data collector only needs to be verify the values are correct.

Some advantages of this method for your tree survey include the following:

  • Data collectors cannot accidentally choose a deciduous species for an evergreen tree.
  • Data collectors do not need to know the scientific names of trees.

Next, you'll review contingent values applied to the Tree Inventory layer.

  1. In the Contents pane, make sure the Tree Inventory layer is selected.
  2. On the ribbon, click the Data tab. In the Design group, click Contingent Values.

    Contingent Values in the Data Design group

    In the contingent values view, you can see that Field Group is set to Tree Type and Scientific Names.

    Subtype view showing Field Group set to Tree Type and Scientific Names

    Contingent values are created from field groups. The Tree Type and Scientific Names field group has already been created for you and consists of the TYPE, COMMONNAME, GENUS, and SPECIES fields. You can create different field groups for different applications.

  3. In the contingent values view, for Subtype, select Evergreen.

    Subtype set to Evergreen

    The field group displays all valid combinations of COMMONNAME, GENUS, and SPECIES for Evergreen type trees.

    For this subtype, there are 17 valid contingent values, corresponding to 17 different kinds of evergreen trees. There is only one valid combination for each common name, meaning that a data collector can't enter the wrong genus or species for a tree if they know its common name.

  4. In the contingent values view, for Subtype, review other subtypes such as Palm, and view their valid combinations of TYPE, COMMONNAME, GENUS, and SPECIES.

    Subtype set to Palm in the contingent values view

  5. Close the Contingent Values view.
  6. On the Quick Access Toolbar, click Save to save the project.
    Note:

    A message may appear warning you that saving this project file with the current ArcGIS Pro version will prevent you from opening it again in an earlier version. If you see this message, click Yes to proceed.

    Save on the Quick Access Toolbar

Next, you'll create a new tree feature using the contingent values.

Create and edit a tree feature

When you edit a layer containing contingent values, you are presented with a series of choices.

  1. In the Contents pane, make sure that the Tree Inventory layer is selected.
  2. On the ribbon, on the Edit tab, in the Features group, click Create.

    Create button in the Features group on the Edit tab.

    The Create Features pane updates to display the feature templates that are available for each tree subtype.

    Display feature templates in Create Features pane

  3. In the Create Features pane, under Tree Inventory, click Evergreen.

    Select Evergreen feature template

    A red warning icon indicates that attributes are not yet valid. You cannot create a new feature until its attributes satisfy the rules of your contingent values.

  4. In the Create Features pane, for Evergreen, click the blue arrow.

    Display active template

    The Active Template pane appears. The fields that are highlighted in red are those that must be updated before you can create a new feature. Your field names may differ if you have switched the display of alias names versus stored field names.

    The default Common Tree Name value for Evergreen is Fern Pine. Because it is highlighted in red, it requires confirmation that it is the value you want to set for the template.

  5. In the Active Template pane, click the drop-down menu for Common Tree Name, point to Partial Matches and choose Fern Pine.

    Common Tree Name set to Fern Pine.

    The scientific name for Fern Pine is Afrocarpus gracilior. Tree Genus and Tree Species are automatically populated accordingly.

    In the Active Template pane, the highlight color updates to green, indicating that you have successfully updated field values and can now create a valid tree feature.

    Set tree species contingent value

  6. In the Create Features pane, click the Back button.

    Back button in the Active Template pane

  7. Click the Point construction tool and add several new trees to the map.

    Add tree features

  8. On the ribbon, click the Edit tab. In the Manage Edits group, click Save.

    Save in the Manage Edits group on the Edit tab.

  9. In the Save Edits window, click Yes.
  10. Close the Create Features pane.
  11. Save the project.

You have now reviewed several data attribute validation techniques acting in unison to prevent data inconsistencies and make data management more efficient. Next you will add a new set of contingent values to manage tree risk assessment.


Add and update contingent values for assessing tree risk

Your tree inventory layer currently has contingent values that allow you to identify and collect species and genus information. In addition to identifying tree species, arborists frequently collect information on tree risk. A common workflow is to use the basic tree risk assessment form developed by the ISA.

This form includes questions related to site factors, tree health, load factors, tree defects, and other conditions affecting the likelihood of tree failure. These factors combined result in an overall risk estimate for a tree. Next, you'll add more contingent values to your tree inventory layer that are modelled after the ISA Basic Tree Risk Assessment Form.

Prepare for assigning contingent values

Before creating contingent values, you need to set up a group of fields with appropriate domains. The domains are lists or ranges of valid values and can be derived from the ISA Basic Tree Risk Assessment Form, shown below.

For your own use, you may want to download a copy of the ISA Basic Tree Risk Assessment Form and the Appendix I: Using the ISA Basic Tree Risk Assessment Form instructions.

A blank Risk Assessment Form from the ISA

  1. In the Contents pane, make sure the Tree Inventory layer is selected.
  2. On the ribbon, click the Data tab. In the Data Design group, click Domains.
  3. In the Domains view, under Domain Name, click FailureRisk.

    Code and Description values for the FailureRisk domain in the domain view

    The FailureRisk domain consists of four codes describing levels of risk.

    CodeDescription

    0

    Improbable

    1

    Possible

    2

    Probable

    3

    Imminent

    These codes are derived from the ISA Basic Tree Risk Assessment Form, in the Likelihood of Failure column in the Matrix I. Likelihood matrix table and describe the likelihood of failure as used by arborists.

    Values in the ISA Basic Tree Risk Assessment Form that correspond to the FailureRisk domain

  4. Review the ImpactRisk, Failure_ImpactRisk, ConsequenceRisk, and RiskRating domains.

    ImpactRiskFailure_ImpactRiskConsequenceRiskRiskRating

    0

    Very Low

    Unlikely

    Negligible

    Low

    1

    Low

    Somewhat

    Minor

    Moderate

    2

    Medium

    Likely

    Significant

    High

    3

    High

    Very Likely

    Severe

    Extreme

    These domains are also based on the ISA Basic Tree Risk Assessment Form.

  5. Close the Domains view.

Create a contingent values field group

Next, you will use the domains created from the ISA Basic Tree Risk Assessment Form to create contingent values for tree risk assessment.

To complete this, you will do the following:

  • Create a field group in the tree inventory layer containing the fields related to tree failure risk.
  • Create contingent value combinations across the risk fields for each subtype.
  1. In the Contents pane, make sure the Tree Inventory layer is selected.
  2. On the ribbon, click the Data tab. In the Data Design group, click Contingent Values.

    The layer currently has one field group named Tree Type and Scientific Names. Next, you will create a new field group for risk assessment.

  3. On the Contingent Values tab, in the Data Design group, click Field Groups.

    Field Groups in the Data Design group on the Data tab.

    The Field Groups window appears, displaying the fields contained in the Tree Type and Scientific Names field group.

    Field Name values for the field group Tree Type and Scientific Names in the Field Groups window

  4. In the Field Groups pane, under Name, click Click here to add a new field group.

    Click here to add a new field group in the Field Groups window

  5. For the Field_Group name, type Risk Categorization.

    Risk Categorization field group added in the Field Groups window.

  6. In the Field Groups pane, click the Add Fields drop-down menu.

    The drop-down list displays all Tree Inventory attribute fields.

  7. From the drop-down list, check the following fields and click Add.
    • Failure
    • Impact
    • ImpactPoten
    • Consequences
    • RiskRating

    Attribute fields selected for the Field Group Risk Categorization in the Field Groups window

  8. In the Field Groups pane, verify the name and fields, and click OK to create the field group.

    OK button in the Field Groups window

  9. On the ribbon, on the Contingent Values tab, in the Contingent Values group, click Save.

    Save in the Contingent Values group

Now that you have a field group created, you can create contingent values for the participating fields.

Add risk contingent values

The tree inventory layer now has multiple field groups associated with it. Next you will add contingent values for the new risk categorization field group.

  1. In the contingent values view, for Field Group, choose Risk Categorization. For Subtype, choose Evergreen.

    Field group set to Risk Categorization and Subtype set to Evergreen in the contingent values view

    Subtypes are not required for contingent values, but they allow you to set up contingent values for different categories of data. This is helpful if you have varying risk criteria.

  2. Click Click here to add a new contingent value.

    The first row of contingent values contains the value <ANY> for all fields by default. This means that any combination of values is valid. This combination is appropriate for the Uncategorized subtype, which is intended for unanticipated situations, but for the known tree types, you want to enforce valid value combinations.

  3. For the cell under Failure, choose Possible.

    Possible selected for the Failure column in the first row

    Note:

    If you see numeric values instead of text, click the Toggle Code/Description button in the Contingent Values section under the Contingent Values tab.

  4. Update the rest of the row with the following values:

    ImpactImpactPotenConsequencesRiskRating

    High

    Somewhat

    Negligible

    Low

    First row values entered

    You have entered your first contingent value. If tree failure (Failure) is Possible and the Impact on the tree is set to High, but the impact potential to the surrounding area (ImpactPoten) is rated as Somewhat high and Consequences are Negligible, then the risk rating (RiskRating) is determined to be Low.

  5. Add two more contingent rows to the Evergreen subtype using Click to add a new contingent value.
  6. Populate the new rows using the following table.

    FailureImpactImpactPotenConsequencesRiskRating

    Possible

    High

    Somewhat

    Minor

    Low

    Possible

    High

    Somewhat

    Severe

    Moderate

    Two additional contingent rows entered

    Once you have contingent values applied to your data, the restrictions you've created will be enforced during editing.

  7. On the ribbon, on the Contingent Values tab, in the Contingent Values group, click Save.
  8. Close the contingent values view and save the project.

    Adding and updating a large number of field groups and contingent values can be time consuming. For this reason, there are geoprocessing tools to export and import contingent values and field groups. These are useful for sharing or making updates to a production database.

Next you will import additional field groups and contingent values from a .csv file.

Add contingent values using geoprocessing tools

You can use the Import Contingent Values geoprocessing tool to add contingent values from a .csv file. This gives you the option to override or merge any changes with the existing contingent values in a chosen table or feature class.

  1. In the Contents pane, under Standalone Tables, right-click RiskCategorization_FGPS.CSV and choose Open.

    This table defines the field groups for your contingent values. It contains two field groups: Tree Type and Scientific Names and Risk Categorization. These match the field groups you have already set up manually.

    Review a .csv file containing field group properties

  2. In the Contents pane, right-click the RiskCategorizationCVALS.CSV table and choose Open.

    This table defines the contingent values. It identifies the field group, subtype, and field values for all valid combinations.

    Table for RiskCategorizationCVALS.CSV

    Both tables can be updated, edited, and reused in other projects.

  3. Close the RiskCategorization_FGPS.CSV and RiskCategorizationCVALS.CSV tables.

    Next you will update your contingent values with these tables.

  4. On the ribbon, on the Analysis tab, click Tools.
  5. In the Geoprocessing pane, type contingent values in the search bar and open the Import Contingent Values tool.

    Search for geoprocessing tool to import .csv files

  6. In the Import Contingent Values tool, update the following parameters:
    • For Target Table, choose Tree Inventory.
    • For Field Groups Input File (.csv), click the browse button and open the commondata folder and treeinventory1 folder, and choose RiskCategorization_FGPS.CSV.
    • For Contingent Values Input File (.csv), click the browse button and choose RiskCategorizationCVALS.CSV.
    • Check Replace existing contingent values.

    Verify import contingent value tool parameters

    By checking Replace existing contingent values, the three contingent values you created earlier in the tutorial is replaced and the contingent values defined in the .csv file are added.

  7. Click Run.

    Next you will verify that the field group and contingent values were successfully added to the feature class.

  8. In the Contents pane, click Tree Inventory.
  9. On the ribbon, click the Data tab. In the Data Design group, click Contingent Values.
  10. In the contingent values view, for Field Group, if necessary, choose Risk Categorization. For Subtype, choose Evergreen.

    Field group set to Risk Categorization and Subtype set to Evergreen in the contingent values view

    Thirty contingent values have been created for the Evergreen subtype based on the .csv files.

  11. Review the additional subtypes in the Risk Categorization and Tree Type and Scientific Names field groups to verify that contingent values were successfully created from the .csv files.
  12. Close the contingent values view and save the project.

Edit with contingent values

While updating or creating features with contingent values, feature attributes will prompt you to make a set of choices. These choices are derived from domains associated with fields, and contingent values will check and enforce valid combinations of field and domain choices made by users.

In this tutorial, you will configure feature templates for each subtype in the tree inventory layer. A feature template is a predefined set of construction tools and attribute defaults that are used when creating features. Yours will include the contingent values for tree identification and risk categorization.

Configure feature templates

A feature template is a predefined collection of construction tools that creates new features on specific layers. It appears as a clickable item with a name and a symbol that is defined by the symbology applied to the layer on which it creates features. You will configure feature templates next.

  1. On the ribbon, on the Edit tab, click the Manage Templates button in the lower corner of the Features group.

    Manage Templates button in the lower corner of the Features group on the Edit tab

    The Manage Templates pane appears.

  2. If necessary, in the Manage Templates pane, select Tree Inventory.

    Feature templates for each subtype (deciduous, evergreen, and so on) are listed in the bottom part of the pane. These were created automatically when you began editing the layer earlier in the tutorial. Next, you'll customize these feature templates to control the editing experience.

  3. In the Manage Templates pane, click Deciduous, and click Properties.

    Properties button with the Deciduous template selected in the Manage Templates pane

    The Template Properties window appears.

  4. In the Template Properties window, click Attributes.

    Attributes tab in the Template Properties window

    The red highlighting indicates fields where attribute validation has been enabled. The brown background indicates a subtype field.

    You can use this window to choose which attribute fields will be displayed in the feature template when editing. However, it is faster to apply these choices to all feature templates at once.

  5. In the Template Properties window, click Cancel.
  6. In the Manage Templates pane, press the Ctrl key and click all the feature templates to select them all.
  7. Click Properties to change the template settings for all subtypes at once.

    Properties button with all five templates are selected

  8. In the Template Properties pane, click Attributes.
  9. In the field list, check Prompt for attribute values checkbox for the following fields:
    • Common Tree Name
    • Tree Genus
    • Tree Species
    • Tree Type
    • Failure Risk
    • Impact Risk
    • Impact Potential
    • Consequences
    • Risk Rating

    Selected fields to display for the selected feature templates

  10. In the Template Properties window, click OK.

    Later, when you create features with these feature templates, you will be required to select values for these checked fields before you can save the new feature. This will ensure that you won't accidentally save tree features without important attributes.

  11. Save the project.

Next, you'll test the feature templates and explore the contingent values applied to the fields.

Use the feature templates

  1. On the ribbon, click the Edit tab. In the Features group, select Create.
  2. In the Create Features pane, select the Evergreen feature template.

    The template expands and prompts for attribute values to be updated. A red warning icon may show to indicate that attributes are currently invalid. To continue, you must select feature values.

    Feature template for Evergreen with attributes that are currently invalid in red.

  3. In the Create Features pane, under Evergreen, click the drop-down menu for Common Tree Name, point to Partial Matches, and choose Fern Pine.

    Tree Genus is set to Afrocarpus and Tree Species is set to gracilior. The highlight color updates to green, indicating that you have successfully updated fields with a valid contingent value combination.

    Setting Common Tree Name to Fern Pine automatically populates Tree Genus and Tree Species

    Next, you will test risk and impact potential and observe the effect of various choices.

  4. For Failure Risk, point to Partial Matches and choose Probable.

    Impact Potential automatically populates to Unlikely and Risk Rating is set to Low.

  5. Click the drop-down menu for Impact Risk.

    The only available choices are Very Low and Low.

    Apply risk assessment contingent values.

    Your choices for Impact Risk are limited based on the choice you made for Failure Risk.

    Note:

    You are able to overwrite current contingent values by clicking Show All, however by making a selection outside the contingent value list, you will invalidate your data.

  6. For Failure Risk, point to Partial Matches and choose Possible.
  7. For Impact Risk, point to Partial Matches and under Failure Risk: Possible, choose High.

    Field value choice affected by prior contingent value selection

    This demonstrates the usefulness of applying contingent values. One choice affects other choices based on a decision tree that prevents inconsistences and keeps data values.

  8. For Impact Potential, point to Partial Matches and under Failure Risk: Possible, choose Somewhat.
  9. For Consequences, point to Partial Matches and under Failure Risk: Possible, choose Significant.

    Based on the selections made for previous attribute fields, the contingent value for the overall Risk Rating is identified as Moderate. This result matches the likelihood matrix failure column as published in the ISA Risk Categorization form by the International Society of Arboriculture (ISA).

    Overall risk rating set to Moderate was identified by prior contingent value selections

    The fields are now highlighted in green instead of red, indicating that all contingent values are set and are valid and that you may now continue adding a new tree feature.

  10. In the Create Features pane, select the Point construction tool and add several new Evergreen trees to the map.

    Add new features with contingent value settings

  11. On the ribbon, click the Edit tab. In the Manage Edits group, click Save.
  12. In the Save Edits window, click Yes.
  13. Close the Create Features pane.
    Note:

    A common workflow is to append additional records to a feature class with contingent values applied. Appended values will successfully load, but you should then validate them using the ArcGIS Pro smart editor to identify features violating contingent values. The workflow is as follows: append records, open the attribute table, click the options button on the top right of the table, choose Only show contingent value fields, and choose Highlight invalid contingent values. Now you can review and identify invalid features and make updates as needed.

  14. Save the project.

In this tutorial, you investigated attribute validation applied to a tree inventory feature class and reviewed the implementation of a species decision tree using contingent values. In addition to identifying tree species, arborists frequently make tree risk assessments based on age, condition, and other factors. Using the ISA Basic Tree Risk Assessment form, you added a series of contingent values to assess tree failure risk and then created feature templates to simplify editing with the applied attribute validation.

If multiple people will be adding trees and assessing risk using the tree inventory layer, you may be concerned about data consistency. For example, not everyone shares the same opinion on the risk posed by different trees. However, by setting contingent values so the risk rating is derived from other, more specific attribute values, you can ensure consistency throughout your dataset.

You can find more tutorials in the tutorial gallery.