## Smooth Polygons

Running programmatically

Smooth the features of a polygon layer using three different smoothing algorithms. The polygons are cleaned from overlaps before proceeding with smoothing.

### Inputs:

• A polygon feature layer
• Smooth method
• Bezier curve
• The curve in general does not pass through any of the control points (vertices of original polygon) except the first and last.
• The curve is always contained within the convex hull of the control points
• Approximate the original shape rather freely
• Fast - good for polygons with many vertices (control points) that will constrain the curve close to the original shape
• B - Spline
• The curve does not pass through any of the control points (vertices of original polygon) except the first and last
• Follows better than the Bezier curve the original shape
• Depending on the "Freedom" parameter the smoothing occurs only in the areas close to a vertex
• B-Splines lie in the convex hull of the original polygon
• Slower than the Bezier curve, but the results in many cases are much better
• T - Spline (Tension Spline)
• The curve passes trough all the vertices of the original polygon
• The degree of fit can be controlled with the "Tension" parameter
• Suitable for smoothing curves with comparatively equally spaced vertices
• Fast with good approximation of the original polygon
• Parameters depending on the method
• The "Smoothness" parameter (Used in all methods) defines the number of points in the output curve. The allowed values ( 2 to 20 ) in fact are point multiplier. The number of vertices of the original polygon multiplied by this value will give the number of vertices of the smoothed polygon. The larger the value of the Smoothness parameter, the slower the process will be. In most of the cases a value of 5 (default ) will create smooth and representative polygon
• The "Freedom" parameter (B-Spline only) defines how close to the original polygon the curve will be. The allowed values are from 3 to 10. Smaller values give better approximation. With large values the curve will become very similar to Bezier curve
• The "Tension" parameter (T-Spline only) defines how close to the original polygon the curve will be. Increasing the tension is similar to pulling on the ends of a string constrained to pass through the polygon vertices. allowed values are from 1 to 100.
• Optional - Densification tolerance. In some cases the smooth parameters cannot restrict the smoothing enough. The user can restrict the effect of the smoothing by introducing new vertices in the shapes. See Densify function for details
• Optional - Generalization tolerance. The smoothing introduces in the shapes many new vertices. The user can decrease the number of vertices by using this option. See Generalize function for details.

### Outputs:

• New polygon layer
• The output layer will contain all the features of the original data set
• The attributes of the input data set are preserved.

### Notes :

• It is highly recommended to use the Clean Polygons function before smoothing the polygons.
• All the methods implement generic algorithms.
• The Generalization and Densification tolerances should be specified in the units of the spatial reference of the input layer

### Examples:

B-Spline - default values for smoothness and freedom

B-Spline - default values for smoothness and freedom. Densified before smoothing

### Running Programmatically

(Go to TOP)

Parameters

Expression Explanation
Function Name SmoothPolygonsBezier
Function Name SmoothPolygonsBSpline
Function Name SmoothPolygonsTSpline
<input dataset> A String representing the input layer. Must be of polygon type.
<output dataset> A String - the full name of the output layer.
<Smoothness> An Integer that defines the number of points in the output curve. The allowed values ( 2 to 20 ) in fact are point multiplier. The number of vertices of the original polygon multiplied by this value will give the number of vertices of the smoothed polygon. The larger the value of the parameter, the slower the process will be.
<Freedom> Only for B-Spline. An Integer that defines how close to the original polygon the curve will be. The allowed values are from 3 to 10. Smaller values give better approximation. With large values the curve will become very similar to Bezier curve
<Tension> Only for T-Spline. An Integer that defines how close to the original polygon the curve will be. Increasing the tension is similar to pulling on the ends of a string constrained to pass through the polygon vertices. allowed values are from 1 to 100.
{Densify Before} A Double representing the Densification tolerance. In some cases the smooth parameters cannot restrict the smoothing enough. The user can restrict the effect of the smoothing by introducing new vertices in the shapes. See Densify function for details
{Generalize After} A Double representing the Generalization tolerance. The smoothing introduces in the shapes many new vertices. The user can decrease the number of vertices by using this option. See Generalize function for details.

### Running the function

ETGWPath used in the table below is the full path to ETGWRun.exe (E.G. "C:\Program Files\ETSpatial Techniques\ETGeo Wizards\ETGWRun.exe")

### SmoothPolygonsBezier

Language Syntax
Python subprocess.call([ETGWPath, "SmoothPolygonsBezier", "input dataset", "output dataset", "Smoothness", "Densify Before", "Generalize After"])
.NET using ETGWRun.exe StartInfo.FileName = ETGWPath
StartInfo.Arguments = "SmoothPolygonsBezier" "input dataset" "output dataset" "Smoothness" "Densify Before" "Generalize After"
.NET using ETGWOutX.dll SmoothPolygonsBezier(input dataset, output dataset, Smoothness, Densify Before, Generalize After)
ArcPy arcpy.SmoothPolygonsBezier(input dataset, output dataset, "Smoothness" , "Densify Before", "Generalize After")

### SmoothPolygonsBSpline

Language Syntax
Python subprocess.call([ETGWPath, "SmoothPolygonsBSpline", "input dataset", "output dataset", "Smoothness", "Freedom", "Densify Before", "Generalize After"])
.NET using ETGWRun.exe StartInfo.FileName = ETGWPath
StartInfo.Arguments = "SmoothPolygonsBSpline" "input dataset" "output dataset" "Smoothness" "Freedom" "Densify Before" "Generalize After"
.NET using ETGWOutX.dll SmoothPolygonsBSpline(input dataset, output dataset, Smoothness, Freedom, Densify Before, Generalize After)
ArcPy arcpy.SmoothPolygonsBSpline(input dataset, output dataset, "Smoothness" , "Freedom", "Densify Before", "Generalize After")

### SmoothPolygonsTSpline

Language Syntax
Python subprocess.call([ETGWPath, "SmoothPolygonsTSpline", "input dataset", "output dataset", "Smoothness", "Tension", "Densify Before", "Generalize After"])
.NET using ETGWRun.exe StartInfo.FileName = ETGWPath
StartInfo.Arguments = "SmoothPolygonsTSpline" "input dataset" "output dataset" "Smoothness" "Tension" "Densify Before" "Generalize After"
.NET using ETGWOutX.dll SmoothPolygonsTSpline(input dataset, output dataset, Smoothness, Tension, Densify Before, Generalize After)
ArcPy arcpy.SmoothPolygonsTSpline(input dataset, output dataset, "Smoothness" , "Tension", "Densify Before", "Generalize After")

Notes:

• <> - required parameter

• {} - optional parameter

• See examples for Python , .NET or ArcPy

• The argument separator for StartInfo.Arguments is space. If a string might contain a space, you need to double quote it.

(Go to TOP)