## Summary

Simplifies polygons by removing extraneous bends while preserving essential shape.

## Illustration

## Usage

There are two simplification methods:

- The Retain critical points method (POINT_REMOVE in Python) 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 Retain critical bends method (BEND_SIMPLIFY in Python) 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:

- Do not check for topological errors (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.
- Flag errors (FLAG_ERRORS in Python): the result of the simplification process will be checked for topological errors, 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 (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
- 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

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. - POINT_REMOVE —Keeps the so-called critical points that depict the essential shape of a polygon and removes all other points. This is the default.
- BEND_SIMPLIFY —Keeps the main shape of a polygon and removes extraneous bends in the boundary.
| 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. - For POINT_REMOVE algorithm, the tolerance you specify is the maximum allowable offset.
- For BEND_SIMPLIFY algorithm, the tolerance you specify is the length of the reference bend baseline.
| 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. - NO_CHECK —Specifies not to check topological errors. This is the default.
- FLAG_ERRORS —Specifies to flag topological errors if any are found.
- RESOLVE_ERRORS —Specifies to resolve topological errors if any are found.
| 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. - KEEP_COLLAPSED_POINTS —Specifies to keep the collapsed zero-area polygons as points. The endpoints of the collapsed polygon boundaries will be stored in a point feature class at the output feature class location, taking the name of the output feature class plus a suffix _Pnt. This is the default.
- NO_KEEP —Specifies not to keep the collapsed zero-area polygons as points even if they are found in the process; therefore, the point feature class will be empty.
| 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 for Desktop Basic: No
- ArcGIS for Desktop Standard: Yes
- ArcGIS for Desktop Advanced: Yes