Simplify Line (Cartography)

Summary

Simplifies lines by removing relatively extraneous vertices while preserving essential shape.

Illustration

Simplify Line tool illustration
Sample results from the simplification algorithms are shown here for comparison.

Usage

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

    The options for the Simplification Algorithm parameter are listed below.

    • The Retain critical points (Douglas-Peucker) algorithm ("POINT_REMOVE" in Python) identifies and removes relatively redundant vertices to simplify data for display at smaller scales. It is the fastest of the simplification algorithm options in this tool. This option is often used for data compression or for coarse simplification. The angularity of the resulting lines increase significantly as the tolerance increases.
    • The Retain critical bends (Wang-Müller) algorithm ("BEND_SIMPLIFY" in Python") identifies and eliminates relatively insignificant bends to simplify data for display at smaller scales. It is typically more accurate regarding the input geometry than the Retain critical points (Douglas-Peucker) option but can take more time to process.
    • The Retain weighted effective areas (Zhou-Jones) algorithm ("WEIGHTED_AREA" in Python) identifies triangles of effective area for each vertex. The 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.
    • The Retain effective areas (Visvalingam-Whyatt) algorithm ("EFFECTIVE_AREA" in Python) identifies triangles of effective area for each vertex to guide the removal of vertices to simplify the line while retaining as much character as possible.

  • The Simplification Tolerance parameter value determines the degree of simplification. The larger the tolerance, the more coarse the resulting geometry. Smaller tolerances generate geometry that more accurately represents the input. The MinSimpTol and MaxSimpTol fields will be added to the output to store the tolerance that was used.

    Legacy:

    In the course of topology resolution, versions of the tool prior to ArcGIS Pro 1.4 modified tolerance on a per-feature basis and stored those values in the MinSimpTol and MaxSimpTol fields. Now the values in these fields will be the same and equal to the tolerance specified in the Simplification Tolerance parameter. Be sure to modify existing models and scripts that rely on these fields.

    • For the Retain critical points (Douglas-Peucker) algorithm, the tolerance is the maximum allowable perpendicular distance between each vertex and the new line created.
    • For the Retain critical bends (Wang-Müller) algorithm, the tolerance is the diameter of a circle that approximates a significant bend.
    • For the Retain weighted effective areas (Zhou-Jones) 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 Retain effective areas (Visvalingam-Whyatt) algorithm, the square of the tolerance is the area of a significant triangle defined by three adjacent vertices.

  • Use the Keep collapsed points parameter to create an output point feature class to store the endpoints of any lines that are smaller than the spatial tolerance of the data. The point output is derived; it will use the same name and location as the Output Feature Class parameter value but with a _Pnt suffix. The output line feature class contains all the fields from the input feature class. The output point feature class will not contain these fields.

  • Topological errors such as self-intersections and overlaps between features may be created when simplifying geometry. The Handling Topological Errors parameter has three options for determining what happens in these cases:

    • Do not check for topological errors—Topological errors will not be identified. Processing will be faster. Use this option when you have confidence in the topological accuracy of the data.
    • Flag topological errors—Topological errors will be identified and flagged. The output feature class will include the InLine_FID and SimLnFlag fields. The InLine_FID field will contain the input feature IDs. The SimLnFlag field will contain a value of 1 if a topological error is present or a value of 0 (zero) if no error is present.
    • Resolve topological errors—Topological errors will not be created in the output, and errors that exist in the input will have vertices inserted at the points of intersection. Existing topological relationships between features such as shared edges will be retained. Processing time will be longer. The output feature class will include the InLine_FID and SimLnFlag fields. The InLine_FID field will contain the input feature ID. The SimLnFlag field will contain a value of 1 if a topological error is present in the input or a value of 0 (zero) if no error is present.
    Legacy:

    Prior to ArcGIS Pro 1.4, the tool handled topological errors using the Check for topological errors and the Resolve topological errors parameters. These parameters are still included in the tool's syntax for compatibility in scripts and models but are now ignored and are hidden from the Geoprocessing pane. The SimLnFlag field was used to flag topological errors introduced by the tool in processing. This field identifies errors present in the input.

  • Use the Input Barrier Layers parameter to identify features that must not be crossed by simplified lines. Barrier features can be points, lines, or polygons.

  • Domains and subtypes will be copied to the output even if the Transfer Geodatabase Field Properties environment is not checked.

  • Processing large datasets 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 class will be seamless and consistent at partition edges. See Generalizing large datasets using partitions for more information.

  • Caution:

    The Cartographic Partitions environment setting is ignored when the Handling Topological Errors parameter is set to Do not check for topological errors or Flag topological errors.

Parameters

LabelExplanationData Type
Input Features

The input line features that will be simplified.

Feature Layer
Output Feature Class

The simplified output line feature class. It will contain all the fields from the input feature class. The output line feature class is topologically correct. The tool does not introduce topology errors, but topological errors in the input data will be flagged in the output line feature class. The output feature class will include the InLine_FID and SimLnFlag fields to contain the input feature IDs and the input topological errors, respectively. A SimLnFlag value of 1 indicates that an input topological error is present; a value of 0 (zero) indicates that no input error is present.

Feature Class
Simplification Algorithm

Specifies the line simplification algorithm that will be used.

  • Retain critical points (Douglas-Peucker)Critical points that preserve the essential shape of a line will be retained, and all other points will be removed (Douglas-Peucker). This is the default.
  • Retain critical bends (Wang-Müller)Critical bends will be retained, and extraneous bends will be removed from a line (Wang-Müller).
  • Retain weighted effective areas (Zhou-Jones)Vertices that form triangles of effective area that have been weighted by triangle shape will be retained (Zhou-Jones).
  • Retain effective areas (Visvalingam-Whyatt)Vertices that form triangles of effective area will be retained (Visvalingam-Whyatt).
String
Simplification Tolerance

The degree of simplification that will be used. You can choose a preferred unit; otherwise, the units of the input will be used. The MinSimpTol and MaxSimpTol fields will be added to the output to store the tolerance that was used when processing occurred.

  • For the Retain critical points (Douglas-Peucker) algorithm, the tolerance is the maximum allowable perpendicular distance between each vertex and the newly created line .
  • For the Retain critical bends (Wang-Müller) algorithm, the tolerance is the diameter of a circle that approximates a significant bend.
  • For the Retain weighted effective areas (Zhou-Jones) 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 Retain effective areas (Visvalingam-Whyatt) algorithm, the square of the tolerance is the area of a significant triangle defined by three adjacent vertices.
Linear Unit
Resolve topological errors
(Optional)
Legacy:

This is a legacy parameter that is no longer used. It was formerly used to indicate how topological errors, possibly introduced during processing, were resolved. This parameter is still included in the tool's syntax for compatibility in scripts and models but is hidden from the Geoprocessing pane.

Boolean
Keep collapsed points
(Optional)

Specifies whether an output point feature class will be created to store the endpoints of lines that are smaller than the spatial tolerance. The point output is derived; it will use the same name and location as the Output Feature Class parameter value but with a _Pnt suffix.

  • Checked—A derived output point feature class will be created to store the endpoints of collapsed zero length lines. This is the default.
  • Unchecked—A derived output point feature class will not be created.
Boolean
Check for topological errors
(Optional)
Note:

This is a legacy parameter that is no longer used. It was formerly used to indicate how topological errors, possibly introduced during processing, were handled. This parameter is still included in the tool's syntax for compatibility in scripts and models but is hidden from the Geoprocessing pane.

Boolean
Input Barrier Layers
(Optional)

Inputs containing features to act as barriers for simplification. Resulting simplified lines will not touch or cross barrier features. For example, when simplifying contour lines, spot height features input as barriers ensure that the simplified contour lines will not simplify across these points. The output will not violate the elevation as described by measured spot heights.

Feature Layer
Handling Topological Errors
(Optional)

Specifies how topological errors will be handled. Topological errors may be introduced in the simplification process and can include lines crossing or overlapping lines.

  • Do not check for topological errorsTopological errors will not be identified. This is the default.
  • Flag topological errorsTopological errors will be flagged.
  • Resolve topological errorsTopological errors will be resolved.
String

Derived Output

LabelExplanationData Type
Lines Collapsed To Zero Length

When the Keep collapsed points parameter is checked, an output point feature class is created to store the endpoints of lines that are smaller than the spatial tolerance of the data.

Feature Class

arcpy.cartography.SimplifyLine(in_features, out_feature_class, algorithm, tolerance, {error_resolving_option}, {collapsed_point_option}, {error_checking_option}, {in_barriers}, {error_option})
NameExplanationData Type
in_features

The input line features that will be simplified.

Feature Layer
out_feature_class

The simplified output line feature class. It will contain all the fields from the input feature class. The output line feature class is topologically correct. The tool does not introduce topology errors, but topological errors in the input data will be flagged in the output line feature class. The output feature class will include the InLine_FID and SimLnFlag fields to contain the input feature IDs and the input topological errors, respectively. A SimLnFlag value of 1 indicates that an input topological error is present; a value of 0 (zero) indicates that no input error is present.

Feature Class
algorithm

Specifies the line simplification algorithm that will be used.

  • POINT_REMOVECritical points that preserve the essential shape of a line will be retained, and all other points will be removed (Douglas-Peucker). This is the default.
  • BEND_SIMPLIFYCritical bends will be retained, and extraneous bends will be removed from a line (Wang-Müller).
  • WEIGHTED_AREAVertices that form triangles of effective area that have been weighted by triangle shape will be retained (Zhou-Jones).
  • EFFECTIVE_AREAVertices that form triangles of effective area will be retained (Visvalingam-Whyatt).
String
tolerance

The degree of simplification that will be used. You can choose a preferred unit; otherwise, the units of the input will be used. The MinSimpTol and MaxSimpTol fields will be added to the output to store the tolerance that was used when processing occurred.

  • For the POINT_REMOVE algorithm, the tolerance is the maximum allowable perpendicular distance between each vertex and the newly created line.
  • 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
error_resolving_option
(Optional)
Legacy:

This is a legacy parameter that is no longer used. It was formerly used to indicate how topological errors, possibly introduced during processing, were resolved. This parameter is still included in the tool's syntax for compatibility in scripts and models but is hidden from the Geoprocessing pane.

Boolean
collapsed_point_option
(Optional)

Specifies whether an output point feature class will be created to store the endpoints of lines that are smaller than the spatial tolerance. The point output is derived; it will use the same name and location as the out_feature_class parameter value but with a _Pnt suffix.

  • KEEP_COLLAPSED_POINTSA derived output point feature class will be created to store the endpoints of collapsed zero length lines. This is the default.
  • NO_KEEPA derived output point feature class will not be created.
Boolean
error_checking_option
(Optional)
Note:

This is a legacy parameter that is no longer used. It was formerly used to indicate how topological errors, possibly introduced during processing, were handled. This parameter is still included in the tool's syntax for compatibility in scripts and models but is hidden from the Geoprocessing pane.

Boolean
in_barriers
[in_barriers,...]
(Optional)

Inputs containing features to act as barriers for simplification. Resulting simplified lines will not touch or cross barrier features. For example, when simplifying contour lines, spot height features input as barriers ensure that the simplified contour lines will not simplify across these points. The output will not violate the elevation as described by measured spot heights.

Feature Layer
error_option
(Optional)

Specifies how topological errors will be handled. Topological errors may be introduced in the simplification process and can include lines crossing or overlapping lines.

  • NO_CHECKTopological errors will not be identified. This is the default.
  • FLAG_ERRORSTopological errors will be flagged.
  • RESOLVE_ERRORSTopological errors will be resolved.
String

Derived Output

NameExplanationData Type
out_point_feature_class

When the collapsed_point_option parameter is KEEP_COLLAPSED_ POINTS, an output point feature class is created to store the endpoints of lines that are smaller than the spatial tolerance of the data.

Feature Class

Code sample

SimplifyLine example 1 (Python window)

The following Python window script demonstrates how to use the SimplifyLine function in immediate mode.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.cartography.SimplifyLine(
    "roads.shp", 
    "C:/output/output.gdb/simplified_roads", 
    "POINT_REMOVE", 
    20)
SimplifyLine example 2 (stand-alone script)

The following stand-alone script demonstrates how to use the SimplifyLine function.

# Name: SimplifyLine_Example2.py
# Description: Simplify line features from two feature classes, rivers and coastlines,
# while maintaining their connections

# Import system modules
import arcpy
 
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
 
# Set local variables
inRiverFeatures = "rivers"
inCoastlineFeatures = "coastlines"

mergedFeatures = "C:/data/PortlandOutput.gdb/merged_lines"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/merged_lines_simplified"
tempLayer = "tempLyr"

outRiverFeatureClass = "C:/data/PortlandOutput.gdb/rivers_final"
outCoastlineFeatureClass = "C:/data/PortlandOutput.gdb/coastlines_final"

# Merge rivers and coastlines into one feature class, 
# assuming that they have a common f-code field 
# with value 40 for rivers and 80 for coastlines.
arcpy.management.Merge(inRiverFeatures, inCoastlineFeatures, mergedFeatures)

# Simplify all lines.
arcpy.cartography.SimplifyLine(mergedFeatures, 
                simplifiedFeatures, 
                "BEND_SIMPLIFY", 
                100, 
                "KEEP_COLLAPSED_POINTS")
 
# Select rivers and coastlines by their f-code values 
# and put them in separate feature classes.
arcpy.management.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 40")
arcpy.management.CopyFeatures(tempLayer, outRiverFeatureClass)

arcpy.management.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 80")
arcpy.management.CopyFeatures(tempLayer, outCoastlineFeatureClass)

Licensing information

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

Related topics