Simplify Shared Edges (Cartography)

Summary

Simplifies the edges of input features while maintaining the topological relationship with edges shared with other features.

Illustration

Simplify Shared Edges tool example
Input 1 and Input 2 are simplified on all edges. Shared Edge Polygon and Shared Edge Line are simplified only along edges shared with Input 1 and Input 2.

Usage

  • This tool employs different simplification algorithms for different purposes. To learn more about these algorithms, see How Simplify Line and Simplify Polygon work.

    • The Retain critical points (Douglas-Peucker) algorithm (algorithm='POINT_REMOVE' in Python) works by identifying and removing relatively redundant vertices to simplify data for display at smaller scales. It is the fastest of the simplification algorithms in this tool. This algorithm is often used for data compression or for coarse simplification. The angularity of the resulting lines increases significantly as the tolerance increases. This algorithm is based on the Douglas-Peucker algorithm: Douglas, David and Peucker, Thomas, "Algorithms for the reduction of the number of points required to represent a digitized line or its caricature," The Canadian Cartographer. 10(2), 112–22 (1973).
    • The Retain critical bends (Wang-Müller) algorithm (algorithm='BEND_SIMPLIFY' in Python) works by identifying and eliminating relatively insignificant bends to simplify data for display at smaller scales. It is typically more faithful to the input geometry than the Retain critical points (Douglas-Peucker) algorithm but can take more time to process. This algorithm is based on the algorithm defined in Wang, Zeshen and Müller, Jean-Claude, "Line Generalization Based on Analysis of Shape Characteristics," Cartography and Geographic Information Systems 25(1), 3–15 (1998).
    • The Retain weighted effective areas (Zhou-Jones) algorithm (algorithm='WEIGHTED_AREA' in Python) works by first identifying triangles of effective area for each vertex. Those triangles are then weighted by a set of metrics to compare the flatness, skewness, and convexity of each area. The weighted areas guide the removal of their corresponding vertices to simplify the line while retaining as much character as possible. This algorithm is based on the algorithm defined in Zhou, Sheng and Jones, Christopher B., "Shape-Aware Line Generalisation with Weighted Effective Area," in Fisher, Peter F. (Ed.), Developments in Spatial Handling: 11th International Symposium on Spatial Handling, 369–80 (2005).
    • The Retain effective areas (Visvalingam-Whyatt) algorithm (algorithm='EFFECTIVE_AREA' in Python) works by identifying triangles of effective area for each vertex to guide the removal of vertices to simplify the line while retaining as much character as possible. This algorithm is based on the algorithm defined in Visvalingam, M. and Whyatt, J. D., "Line Generalisation by Repeated Elimination of the Smallest Area," Cartographic Information Systems Research Group (CISRG) Discussion Paper 10, The University of Hull (1992).

  • This tool modifies the Input Features and Shared Edge Features parameters. It does not produce new output.

  • Simplification is applied to all Input Features edges and only Shared Edge Features edges that share an edge with any Input Features edges. Shared Edge Features edges that do not share an edge with at least one Input Features edge are not simplified.

Syntax

arcpy.cartography.SimplifySharedEdges(in_features, algorithm, tolerance, {shared_edge_features}, {minimum_area}, {in_barriers})
ParameterExplanationData Type
in_features
[in_features,...]

The lines or polygons to be simplified.

Feature Layer
algorithm

Specifies the simplification algorithm.

  • POINT_REMOVERetains critical points that preserve the essential shape of a polygon outline and removes all other points (Douglas-Peucker). This is the default.
  • BEND_SIMPLIFY Retains the critical bends and removes extraneous bends from a line (Wang-Müller).
  • WEIGHTED_AREARetains vertices that form triangles of effective area that have been weighted by triangle shape (Zhou-Jones).
  • EFFECTIVE_AREA Retains vertices that form triangles of effective area (Visvalingam-Whyatt).
String
tolerance

Determines the degree of simplification. If a unit is not specified, the units of the input will be used.

  • For the POINT_REMOVE algorithm, the tolerance is the maximum allowable perpendicular distance between each vertex and the new line created.
  • For the BEND_SIMPLIFY algorithm, the tolerance is the diameter of a circle that approximates a significant bend.
  • For the WEIGHTED_AREA algorithm, the square of the tolerance is the area of a significant triangle defined by three adjacent vertices. The further a triangle deviates from equilateral, the higher weight it is given, and the less likely it is to be removed.
  • For the EFFECTIVE_AREA algorithm, the square of the tolerance is the area of a significant triangle defined by three adjacent vertices.
Linear Unit
shared_edge_features
[shared_edge_features,...]
(Optional)

Line or polygon features that will be simplified along edges shared with input features. Other edges are not simplified.

Feature Layer
minimum_area
(Optional)

The minimum area for a polygon to be retained. The default value is zero, which will retain all polygons. A unit can be specified; if no unit is specified, the unit of the input will be used. This parameter is available only when at least one of the inputs is a polygon feature class.

Areal Unit
in_barriers
[in_barriers,...]
(Optional)

Point, line, or polygon features that act as barriers for the simplification. The simplified features will not touch or cross barrier features.

Feature Layer

Derived Output

NameExplanationData Type
out_feature_class

The smoothed input features.

Feature Layer
out_shared_edge_feature_class

The shared edge features.

Feature Layer

Code sample

SimplifySharedEdges example (Python window)

The following Python window script demonstrates how to use the SimplifySharedEdges tool in immediate mode:

import arcpy
arcpy.env.workspace = "C:/data/LandUse.gdb"
arcpy.SimplifySharedEdges_cartography
arcpy.SimplifySharedEdges_cartography("Water;Parks;", 
                                      "POINT_REMOVE", 
                                      "10 Meters", 
                                      "Commercial;Highways;Buildings", 
                                      "0 SquareMeters")
SimplifySharedEdges example (stand-alone script)

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

# Name: SimplifySharedEdges_standalone_script.py
# Description: Simplifies input features while maintaining topological 
#              relationships along shared edges. For features included as 
#              shared_edge_features (4th argument of 
#              SimplifySharedEdges_cartography()) only the edges that are shared 
#              with in_features (1st argument) are simplified. 

# Import system modules
import arcpy

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

# Set local variables
in_features = "Water;Parks"
algorithm = "POINT_REMOVE"
tolerance = "10 Meters"
shared_edge_features = "Commercial;Highways;Buildings"
minimum_area = "0 SquareMeters"
barriers = None

# Execute Simplify Shared Edges
arcpy.SimplifySharedEdges_cartography(in_features, algorithm, tolerance, 
                                      shared_edge_features, minimum_area, 
                                      barriers)

Licensing information

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

Related topics