Add Relative Mainline Layout (Network Diagram)

Summary

Adds the Relative Mainline Layout algorithm to the list of layouts to be automatically chained at the end of the building of diagrams based on a given template. This tool also presets the Relative Mainline Layout algorithm parameters for any diagram based on that template.

This layout arranges the network diagram features in the active diagram along parallel straight lines, with all the connected edges having the same attribute value. It also places the branches from those lines, preserving their directions regarding the straight lines and the distances proportional to the initial distance and relative to each other.

Learn more about the Relative Mainline layout algorithm

Caution:

This tool is a configuration and administration tool.

Note:

This tool impacts the consistency of any existing diagrams based on the input diagram template. All of the existing diagrams become inconsistent and open with a consistency warning icon May be inconsistent until they are updated.

Usage

  • This tool is not supported when working with a utility network or trace network service. You must use either a utility network or trace network in a file geodatabase or a database connection to a utility network or trace network in an enterprise geodatabase. When working with an enterprise geodatabase the following are requirements:

  • To preset the layout algorithm parameters for any diagram based on the diagram template, uncheck the Active parameter (is_active = "INACTIVE" in Python).

  • Run the tool with Active checked (the default) (is_active = "ACTIVE" in Python) if you want the layout algorithm to be added to the list of layouts that will be automatically chained at the end of diagram generation based on the input diagram template.

Parameters

LabelExplanationData Type
Input Network

The utility network or trace network containing the diagram template to modify.

Utility Network; Trace Network
Input Diagram Template

The name of the diagram template to modify.

String
Active

Specifies whether the layout algorithm will automatically execute when generating diagrams based on the specified template.

  • Checked—The added layout algorithm will automatically run during the generation of any diagram that is based on the Input Diagram Template parameter. This is the default.

    The parameter values specified for the layout algorithm are used to run the layout during diagram generation. They are also loaded by default when the algorithm is to be run on any diagram based on the input template.

  • Unchecked—All the parameter values currently specified for the added layout algorithm will be loaded by default when the algorithm is to be run on any diagram based on the input template.

Boolean
Line Attribute

The name of the network attribute that will be used to identify the lines that comprise the straight lines. This network attribute must exist in the network line classes. Its values must be the same for all the edges that comprise a straight line, for example, Line 1, Line 2, and so on.

String
Direction
(Optional)

Specifies the direction of the main line.

  • From left to right —The main line will be drawn as a horizontal line starting from the left and ending on the right. This is the default.
  • From top to bottom —The main line will be drawn as a vertical line starting from the top and ending at the bottom.
String
Offset Between Branches
(Optional)

The spacing between two adjacent branches along the axis perpendicular to the direction of the lines.

Linear Unit
Break Point Angle (in degrees)
(Optional)

The angle that will be used to position the break point on the branches. It is a value between 30 and 90 degrees that is combined with the Offset Between Branches parameter value to compute this position. When the break point angle value is 90 degrees, each branch displays orthogonally.

Double
Type Attribute
(Optional)

The name of the network attribute that will be used to qualify the lines. This network attribute may exist in the network line classes.

Note:

The Type Attribute and Line Attribute parameter values can be the same.

String
Mainline Values
(Optional)

The Type Attribute values that identify the main lines. When such values exist, they must be the same for any edge that comprises the main lines, regardless of their related network feature line classes or edge object tables.

Value Table
Branch Values
(Optional)

The Type Attribute values that identify the branches.

Value Table
Excluded Values
(Optional)

The Type Attribute values that identify the edges that will be excluded from the straight lines (crossovers or ladders).

Value Table
Compression along the direction
(Optional)

Specifies whether the graph will be compressed.

  • Checked—Compression will be used. An additional step is executed at the end of the process to reduce the distances between adjacent groups of neighbor junctions along the direction while maintaining relative positioning between these groups. Neighbor junctions are junctions that are geographically close to each other without being directly connected.
  • Unchecked—Compression will not be used. This is the default.

Boolean
Ratio (%)
(Optional)

A value between 0 and 100 that is applied to the length of any edge after subtracting the minimal distance of its length. When Ratio (%) is 100, the distance between each detected junction group is equal to the minimal distance.

Double
Minimal Distance
(Optional)

The minimal distance between two adjacent groups of neighbor junctions. This minimal distance is also used to group neighbor junctions based on their projection along the direction axis. Two junctions projected on this axis will belong to the same group when the distance between the two projected points is less than this distance.

Linear Unit
Alignment Attribute
(Optional)

The name of the network attribute that will be used to align lines that are split. The algorithm aligns lines with the same attribute value.

String
Initial Distances
(Optional)

Specifies how the length of the diagram edges will be assessed. This length determines the positions of the junctions along the direction. The distances between the connected junctions along the direction are not equidistant; they are relative to each other and depend on the current edge length and the length of the shortest edge.

  • From current edge geometry — The distances will be computed from the current edge geometry. This is the default.
  • From attribute edge —The distances will be computed from a given attribute that exists on an edge.
String
Length Attribute
(Optional)

The network attribute from which the distances will be computed when Initial Distances is From attribute edge.

String

Derived Output

LabelExplanationData Type
Output Network

The updated utility network or trace network.

Utility Network; Trace Network
Output Diagram Template

The name of the diagram template.

