This document is archived and information here might be outdated.  Recommended version.

Understanding IsKnownSimple Behavior (ArcObjects .NET 10.8 SDK)
ArcObjects Help for .NET developers > ArcObjects Help for .NET developers > Developing with ArcGIS > Learning ArcObjects > Managing data > Working with geometry > Understanding IsKnownSimple Behavior

Understanding IsKnownSimple Behavior

IsKnownSimple property of a top-level geometry (polygon, polyline, multipoint and point) is used to determine whether this geometry is topologically correct (Simple) or not. ITopologicalOperator::IsSimple returns TRUE when the geometry is aware that it is Simple. ITopologicalOperator2::IsKnownSimple may return FALSE even if the geometry is simple as long as the geometry is not aware of its IsSimple state. Calling either IsSimple or Simplify makes the IsSimple state known to the geometry. Topologically altering the geometry makes the IsKnownSimple state FALSE until the IsSimple state is again checked. If you are not certain the geometry is simple or IsKnownSimple flag been correctly set, and try to call ITopologicalOperator::IsSimple or ITopologicalOperator::Simplify to enforce the geometry to be simple, the flag should be set to false first by calling ITopologicalOperator2::IsKnownSimple = FALSE. There are situations that you can determine or make assumptions of IsKnownSimple status.
A geometry is known simple or assumed to be simple if:
A geometry is known or assumed to be not simple if:
  • It is not a new empty geometry
  • It is a geometry after projection (IGeometry::Project).
  • It is a geometry after generalization (IPolycurve::Generalize).
  • It is a geometry after smoothing (IPolycurve::Smooth).
  • It is a multipoint containing empty points.
  • It is a geometry read from Json String.
There are also situations you need to analyze to determine whether a geometry should be considered simple or not.
  • The method ISegmentCollection::SetRectangle uses the spatial reference of the input envelope to determine whether or not the output geometry is simple. If the input envelope does not have a spatial reference, the output geometry will be assumed non-simple geometry. On the other hand, if the input envelope has a spatial reference, and its width and height are greater than 3*tolerance, then the output geometry is a simple geometry. Otherwise, the output is non-simple.
  • IClone::Assign, the output will inheriting the IsKnownSimple property from the source geometry.
  • IsSimple does not take NaN z-values into account.