ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Help
  • Sign Out
ArcGIS Desktop

ArcGIS Online

The mapping platform for your organization

ArcGIS Desktop

A complete professional GIS

ArcGIS Enterprise

GIS in your enterprise

ArcGIS Developers

Tools to build location-aware apps

ArcGIS Solutions

Free template maps and apps for your industry

ArcGIS Marketplace

Get apps and data for your organization

  • Documentation
  • Support
Esri
  • Sign In
user
  • My Profile
  • Sign Out

ArcMap

  • Home
  • Get Started
  • Map
  • Analyze
  • Manage Data
  • Tools
  • Extensions

Simplify Polygon

  • Summary
  • Illustration
  • Usage
  • Syntax
  • Code sample
  • Environments
  • Licensing information

Summary

Simplifies polygon features by removing relatively extraneous vertices while preserving essential shape.

Illustration

Simplify Polygon tool algorithm option examples
Sample results from the simplification algorithms are shown here for comparison.

Usage

  • This tool uses different simplification algorithms for different purposes:

    • POINT_REMOVE algorithm—Identifies and removes 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 polygon outline 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–122 (1973).
    • BEND_SIMPLIFY algorithm—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 POINT_REMOVE 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).
    • WEIGHTED_AREA algorithm—Identifies triangles of effective area for each vertex. These 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 polygon outline 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).
    • EFFECTIVE_AREA algorithm—Identifies triangles of effective area for each vertex to guide the removal of vertices to simplify the polygon outline 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).

  • 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 represent the input. The MinSimpTol and MaxSimpTol fields are added to the output to store the tolerance that was used.

    • 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.

  • Any polygons that are smaller than the Minimum Area parameter value are removed from the output feature class. For a group of adjacent polygons that share common edges, the minimum area applies to the total area of the group. Use the Keep collapsed points parameter to retain a record of removed polygons as point features.

  • Multipart polygons are simplified as individual parts.

  • Use the Keep collapsed points parameter (collapsed_point_option in Python) to create an output point feature class to store points that represent any polygons that are removed because they are smaller than the minimum area. The point output is derived; it will use the same name and location as the Output feature class parameter value (out_feature_class in Python) but with a _Pnt suffix. The output polygon feature class contains all the fields present in the input feature class. The output point feature class does not contain any of these fields.

  • The output polygon feature class is topologically correct. Any topological errors in the input data are flagged in the output polygon feature class. The output feature class includes two additional fields, InPoly_FID and SimPgnFlag, that contain the input feature IDs and topological errors or discrepancies of the input, respectively.

    SimPgnFlag field values are as follows:

    • SimPgnFlag = 0 indicates that no errors are present.
    • SimPgnFlag = 1 indicates a topological error is present.
    • SimPgnFlag = 2 indicates features that have been split by a partition and are now smaller than the minimum area after simplification. The flag may appear on only one part of the split feature. These features are all retained in the output feature class. This situation occurs only when the Cartographic Partitions environment setting is used.
    Legacy:

    In previous versions of this tool, topological errors could be generated during processing. The Handling topological errors (error_option in Python) parameter is still included in the tool's syntax for compatibility in scripts and models but is now ignored and hidden from the tool's dialog box.

    The SimPgnFlag field was used to flag topological errors in the output feature class that were introduced by the tool in processing. This field now flags errors that are present in the input. Also, in the course of topology resolution, previous versions of the tool modified tolerance on a per-feature basis and stored those values in the MinSimpTol and MaxSimpTol fields. In the current implementation, 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 or scripts that rely on any of these fields.

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

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

Syntax

arcpy.cartography.SimplifyPolygon(in_features, out_feature_class, algorithm, tolerance, {minimum_area}, {error_option}, {collapsed_point_option}, {in_barriers})
ParameterExplanationData Type
in_features

The input polygon features to be simplified.

Feature Layer
out_feature_class

The simplified output polygon feature class. It contains all fields present in the input feature class. The output polygon feature class is topologically correct. The tool does not introduce topology errors, but topological errors in the input data are flagged in the output polygon feature class.

The output feature class includes two additional fields, InPoly_FID and SimPgnFlag, that contain the input feature IDs and the input topological errors or discrepancies, respectively.

