Propagate Displacement (Cartography)


Propagates the displacement resulting from road adjustment in the Resolve Road Conflicts and Merge Divided Roads tools to adjacent features to reestablish spatial relationships.

An optional output of both the Resolve Road Conflicts and Merge Divided Roads tools is a displacement feature class. Displacement features store the amount and direction of change from the initial state of the data before these tools are run. Displacement information can then be applied to nearby features from different themes to ensure that spatial relationships are retained using this tool. For example, if roadways are separated by the Resolve Road Conflicts tool, it is often necessary to shift adjacent buildings along the roads accordingly.

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 running this tool.


This tool will act cumulatively if run on the same dataset multiple times. In some cases, features may be moved farther and farther away from their original location, which may lead to unexpected and unwanted results.


  • The locations of input features are adjusted based on the vector displacements contained in the displacement features. Adjustments are a compromise of all displacements, such that large displacements that occurred near an input feature will have more influence than smaller displacements farther away. Conceptually, this action is similar to a rubber-sheeting process that moves features in various directions by various amounts to fit them back to the spatial relationship that they originally had with the roads.

  • This tool does not resolve graphic conflicts and in fact may introduce new conflicts. Topological errors that are introduced can be inspected using the Detect Graphic Conflict tool. If you are using this tool to propagate displacement to building features, consider running the Resolve Building Conflicts tool after propagation.

  • This tool operates on the displacement output generated by the Resolve Road Conflicts and Merge Divided Roads tools, which can be enabled to run by partitioning (using the Cartographic Partitions geoprocessing environment variable) when large datasets are processed. In this case, a single seamless displacement feature class will generated. Although this may be a very large feature class when generated with partitions, the information held within is not complex. This tool can manage the displacement polygons as inputs without using partitioning. See Generalizing large datasets using partitions for more information about processing large datasets.


arcpy.cartography.PropagateDisplacement(in_features, displacement_features, adjustment_style)
ParameterExplanationData Type

The input feature layer containing features that may be in conflict. May be point, line, or polygon.

Feature Layer

The displacement polygon features created by the Resolve Road Conflicts or the Merge Divided Roads tools that contain the degree and direction of road displacement that took place. These polygons dictate the amount of displacement that will be propagated to the input features.

Feature Layer

Defines the type of adjustment that will be used when displacing input features.

  • AUTOThe tool will decide for each input feature whether a SOLID or an ELASTIC adjustment is most appropriate. In general, features with orthogonal shapes will have SOLID adjustment applied, while organically shaped features will have ELASTIC adjustment applied. This is the default.
  • SOLIDThe feature will be translated. All vertices will move the same distance and direction. Topological errors may be introduced. This option is most useful when input features have regular geometric shapes.
  • ELASTICThe vertices of the feature may be moved independently to best fit the feature to the road network. The shape of the feature may be modified slightly. Topological errors are less likely to be introduced. This option only applies to line and polygon input features. This option is most useful for organically shaped input features.

Derived Output

NameExplanationData Type

The updated input features.

Feature Layer

Code sample

PropagateDisplacement example 1 (Python window)

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

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.PropagateDisplacement_cartography("footprints.lyr", "displacement.lyr", 
PropagateDisplacement example 2 (stand-alone script)

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

# Name:
# Description: Propagate the displacement of road features to nearby buildings
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env

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

# Set local variables
in_features = "footprints.lyr"
displacement_features = "displacement.lyr"
adjustment_style = "AUTO"

# Execute Propagate Displacment
arcpy.PropagateDisplacement_cartography(in_features, displacement_features, adjustment_style)


This tool does not use any geoprocessing environments.

Licensing information

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

Related topics