Network attributes are associated with attributes on features in your network. They are derived from feature attributes and cached inside the network topology to aid in performance while feature attributes are evaluated during a trace or while performing subnetwork management tasks. The values stored as attributes for features in a map are reflected or updated in the associated network attribute each time you validate the network topology.
Existing network attributes in a utility network can be viewed in the Layer Properties dialog box for the utility network. The Attributes and Assignments section on the Network properties tab includes detailed properties of existing network attributes and their assignments (feature class and field the network attribute is assigned to). This includes the system-provided and user-defined network attributes for a utility network that are available for tracing and subnetwork management tasks.
The following are two system-provided network attributes in a utility network that are listed in the Attributes and Assignments section of the network properties:
- Shape length—Associated with the Shape_Length field on the Line feature class. This is an apportionable network attribute that can be used to calculate the total length of a trace, for example, a group of pipes or a portion of a pipe.
- Is subnetwork controller—Associated with the Is Subnetwork Controller field on the Device feature class and JunctionObject table. This is a system-maintained field that is altered when features are set as a subnetwork controller.
Create and assign network attributes
User-defined network attributes are created using the Add Network Attribute tool, and assigned to an attribute field using the Set Network Attribute tool.
Some important notes about configuring network attributes:
- To assign a network attribute to an attribute field using the Set Network Attribute tool, it must have a compatible data type as listed above. If an attribute field with the correct data type is not present to set the network attribute, one can be added using the Add Field tool.
- Network attributes that are defined as not nullable can only be assigned to fields that are not nullable.
- A network attribute can be assigned to multiple datasets in a utility network.
- A dataset can have multiple unique network attribute assignments. This means that once a network attribute is set on a dataset for a specific field, that network attribute can no longer be assigned to the same class again.
When creating a new network attribute using the Add Network Attribute tool, the data type chosen for the Attribute Type parameter will determine what options are available to define the network attribute. This will also determine what attribute fields the network attribute can be assigned to after it is created using the Set Network Attribute tool, as the data types must match.
The Attribute Type parameter used when creating a new network attribute determines what properties are available:
- Short
- In Line—Domain Name required for attribute domain
- Nullable—Supports null values
- Long
- In Line—Domain Name required for attribute domain
- Substitution—Available when In Line is false
- Nullable—Supports null values
- Double
- Apportionable
- Nullable—Supports null values
- Date
- Nullable—Supports null values
Network attribute properties include the following:
In Line—Specifies whether the network attribute is persisted inline. The most frequently used network attributes should be stored with the In Line property set to True. This property can only be set when the Attribute Type is an integer data type of Short or Long. Creating a network attribute using the In Line option requires an input attribute domain that is used to calculate the number of bits to store in the network topology. The same attribute domain used to create the In Line network attribute must also be assigned to the field the network is set on. Also, the values for the field must be positive. If the same network attribute is assigned to multiple classes and attributes, the expectation is that the network attribute has the same representation across classes.
Learn more about calculating the bit size for In Line network attributes
Apportionable—Specifies whether the network attribute will be apportioned across multiple edges belonging to the same feature. The distribution of the value depends on the percentage along each edge element with respect to the from point of the original feature. This property can only be set to True when the Attribute Type is Double.
Learn more about apportionable network attributes
Substitution—Specifies whether the network attribute can be configured for attribute substitution. The Substitution property can only be set to True for network attributes with an Attribute Type of Long when the In Line property is False.
Calculate the bit size for In Line network attributes
There are a total of 64 bits available in the network topology for the storage of In Line network attributes; this includes user-defined and system-provided network attributes. A total of 20 bits are reserved in the network topology for user-defined network attributes that are created using the In Line option. When creating In Line network attributes, it is important to understand how to calculate the bit size storage. The Attributes and Assignments section of the network properties lists how many bits are used for existing network attributes under the Inline (Bit Size) column. Note that there are additional system-provided network attributes used internally that are not listed in the network properties.
When creating network attributes that have the In Line property set as True, an attribute domain must be specified to determine the bit size for storage. To determine the bit size needed to store the attributes, the max coded domain value is used. The bit size can be calculated by entering the max coded value for the domain into the following binary logarithm as the value n.
ceiling(log2(n + 1))
Note:
In line network attributes defined as nullable require an extra bit to be added to the total bit size.For example, the LifeCycleStatus coded value domain has four code/description pairs (0: unknown, 1: In-service, 2: Proposed, 3: Abandoned). This consumes two bits to store the network attribute. ceiling(log2(3+1))=2
Also refer to the table below; the maximum value for the coded value domain must be less than or equal to the maxDomainValue to determine the bit size used for the network attribute.
Bit Size | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
maxDomainValue | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 |
Work with network attributes
Tracing and network diagrams rely on network attribute information stored in a network topology. If changes are made to an attribute on a feature that is associated with a network attribute, a dirty area is generated to mark the feature for validation. Validating the network topology helps ensure information in the network topology is consistent for analytic events.
When updating a subnetwork, network attributes can be used to define the features that will be updated. This is controlled by the subnetwork definition set for a tier. Filters are used to apply the update to only features with a certain attribute value—for example, only AB phase, where phase is the network attribute and AB is the filter value.
Network attributes are also used as weights to control traversability and to model the cost of tracing paths in the network. For example, in a water network, a certain amount of pressure is lost when traveling the length of a transmission main due to surface friction in the pipes. The network attribute value in this example is derived from the length attribute of the transmission mains.
Apportionable network attributes
Apportionable network attributes are configured with the apportionable property set to True. Network attributes with the apportionable property can be assigned to fields in the line, polygon, or junction feature classes, but only line features will have apportioned behavior.
For apportionable network attributes, analytic results are more precise because apportionable values such as line length, impedance, or other flow characteristics will be computed for the more accurate locations of tap features on a line. This means that trace configurations using apportionable network attributes with a function (Add, Average, Count, Max, Min, and Subtract) will return apportionable results based on edge elements of the network features.
The image below provides two examples:
- The top image shows a connected line feature with a single edge. The example has one line feature and two junction features. Two line end junction features are spatially coincident with the end vertices of the line. This is the simple case of a connected line feature in a utility network.
- The bottom image shows a connected line with two edges. The example has one line feature and three junction features. A tap junction feature is added and snapped to a vertex. This logically divides the line feature into subparts that are called edges. An edge is a set of one or more line segments between two junction features that are connected to a line feature. When doing analysis on apportionable network attributes, edges are collected to more precisely define the scope of analysis.
To learn more about tracing with network attributes, see Configure a trace.
Also, see Subnetwork trace configuration to learn how network attributes are used within the subnetwork definition of a tier.
Advanced network attribute configuration
It is appropriate to use network attributes when modeling a characteristic of assets with more than one state (for example, phase or pressure). Network attributes are used during attribute propagation and attribute substitution. Propagation uses network attributes to propagate calculated values during a trace or subnetwork management event. Substitutions allow you to swap propagated values out for other values; for example, AC becomes BC. To work with attribute substitution, the network attribute must be created with the Substitution property set to True and a Network Attribute to Substitute defined.
To learn more about these configurations, see Attribute propagation and Attribute substitution.