Resolve Road Conflicts (Cartography)


Resolves graphic conflicts among symbolized road features by adjusting portions of line segments.

Learn more about how Resolve Road Conflicts works


This tool does not produce output layers but instead alters the geometry of the source feature classes of the input layers. It is strongly suggested that you make a copy of your input features before you run this tool.


A warning is raised if the input features are not in a projected coordinate system. This tool relies on linear distance units, which will create unexpected results in an unprojected coordinate system. It is strongly suggested that you run this tool on data in a projected coordinate system to ensure valid results. An error is raised and the tool will not process if the coordinate system is missing or unknown.


The Resolve Road Conflicts tool
Road network before and after the Resolve Road Conflicts tool


  • This tool is typically used when producing relatively large-scale products where it is preferable to display divided roads with multiple lanes that are visually distinct. At smaller scales, you may want to use the Merge Divided Roads tool to display a single representative line for these features instead. If your workflow includes running both tools on the same collection of roads, it is advisable to merge roads prior to resolving road conflicts.

  • The Hierarchy Field parameter is used to specify the hierarchical importance of each road class. Lower integers specify more significant roads, with hierarchy equal to 1 for the most important roads. Movement will be minimized for the most important roads; lower-hierarchy roads generally will be moved to accommodate higher-hierarchy roads. The hierarchy field must be present and named the same for all input feature classes.

  • This tool operates by assessing graphic conflicts of symbolized features. The symbology extent and the reference scale are considered in conjunction with one another. Run this tool only after you have finalized the appearance of your symbols, and ensure that the reference scale corresponds to the final intended output scale.

    An error will be raised if line and outline symbol widths equal zero. To eliminate certain features from display, consider using a definition query on the layer.

  • You can lock features from displacement by calculating the Hierarchy Field value equal to 0 (zero). This is useful when a road should not be moved because of its spatial relationship with other map features, especially continuous data like elevation.

  • Processing large road datasets or a number of datasets together may exceed memory limitations. In this case, consider processing input data by partition by identifying a relevant polygon feature class in the Cartographic Partitions environment setting. Portions of the data, defined by partition boundaries, will be processed sequentially. The resulting feature classes will be seamless and consistent at partition edges. See How Resolve Road Conflicts works for more information about running this tool with partitioning.

  • The optional Output Displacement Feature Class parameter creates a feature class of polygons that indicates the amount and direction of displacement that took place. This feature class can be used for visual inspection, for spatial querying, or as an input to the Propagate Displacement tool.


arcpy.cartography.ResolveRoadConflicts(in_layers, hierarchy_field, {out_displacement_features})
ParameterExplanationData Type

The input feature layers containing symbolized road features that may be in conflict.


The field that contains hierarchical ranking of feature importance, where 1 is very important and larger integers reflect decreasing importance. A value of 0 (zero) locks the feature to ensure that it is not moved. The hierarchy field must be present and named the same for all input feature classes.


The output polygon features containing the degree and direction of road displacement, to be used by the Propagate Displacement tool to preserve spatial relationships.

Feature Class

Derived Output

NameExplanationData Type

The updated input features.


Code sample

ResolveRoadConflicts example 1 (Python window)

The following Python window script demonstrates how to use the ResolveRoadConflicts tool in immediate mode.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.env.referenceScale = "50000"
arcpy.ResolveRoadConflicts_cartography(["C:/data/roads.lyr", "C:/data/streets.lyr", "C:/data/highways.lyr"],
                                        "hierarchy", "C:/data/cartography.gdb/transportation/displace")
ResolveRoadConflicts example 2 (stand-alone script)

This stand-alone script shows an example of using the ResolveRoadConflicts tool.

# Name:
# Description: Resolves symbology conflicts between roads by separating them apart from each other
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"
env.referenceScale = "50000"

# Set local variables
in_layers = "C:/data/roads.lyr;C:/data/streets.lyr;C:/data/highways.lyr"
hierarchy_field = "hierarchy"
out_displacement_features = "C:/data/cartography.gdb/transportation/displace"

# Execute Resolve Road Conflicts
arcpy.ResolveRoadConflicts_cartography(in_layers, level_field, out_displacement_features)

Licensing information

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

Related topics