Smooth Line (Cartography)
Smooths sharp angles in lines to improve aesthetic or cartographic quality.
There are two smoothing methods to choose from:
- The PAEK (Polynomial Approximation with Exponential Kernel) method smooths lines based on a smoothing tolerance. Each smoothed line may have more vertices than its source line. 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 smooths lines without using a tolerance by creating Bezier curves to match the input lines. If the output is a shapefile, the Bezier curves will be approximated, since true Bezier curves cannot be storied in shapefiles.
Smoothing may introduce topological errors such as line crossings. Use the FLAG_ERRORS option in the Handle Topological Errors parameter to identify these errors. Two fields will be added—InLine_FID and SmoLnFlag—to contain input feature IDs and topological errors. Values of 1 in the SmoLnFlag field indicate a topology error; 0 (zero) indicates no error. The InLineFID field links the output lines to their input lines. The FLAG_ERRORS option cannot be used within an edit session.
Invalid (self-intersecting) geometry may be created during the smoothing process and will be repaired but not improved. For example, if a line self-crosses it will become a multipart line but will still appear self-crossing.
The line features to be smoothed.
The output feature class to be created.
Specifies the smoothing algorithm.
Sets a tolerance used by the PAEK algorithm. A tolerance must be specified, and it must be greater than zero. You can choose a preferred unit; the default is the feature unit. You must enter a 0 as a placeholder when using the BEZIER_INTERPOLATION smoothing algorithm.
Specifies whether to preserve the endpoints for closed lines. This option works with the PAEK algorithm only.
Specifies how the topological errors (possibly introduced in the process, such as line crossing) will be handled.
The following Python window script demonstrates how to use the SmoothLine tool in immediate mode.
import arcpy from arcpy import env import arcpy.cartography as CA env.workspace = "C:/data" CA.SmoothLine("contours.shp", "C:/output/output.gdb/smoothed_contours", "PAEK", 100)
The following stand-alone script demonstrates how to use the SmoothLine tool.
# Name: SmoothLine_Example2.py # Description: Simplify and then Smooth coastlines # Author: ESRI # Import system modules import arcpy from arcpy import env import arcpy.cartography as CA # Set environment settings env.workspace = "C:/data/Portland.gdb/Hydrography" # Set local variables inCoastlineFeatures = "coastlines" simplifiedFeatures = "C:/data/PortlandOutput.gdb/coastlines_simplified" smoothedFeatures = "C:/data/PortlandOutput.gdb/coastlines_smoothed" # Simplify coastlines. CA.SimplifyLine(inCoastlineFeatures, simplifiedFeatures, "POINT_REMOVE", 50, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK") # Smooth coastlines. CA.SmoothLine(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "FLAG_ERRORS")