SimPgnFlag attribute values are as follows:

  • SimPgnFlag = 0 indicates that no errors are present.
  • SimPgnFlag = 1 indicates a topological error is present.
  • SimPgnFlag = 2 indicates features that have been split by a partition and are now smaller than the minimum area after simplification. The flag may appear on only one part of the split feature. These features are all retained in the output feature class. This situation occurs only when the Cartographic Partitions environment setting is used.

Feature Class
algorithm

Specifies the polygon simplification algorithm.

  • POINT_REMOVE —Critical points that preserve the essential shape of a polygon outline are retained, and all other points are removed (Douglas-Peucker). This is the default.
  • BEND_SIMPLIFY —Critical bends are retained, and extraneous bends are removed from a line (Wang-Müller).
  • WEIGHTED_AREA —Vertices that form triangles of effective area that have been weighted by triangle shape are retained (Zhou-Jones).
  • EFFECTIVE_AREA —Vertices that form triangles of effective area are retained (Visvalingam-Whyatt).
String
tolerance

The tolerance determines the degree of simplification. You can choose a preferred unit; otherwise, the units of the input will be used. The MinSimpTol and MaxSimpTol fields are 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
minimum_area
(Optional)

The minimum area for a polygon to be retained. The default value is zero, that is, to keep all polygons. You can choose a preferred unit for the specified value; otherwise, units of the input will be used.

Areal Unit
error_option
(Optional)
Legacy:

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

String
collapsed_point_option
(Optional)

Specifies whether an output point feature class will be created to store the centers of polygons that are removed because they are smaller than the minimum_area parameter value. The point output is derived; it will use the same name and location as the polygon output feature class specified in the out_feature_class parameter but with a _Pnt suffix.

  • KEEP_COLLAPSED_POINTS —A derived output point feature class will be created to store the centers of polygons that are removed because they are smaller than the minimum area. This is the default.
  • NO_KEEP —A derived output point feature class will not be created.
Boolean
in_barriers
[in_barriers,...]
(Optional)

The inputs containing features to act as barriers for simplification. Resulting simplified polygons will not touch or cross barrier features. For example, when simplifying forested areas, the resulting simplified forest polygons will not cross road features defined as barriers.

Feature Layer

Derived Output

NameExplanationData Type
out_point_feature_class

When the Keep collapsed points parameter (collapsed_point_option in Python) is used, an output point feature class is created to store points that represent polygons that are removed because they are smaller than the minimum area.

Feature Class

Code sample

SimplifyPolygon example 1 (Python window)

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

import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SimplifyPolygon("soils.shp", "C:/output/output.gdb/simplified_soils", "POINT_REMOVE", 100)
SimplifyPolygon example 2 (stand-alone script)

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

# Name: SimplifyPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake 
#              boundaries.

# Import system modules
import arcpy
import arcpy.management as DM
import arcpy.cartography as CA
 
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
 
# Set local variables
inLakeFeatures = "lakes"
eliminatedFeatures = "C:/data/PortlandOutput.gdb/lakes_eliminated"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/lakes_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/lakes_smoothed"

# Eliminate small islands in lake polygons.
DM.EliminatePolygonPart(inLakeFeatures, eliminatedFeatures, 100, "OR", 0, 
                        "CONTAINED_ONLY")
 
# Simplify lake polygons
CA.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 
                   200, "#", "KEEP_COLLAPSED_POINTS")

# Smooth lake polygons
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, 
                 "FLAG_ERRORS")

Environments

  • Cartographic Partitions
  • Current Workspace
  • Default Output Z Value
  • Output M Domain
  • Output XY Domain
  • Output Coordinate System
  • Extent
  • Output has M values
  • Output has Z values
  • Scratch Workspace
  • XY Tolerance

Licensing information

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

Related topics

  • An overview of the Generalization toolset
  • Understanding conflict resolution and generalization
  • Automating conflict resolution and generalization workflows with geoprocessing
  • Simplify Line
  • Simplify Building
  • How Simplify Line and Simplify Polygon work

ArcGIS Desktop

  • Home
  • Documentation
  • Support

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

About Esri

  • About Us
  • Careers
  • Esri Blog
  • User Conference
  • Developer Summit
Esri
Tell us what you think.
Copyright © 2021 Esri. | Privacy | Legal