Simplifying a geometry



About simplifying a geometry

Simplify permanently alters the input geometry, making its definition topologically legal with respect to its geometry type.

Simplify and points

Simplify does nothing for points. A point has no constraints on the values of its coordinates.

Simplify and multipoints

For multipoints, Simplify snaps all x-, y-, z-, and m-coordinates to the grid of the associated spatial reference, and removes identical points. A point is identical to another point when the two have identical x,y coordinates (after snapping) and when attributes for which it is aware are identical to the attributes for which the other point is aware. For example, if both points are z-aware, the z-coordinate values must be identical.

Simplify and polylines

Simplify has two variations for polylines: planar and nonplanar. By default, polylines that are not m-aware are simplified in a planar manner—all overlapping segments are reduced to a single segment and segments are split at intersection points. Output paths are created for connected sequences of segments. Input segment orientation is preserved where possible, but segments in the interior of a path are reoriented if necessary. Polylines that are m-aware use the following nonplanar simplification:
  • Overlaps and self-intersections are preserved, but zero-length segments are removed.
  • Segment orientations are adjusted so that the to point of segment I is identical to (considering vertex attributes) the from point of segment I+1.
  • New paths are created where segments are not connected.
  • Existing paths are merged where only two of them meet at a segment endpoint.
See the following illustration of a polyline Simplify:

Simplify and polygons

Simplify identifies an interior and exterior for polygons and modifies the polygon structure to be consistent with that determination. The default methodology for identifying interior and exterior is as follows:
  • Remove all dangling sequences of segments.
  • Identify the largest legal rings, add them to the output version of the polygon, then delete them from the working version.
  • Repeat. If this approach ends up removing too many segments for your application, consider using IPolygon4.SimplifyEx with the XOR parameter set to true. At the end of Simplify, no rings overlap, no self-intersection occurs (except in certain circumstances), and in general, an arbitrary point can always be classified unambiguously as outside, on the boundary of, or inside the polygon.
See the following illustration of a polygon Simplify:

The x,y tolerance property of the geometry's associated spatial reference is used during the Simplify operation for polylines and polygons.

What Simplify considers

Simplify looks at the ITopologicalOperator.IsKnownSimple flag before processing. If the flag is set to true, operation is interrupted and the geometry is considered simple. If the flag is set to false, the geometry consistency is checked and the geometry is updated as needed.
ITopologicalOperator methods must be applied on high-level geometries only. High-level geometries are point, multipoint, polyline, and polygon. To use this method with low-level geometries, such as segments (line, circular arc, elliptic arc, and Bézier curve), paths, or rings, they must be wrapped into high-level geometry types.


See Also:

Calling the Simplify method