Summary
Simplifies polygons by removing extraneous bends while preserving essential shape.
Illustration
Usage
There are two simplification methods:
- POINT_REMOVE is the faster of the two algorithms. It removes redundant vertices. Use this method for data compression or coarser simplification, especially when the data is well-known. The angularity (sharp corners) of the resulting polygon increases significantly as the tolerance increases, so the polygon may be less aesthetically pleasing than the input.
- BEND_SIMPLIFY is slower but typically produces results that are more faithful to the original and more aesthetically pleasing. It operates by eliminating insignificant bends along polygon outlines. Use this method for 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:
- Do not check for topological errors (error_option = 'NO_CHECK' in Python): the result generated by the simplification process will not be checked for topological errors. Processing will be faster. Use this option only when you have confidence in the topological accuracy of the data. This is the default.
- Flag errors (error_option = 'FLAG_ERRORS' in Python): the result of the simplification process will be checked for topological errors and features with topological error 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 topological errors (error_option = 'RESOLVE_ERRORS' in Python): 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.
- A new tolerance 50% smaller is used to resimplify these segments. This iteration repeats 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. 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.
- 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 feature representing that part will also be included in the point output.
Syntax
SimplifyPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {minimum_area}, {error_option}, {collapsed_point_option})
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
SimplifyPolygon Example (Python Window)
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)
SimplifyPolygon Example 2 (stand-alone script)
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")
Environments
Licensing information
- ArcGIS Desktop Basic: No
- ArcGIS Desktop Standard: Yes
- ArcGIS Desktop Advanced: Yes