Simplify Polygon (Cartography)
Summary
Simplifies polygons by removing extraneous bends while preserving essential shape.
Illustration
Usage
There are two simplification methods:
- The POINT_REMOVE method is the faster of the two processes. It removes redundant vertices. Use this method for data compression or more coarser simplification, especially when the data is well-known. The angularity (sharp corners) of the resulting polygon will increase significantly as the tolerance increases, so the polygon may become less aesthetically pleasing.
- The BEND_SIMPLIFY method is slower but typically produces results that are more faithful to the original and more aesthetically pleasing. It operates by eliminating insignificant bends along polygons. Use this method for less, more refined simplification.
-
The Minimum Area parameter applies to simplified polygons only. Any polygons which are smaller than the minimum area after the simplification process is completed will be removed from the output feature class. For a group of adjacent polygons which share common edges, it applies to the total area of the group.
-
The tool produces two output feature classes, a polygon feature class to store the simplified polygons and a point feature class to store points that represent any polygons that were collapsed to zero-area. The point output name and location is automatically derived from the output polygon name with a _Pnt suffix. The polygon output will contain all the input fields; the point output will not contain any of the input fields.
Multipart polygons are simplified as individual parts.
There are three options for handling topological errors in the output:
- NO_CHECK: topological errors introduced by the simplification process will not be checked. Processing will be faster. Use this option only when you have confidence in the topological accuracy of the data.
- FLAG_ERRORS: topological errors introduced by the simplification process will be flagged. Use this option when the importance of identifying topological errors is greater than the importance of resolving errors. This option is not supported in an edit session.
- The polygon output will contain two new fields to indicate whether or not a feature has a topological error. InPoly_FID and SimPlyFlag contain the input feature IDs and topological errors, respective.
- The InPoly_FID field links the collapsed points to their input polygons.
- In the SimPlyFlag field, a value of 1 indicates an error was introduced; 0 (zero) indicates that no error was introduced.
- The flag values will remain in place after a topological error has been resolved. Use the SimPlyFlag field to examine features which have topological errors.
- RESOLVE_ERRORS: repairs topological errors introduced by the simplification process. Processing time will be longer This option is not supported in an edit session.
- The tolerance specified may be suitable for a majority of the polygons but not for all, especially those in congested areas. When a topological error is detected after the first round of simplification, the involved boundary segments (not the entire polygons) will be located and a reduced tolerance will be used
- This reduced tolerance is fifty percent of that used previously. This new tolerance will be used to resimplify these segments. This iteration will repeat as many times as needed until no more topological errors are found.
- The polygon output feature class will contain the same number of polygons as in the input, and it will have two new fields, MaxSimpTol and MinSimpTol, which store the maximum and minimum tolerances actually used in simplifying each polygon through the iteration. If no errors were introduced, the values of MaxSimpTol and MinSimpTol will be the same as the specified simplification tolerance.
- A small polygon near a larger polygon can end up inside the larger polygon due to a relatively large Simplification Tolerance value. This spatial relationship error will not be detected by the program.
- For the NO_CHECK and FLAG_ERRORS options, self-intersecting geometry may be created during the simplification process and will be automatically repaired. For example, if a polygon crosses itself, the polygon will be repaired to become a multipart polygon such that no part crosses any other part, although the polygon will still look self-crossing.
The point output will be populated when the NO_CHECK or the FLAG_ERRORS are used, or if the Keep collapsed points check box is checked. If an input polygon contains multiple parts and one of the parts becomes a collapsed point, the point representing that part will also be included in the point output.
Syntax
Parameter | Explanation | Data Type |
in_features |
The polygon features to be simplified. | Feature Layer |
out_feature_class |
The output polygon feature class to be created. | Feature Class |
algorithm |
Specifies the polygon simplification algorithm.
| String |
tolerance |
The tolerance that determines the degree of simplification. A tolerance must be specified, and it must be greater than zero. You can choose a preferred unit; the default is the feature unit.
| Linear unit |
minimum_area (Optional) |
Sets the minimum area for a simplified 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; the default is the feature unit. | Areal unit |
error_option (Optional) |
Specifies how the topological errors (possibly introduced in the process, including line crossing, line overlapping, and collapsed zero-length lines) will be handled.
| String |
collapsed_point_option (Optional) |
Specifies whether to keep collapsed zero-area polygons as points if any are found in the process. This option applies only when NO_CHECK or FLAG_ERRORS is specified.
| Boolean |
Code Sample
The following Python window script demonstrates how to use the SimplifyPolygon tool in immediate mode.
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SimplifyPolygon("soils.shp", "C:/output/output.gdb/simplified_soils", "POINT_REMOVE", 100)
The following stand-alone script demonstrates how to use the SimplifyPolygon tool.
# Name: SimplifyPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake boundaries
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
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, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")
# Smooth lake polygons.
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "FLAG_ERRORS")