com.esri.arcgis.geoprocessing.tools.datamanagementtools
Class SimplifyPolygon
java.lang.Object
com.esri.arcgis.geoprocessing.AbstractGPTool
com.esri.arcgis.geoprocessing.tools.datamanagementtools.SimplifyPolygon
- All Implemented Interfaces:
- GPTool
public class SimplifyPolygon
- extends AbstractGPTool
Simplifies a polygon by removing small fluctuations or extraneous bends from its boundary while preserving its essential shape.
The Simplify Polygon tool is contained in the Data Management Tools tool box.
Illustration:
Usage tips:
- The tool will produce two output feature classes, a polygon feature class and a point feature class. The polygon output will store all the simplified polygons; and the point output will store points, if any, representing polygons that are collapsed to zero-area as the result of simplification and cannot be written to the polygon output. Once the polygon output is specified, the point output will be automatically derived taking the same output location and the polygon output name plus a suffix, _Pnt.
- The polygon output will carry all the input fields. The point output will not.
- Significant differences between the two algorithms:
- POINT_REMOVE is a fast, simple algorithm that reduces a polygon boundary quite effectively by removing redundant points, such as overdigitized vertices; however, the angularity of the resulting polygon will increase significantly as the tolerance increases so the shape may become aesthetically unpleasing. Use POINT_REMOVE for data compression or a relatively low degree of simplification.
- BEND_SIMPLIFY applies advanced techniques to detect bends along a polygon boundary, analyze their characteristics, and eliminate insignificant ones. It takes longer to process than POINT_REMOVE, but the resulting shape is more faithful to the original and shows better aesthetic quality.
- The two algorithms used in this tool are the same as those used in Simplify Line tool. See "related topics" above.
- The minimum area applies to simplified polygons. For a group of adjacent polygons, it applies to the total area of the group.
- Handling topological errors - three levels of processes:
- NO_CHECK: Both algorithms may introduce topological errors to the simplified results. If you are not concerned about the topological errors or if you know your data has little chance to result in topological errors, then use this default option.
- FLAG_ERRORS: This option preserves shared polygon boundaries and detects topological errors possibly introduced by simplification. The polygon output will contain two new fields, InPoly_FID and SimPlyFlag. The InPoly_FID field carries the feature IDs of the input polygons; the SimPlyFlag flags polygons with a value of 1 indicating topological errors or a value of 0 indicating no errors.
- RESOLVE_ERRORS: Use this option if the input polygon boundaries are congested in some areas and you want to avoid topological errors in the result of simplification. The processing time will be longer than the above options, but you will receive a "clean" output with information about the simplified polygons. The tolerance you specified may be good for majority polygons but not for the ones in the 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, 50 percent of that previously used, will be applied to re-simplify 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.
- For NO_CHECK and FLAG_ERRORS options, invalid (self-intersecting) geometry may be created during the simplification process and will be repaired. For example, if a polygon crosses itself, the polygon will be repaired to become a multiple-part polygon such that no part crosses any other part, although the polygon will still look self-crossing.
- The FLAG_ERRORS and RESOLVE_ERRORS options of this tool are not supported in an edit session.
- The "Keep collapsed points" checkbox or the collapsed_point parameter only applies to the NO_CHECK and FLAG_ERRORS options for handling topological errors.
- With NO_CHECK option, if this checkbox is checked or if KEEP_COLLAPSED_POINT is specified, any collapsed points will be stored in the point output.
- With FLAG_ERRORS option, if this checkbox is checked or if KEEP_COLLAPSED_POINT is specified, the point output will contain a new field InPoly_FID to link the collapsed points to their input polygons.
- If an input polygon contains multiparts and one of the parts becomes a collapsed point, the point representing that part will also be included in the point output.
- The point output will be empty in the following cases:
- The "Keep collapsed points" checkbox is unchecked on the tool dialog or the NO_KEEP option is specified.
- The "Keep collapsed points" checkbox is checked on the tool dialog or the KEEP_COLLAPSED_POINT option is specified, but no polygons are collapsed to points during simplification.
- RESOLVE_ERRORS is specified for handling topological errors; therefore, no polygons will be collapsed (any collapsed polygons will be restored).
- Learn more about spatial reference and geoprocessing
- The following environment settings affect this tool: XY tolerance, Extent, M domain, , Coordinate system, Output has M values, Output has Z values, Default Z value, Output XY domain, workspace, and scratch workspace.
SimplifyPolygon
public SimplifyPolygon()
- Creates the Simplify Polygon tool with defaults.
Initializes the array of tool parameters with the default values specified when the tool was created.
SimplifyPolygon
public SimplifyPolygon(Object inFeatures,
Object outFeatureClass,
String algorithm,
Object tolerance)
- Creates the Simplify Polygon tool with the required parameters.
Initializes the array of tool parameters with the values as specified for the required parameters and with the default values for the other parameters.
- Parameters:
inFeatures
- Feature Layer, the polygon features to be simplified.outFeatureClass
- Feature Class, the output polygon feature class to be created.algorithm
- String, 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.
tolerance
- Linear Unit, the tolerance that determines the degree of simplification. A tolerance must be specified, and it must be greater than zero. You can specify 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.
getInFeatures
public Object getInFeatures()
- Returns the Input Features parameter of this tool .
This parameter is Feature Layer, the polygon features to be simplified.
This is a required parameter.
- Returns:
- the Input Features
setInFeatures
public void setInFeatures(Object inFeatures)
- Sets the Input Features parameter of this tool .
This parameter is Feature Layer, the polygon features to be simplified.
This is a required parameter.
- Parameters:
inFeatures
- Feature Layer, the polygon features to be simplified.
getOutFeatureClass
public Object getOutFeatureClass()
- Returns the Output Feature Class parameter of this tool .
This parameter is Feature Class, the output polygon feature class to be created.
This is a required parameter.
- Returns:
- the Output Feature Class
setOutFeatureClass
public void setOutFeatureClass(Object outFeatureClass)
- Sets the Output Feature Class parameter of this tool .
This parameter is Feature Class, the output polygon feature class to be created.
This is a required parameter.
- Parameters:
outFeatureClass
- Feature Class, the output polygon feature class to be created.
getAlgorithm
public String getAlgorithm()
- Returns the Simplification Algorithm parameter of this tool .
This parameter is String, specifies the polygon simplification algorithm.
This is a required parameter.
- Returns:
- the Simplification Algorithm
setAlgorithm
public void setAlgorithm(String algorithm)
- Sets the Simplification Algorithm parameter of this tool .
This parameter is String, specifies the polygon simplification algorithm.
This is a required parameter.
- Parameters:
algorithm
- String, 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.
getTolerance
public Object getTolerance()
- Returns the Simplification Tolerance parameter of this tool .
This parameter is Linear Unit, the tolerance that determines the degree of simplification. A tolerance must be specified, and it must be greater than zero. You can specify a preferred unit; the default is the feature unit.
This is a required parameter.
- Returns:
- the Simplification Tolerance
setTolerance
public void setTolerance(Object tolerance)
- Sets the Simplification Tolerance parameter of this tool .
This parameter is Linear Unit, the tolerance that determines the degree of simplification. A tolerance must be specified, and it must be greater than zero. You can specify a preferred unit; the default is the feature unit.
This is a required parameter.
- Parameters:
tolerance
- Linear Unit, the tolerance that determines the degree of simplification. A tolerance must be specified, and it must be greater than zero. You can specify 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.
getMinimumArea
public Object getMinimumArea()
- Returns the Minimum Area parameter of this tool .
This parameter is Areal Unit, 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.
This is an optional parameter.
- Returns:
- the Minimum Area
setMinimumArea
public void setMinimumArea(Object minimumArea)
- Sets the Minimum Area parameter of this tool .
This parameter is Areal Unit, 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.
This is an optional parameter.
- Parameters:
minimumArea
- Areal Unit, 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.
getErrorOption
public String getErrorOption()
- Returns the Handling Topological Errors parameter of this tool .
This parameter is String, specifies how the topological errors (possibly introduced in the process, including line crossing, line overlapping, and collapsed zero-length lines) will be handled.
This is an optional parameter.
- Returns:
- the Handling Topological Errors
setErrorOption
public void setErrorOption(String errorOption)
- Sets the Handling Topological Errors parameter of this tool .
This parameter is String, specifies how the topological errors (possibly introduced in the process, including line crossing, line overlapping, and collapsed zero-length lines) will be handled.
This is an optional parameter.
- Parameters:
errorOption
- String, 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.
getCollapsedPointOption
public String getCollapsedPointOption()
- Returns the Keep collapsed points parameter of this tool .
This parameter is String, 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.
This is an optional parameter.
- Returns:
- the Keep collapsed points
setCollapsedPointOption
public void setCollapsedPointOption(String collapsedPointOption)
- Sets the Keep collapsed points parameter of this tool .
This parameter is String, 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.
This is an optional parameter.
- Parameters:
collapsedPointOption
- String, 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.
getOutPointFeatureClass
public Object getOutPointFeatureClass()
- Returns the Output Point Feature Class parameter of this tool (Read only).
This is an derived parameter.
- Returns:
- the Output Point Feature Class
getToolName
public String getToolName()
- Returns the name of this tool.
- Returns:
- the tool name
getToolboxName
public String getToolboxName()
- Returns the name of the tool box containing this tool.
- Returns:
- the tool box name
getToolboxAlias
public String getToolboxAlias()
- Returns the alias of the tool box containing this tool.
- Returns:
- the tool box alias