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 for 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

Smooth Polygon

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

Summary

Smooths sharp angles in polygon outlines to improve aesthetic or cartographic quality.

Illustration

Smooth Polygon illustration

Usage

  • There are two smoothing methods available:

    • The Polynomial Approximation with Exponential Kernel (PAEK) method (PAEK in Python) smooths polygons based on a smoothing tolerance. Each smoothed polygon may have more vertices than its source polygon. The Smoothing Tolerance parameter controls the length of a "moving" path used in calculating the new vertices. The shorter the length, the more detail that will be preserved and the longer the processing time.
    • The Bezier interpolation method (BEZIER_INTERPOLATION in Python) smooths polygons without using a tolerance by creating approximated Bezier curves to match the input polygons.
  • Use the Input barrier layers parameter to identify features that must not be crossed by smoothed polygons. Barrier features can be points, lines, or polygons.

  • Processing large datasets may exceed memory limitations. In such cases, 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 (NO_CHECK in Python) or Flag topological errors (FLAG_ERRORS in Python).

  • The output line feature class is topologically correct. Any topological errors in the input data are flagged in the output line feature class. The output feature class includes two additional fields, InPoly_FID and SmoPgnFlag, that contain the input feature IDs and topological errors of the input, respectively. A SmoPgnFlag value of 1 indicates that a topological error is present; a value of 0 (zero) indicates that no errors are present.

    Legacy:

    Prior to the ArcMap 10.6.1 version of this tool, the Preserve endpoint for rings (endpoint_option in Python) parameter was used to specify whether the endpoint of a resulting isolated polygon ring would be preserved. This parameter is still included in the tool's syntax for compatibility in scripts and models, but is now ignored and hidden on the tool's dialog box.

Syntax

SmoothPolygon(in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option}, {in_barriers})
ParameterExplanationData Type
in_features

The polygon features to be smoothed.

Feature Layer
out_feature_class

The output polygon feature class to be created.

Feature Class
algorithm

Specifies the smoothing algorithm.

  • PAEK —Acronym for Polynomial Approximation with Exponential Kernel. It calculates a smoothed polygon that will not pass through the input polygon vertices. This is the default.
  • BEZIER_INTERPOLATION —Fits Bezier curves between vertices. The resulting polygons pass through the vertices of the input polygons. This algorithm does not require a tolerance. Bezier curves will be approximated in the output.
String
tolerance

Sets a tolerance used by the PAEK algorithm. A tolerance must be specified, and it must be greater than zero. You can specify a preferred unit; the default is the feature unit. You must enter a 0 as a placeholder when using the BEZIER_INTERPOLATION smoothing algorithm.

Linear Unit
endpoint_option
(Optional)

This is a legacy parameter that is no longer used. It was formerly used to specify whether the endpoint of an isolated polygon ring would be preserved. This parameter is still included in the tool's syntax for compatibility in scripts and models but is hidden from the tool's dialog box.

Specifies whether to preserve the endpoints of isolated polygon rings. This option works with the PAEK algorithm only.

  • FIXED_ENDPOINT —Preserves the endpoint of an isolated polygon ring. This is the default.
  • NO_FIXED —Smooths through the endpoint of an isolated polygon ring.
Boolean
error_option
(Optional)

Specifies how topological errors (possibly introduced in the process, such as line crossing or overlapping) are handled.

  • NO_CHECK —Do not check for topological errors. This is the default.
  • FLAG_ERRORS —Check and flag topological errors, if any are found.
  • RESOLVE_ERRORS —Resolve topological errors, if any are found.
String
in_barriers
[in_barriers,...]
(Optional)

Inputs containing features that will act as barriers for smoothing. The resulting smoothed polygons will not touch or cross barrier features.

Feature Layer

Code sample

SmoothPolygon example (Python window)

The following Python window script demonstrates how to use the SmoothPolygon tool in immediate mode.

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

The following stand-alone script demonstrates how to use the SmoothPolygon tool.

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

# Import system modules
import arcpy
import arcpy.cartography as CA
import arcpy.management as DM

# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"

# Set local variables
inLakeFeatures = "lakes"
barriers = "C:/data/Portland.gdb/Structures/buildings"
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", barriers)

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

Environments

  • 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
  • Cartographic Partitions

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
  • Smooth Line
  • Simplify Polygon
  • Generalizing large datasets using partitions

ArcGIS Desktop

  • Home
  • Documentation
  • Support

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

About Esri

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