String

arcpy.nd.AddRelativeMainlineLayout(in_utility_network, template_name, is_active, line_attribute, {mainline_direction}, {offset_between_branches}, {breakpoint_angle}, {type_attribute}, {mainline_values}, {branch_values}, {excluded_values}, {is_compressing}, {compression_ratio}, {minimal_distance}, {alignment_attribute}, {initial_distances}, {length_attribute})
NameExplanationData Type
in_utility_network

The utility network or trace network containing the diagram template to modify.

Utility Network; Trace Network
template_name

The name of the diagram template to modify.

String
is_active

Specifies whether the layout algorithm will automatically execute when generating diagrams based on the specified template.

  • ACTIVEThe added layout algorithm will automatically run during the generation of any diagram that is based on the template_name parameter. This is the default.The parameter values specified for the layout algorithm are used to run the layout during diagram generation. They are also loaded by default when the algorithm is to be run on any diagram based on the input template.
  • INACTIVEAll the parameter values currently specified for the added layout algorithm will be loaded by default when the algorithm is to be run on any diagram based on the input template.
Boolean
line_attribute

The name of the network attribute that will be used to identify the lines that comprise the straight lines. This network attribute must exist in the network line classes. Its values must be the same for all the edges that comprise a straight line, for example, Line 1, Line 2, and so on.

String
mainline_direction
(Optional)

Specifies the direction of the main line.

  • FROM_LEFT_TO_RIGHTThe main line will be drawn as a horizontal line starting from the left and ending on the right. This is the default.
  • FROM_TOP_TO_BOTTOMThe main line will be drawn as a vertical line starting from the top and ending at the bottom.
String
offset_between_branches
(Optional)

The spacing between two adjacent branches along the axis perpendicular to the direction of the lines.

Linear Unit
breakpoint_angle
(Optional)

The angle that will be used to position the break point on the branches. It is a value between 30 and 90 degrees that is combined with the offset_between_branches parameter value to compute this position. When the break point angle value is 90 degrees, each branch displays orthogonally.

Double
type_attribute
(Optional)

The name of the network attribute that will be used to qualify the lines. This network attribute may exist in the network line classes.

Note:

The type_attribute and line_attribute parameter values can be the same.

String
mainline_values
[mainline_values,...]
(Optional)

The type_attribute values that identify the main lines. When such values exist, they must be the same for any edge that comprises the main lines, regardless of their related network feature line classes or edge object tables.

Value Table
branch_values
[branch_values,...]
(Optional)

The type_attribute values that identify the branches.

Value Table
excluded_values
[excluded_values,...]
(Optional)

The type_attribute values that identify the edges that will be excluded from the straight lines (crossovers or ladders).

Value Table
is_compressing
(Optional)

Specifies whether the graph will be compressed.

  • USE_COMPRESSIONCompression will be used. An additional step is executed at the end of the process to reduce the distances between adjacent groups of neighbor junctions along the direction while maintaining relative positioning between these groups. Neighbor junctions are junctions that are geographically close to each other without being directly connected.
  • DO_NOT_USE_COMPRESSIONCompression will not be used. This is the default.
Boolean
compression_ratio
(Optional)

A value between 0 and 100 that is applied to the length of any edge after subtracting the minimal distance of its length. When compression_ratio is 100, the distance between each detected junction group is equal to the minimal distance.

Double
minimal_distance
(Optional)

The minimal distance between two adjacent groups of neighbor junctions. This minimal distance is also used to group neighbor junctions based on their projection along the direction axis. Two junctions projected on this axis will belong to the same group when the distance between the two projected points is less than this distance.

Linear Unit
alignment_attribute
(Optional)

The name of the network attribute that will be used to align lines that are split. The algorithm aligns lines with the same attribute value.

String
initial_distances
(Optional)

Specifies how the length of the diagram edges will be assessed. This length determines the positions of the junctions along the direction. The distances between the connected junctions along the direction are not equidistant; they are relative to each other and depend on the current edge length and the length of the shortest edge.

  • FROM_CURRENT_EDGE_GEOMETRY The distances will be computed from the current edge geometry. This is the default.
  • FROM_ATTRIBUTE_EDGEThe distances will be computed from a given attribute that exists on an edge.
String
length_attribute
(Optional)

The network attribute from which the distances will be computed when initial_distances is FROM_ATTRIBUTE_EDGE.

String

Derived Output

NameExplanationData Type
out_utility_network

The updated utility network or trace network.

Utility Network; Trace Network
out_template_name

The name of the diagram template.

String

Code sample

AddRelativeMainlineLayout example (Python window)

Add the Relative Mainline Layout as an automatic layout to the MyTemplate1 template related to the input network.

import arcpy
input_Network = "D:/MyProjectLocation/MyDatabaseConnection.sde/MyDatabase.MAP.Electric/MyDatabase.MAP.Electric"
input_DiagramTemplate = "MyTemplate1"

arcpy.AddRelativeMainlineLayout_nd(input_Network, input_DiagramTemplate, 
                               "ACTIVE", "LineTrack",
                               "FROM_LEFT_RIGHT", 2, 45)

Environments

This tool does not use any geoprocessing environments.

Licensing information

  • Basic: No
  • Standard: Yes
  • Advanced: Yes

Related topics