Our Insights

ArcGIS Utility Network Model: A Practical Example of Applied Symbology

May 22, 2017

by Robert Krisher
Senior Consultant at POWER Engineers
This article was originally published as a LinkedIn Article

This article is the second in a series all about the ESRI Utility Network model being released for ArcGIS Pro. If you haven’t read the previous article or aren’t already familiar with the terminology and structure of the new Utility Network Model I would suggest you read the previous article here.

Consolidated Model

The good news about consolidating all of the different feature classes down to a handful of tables is that it will greatly reduce the amount of time it takes to load and draw your map products. The current standard utility models for either gas or electric each require over 20 tables, so a utility that owns both gas and electric assets could expect to go from having over 40 layers in their map document to having just 13 upon switching to the new utility model! While this is great news for performance it presents a new challenge in terms of how to manage symbology. Because ESRI limits you to using no more than 3 different fields for defining your symbology, customers who are already at this limit will find themselves needing to adjust their configuration to account for the new asset group / asset types in their data model. While some may choose to tackle this problem by implementing customizations it may be possible for many customers to address this problem through some clever configuration.

Consolidating Fields: Symbol Codes

Developers and Administrators who are familiar with ArcMap are well aware of the “three field limit” imposed by symbology. Those who found themselves needing to use information from more than three fields to symbolize features have come up with a variety of ways to consolidate all the possible combinations required by your displays. In ArcMap this has historically been implemented via customization, however this can now be achieved in ArcGIS Pro OOTB through configuration.

In ArcMap if you found that you had complex rules controlling how you needed to symbolize features you would need to create a customization that was capable of calculating a “symbol code” whenever a feature was created or updated. What is a “symbol code”? Simply put, a symbol codes is a numeric value that is used to describe the different field value combinations used to symbolize your features, and each of these values will correspond to a specific symbol in your organization’s style / symbology. One of the most common examples of where a utility will need to rely on symbol codes is when they are defining the symbology for their structures.

Whether it’s the vault housing a transformer or a pole suspending a fiber optic cable, structures are the literal backbone of a utility and as such the map products that depict structures need to concisely convey as much information about the structures as possible through the use of both symbols and labels. As an example it’s not uncommon for a utility to want to know the type, material, and ownership of the structure along with information about the purpose of the structure. The following is an example of some common requirements of how to represent a pole:

Because the symbol for this type of object relies using information found in 6 different fields to define its symbol it will require the use of a calculated symbol code in order to assign symbology. In ArcMap this was traditionally done by evaluating a set of predefined rules for each feature class whenever a feature was created or edited in order to store a symbol code value on the feature.

ArcGIS Pro: Arcade

With the introduction of ArcGIS Pro ESRI not only introduced the ability to create expressions for defining different symbol values but they also provided a new language called Arcade that can be used to implement these expressions, and that is supported across all the new ArcGIS platforms (ArcGIS Pro, ArcGIS Runtime, and the Web). With this new language an expression can be defined that uses as many fields as required and can incorporate complex expressions to handle the intricacies of the data being dealt with.

In order to come up with the logic required to define the expression I would perform an analysis on all of the different values present in the data and I would assign all of the desirable combinations a number, the following table shows an abbreviated representation of the example in the previous section:

Once the rules for calculating symbol codes have been defined an arcade script can be created and assigned to the layer in your map document by opening up the symbology properties for layer and clicking the “Set Expression” button.

The arcade script can then be written and tested in the resulting dialog:

While the logic in Arcade expressions is pretty similar to the code written in ArcMap to generate a symbol code there are some important differences. Firstly, the expressions are embedded in the map so that any user who opens up the map can see the correct symbology without downloading or installing any custom code. Secondly, because this expression is an Arcade expression that means that it will be supported in any ArcGIS Runtime or ArcGIS Web applications that are developed as well allowing a consistent look and feel for map products across all platforms.

Symbol Ranges

Articles in my previous series have discussed some of the ways ArcGIS Pro lets you streamline your displays and de-clutter your maps; I’ve included links to these articles at the bottom of this post. These features in ArcGIS Pro are convenient for a typical GIS user, but for the utility network model it is absolutely critical that they are well understood and implemented in order to build performant displays. When properly implemented these features not only improve the look and performance of displays but will also reduce the complexity and administrative burden of maintaining displays.

A practical example of using these features is in the application of symbol ranges. The symbol range feature in ArcGIS Pro allows us to set scales for showing and hiding feature on a symbol by symbol basis. Because the utility network model consolidates very diverse set of features into a handful of layers this often means that features will need to be suppressed on a symbol by symbol basis. Using the Electric Distribution Line layer as an example this layer will show all the features when a user is zoomed in but when the map is zoomed out it will likely only show sub-transmission and distribution lines to prevent the user from being overwhelmed with information.

Here’s an example of a map with no scale ranges:

Here’s an example of a scale range set for low/medium voltage when we’re zoomed out:

When all of the medium and low voltage features are suppressed it allows the map to show that there are several different variety of sub-transmission lines in the area. Zooming in further will allow the map to display the medium voltage distribution features.

Finally when the map is zoomed all the way in the low voltage lines will become visible:

Display Filters

While symbol ranges provide a sensible way of adding intelligence to our maps it does add a new problem for many utilities. As different types of suppression are applied to the map documents it is fairly common for conflicts to arise between the different sets of suppression that will cause some features to floating out in the middle of space.

One solution to this approach is to add an attribute that allows for the features in different classes to be classified using a similar set of characteristics. In this example this would involve creating a domain that classifies an electric device based off of the voltage class of the line it is connected to then adding and populating the field for all of the point features. Here’s an example of a “Line Usage” domain:

Now that this information is available the layer can be set up to use a new feature added in ArcGIS Pro 1.4, display filters. This configuration can be found on the symbology tab for each layer and works like a cross between definition queries and scale ranges. Each of these Display Filters consists of an expression that defines a set of features in the layer along with a scale bar that determines at which scales those features should be visible. For this example we would want to set up display filters for each of the Line Usage values and configure them to line up with the symbol ranges we have defined for our line features.

Here is the map while zoomed into the secondary scale range where all features are visible.

When the map is zoomed out to a primary scale range all of the secondary point features are now suppressed using the display filter.


This concludes part two of my first article in the new Utility network series. For those of you who were already familiar with the new utility model, I hope I was able to get you thinking about how this new platform applies to you. If this is your first exposure to the new utility model I hope you stick around for my next article where I start talking about the how the new connectivity model works.

About the Author:

Robert is a Senior Consultant in POWER’s Geospatial and Asset Management group with over 10 years of industry experience. Robert excels at pushing the boundaries of what is possible with GIS and related technologies at utilities, often by repurposing proven technologies and methods in clever ways. As an active member of many early access programs across the industry and author of more than a dozen published articles, Robert is a recognized expert with Esri’s latest technology including ArcGIS Pro and the new Utility Network. He loves finding innovative solutions to complex challenges and sharing his insights with the GIS community. If you have any questions or comments for Robert, you can contact him at robert.krisher@powereng.com.