ArcObjects Library Reference (Geometry)  

ITopologicalOperator3.IsSimpleEx Property

Determines why a geometry is not simple. Currently only implemented for polygons.

[Visual Basic .NET]
Public Function get_IsSimpleEx ( _
    ByRef reason As esriNonSimpleReasonEnum _
) As Boolean
[C#]
public bool get_IsSimpleEx (
    ref esriNonSimpleReasonEnum reason
);
[C++]
HRESULT get_IsSimpleEx(
  esriNonSimpleReasonEnum* reason,
  VARIANT_BOOL* IsSimple
);
[C++]

Parameters

reason [out]

  reason is a parameter of type esriNonSimpleReasonEnum

IsSimple [out, retval]   IsSimple is a parameter of type VARIANT_BOOL

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Description

The return boolean value indicates whether or not the geometry is simple. If the return is false, the "reason" parameter can be inspected.

Remarks

Note: All geometries involved in ITopologicalOperator operations must be high-level geometries. High-Level geometries are point, multipoint, polyline and polygon. To use it with low-level geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), path or ring they must be wrapped into high-level geometries type.

 

The xy cluster tolerance value of the geometry's associated spatial reference is used by this method. If the goal of this method is to determine if a geometry can be persisted in an sde (or other integer-based) layer without alteration, you may wish to use the minimum xy cluster tolerance value (ISpatialReferenceTolerance::SetMinimumXYTolerance) before applying this method (don't forget to set it back).

[C#]

//How to use get_IsSimpleEx

ITopologicalOperator3 topoOp3 = inGeom as ITopologicalOperator3; //Must be polygon

ESRI.ArcGIS.Geometry.esriNonSimpleReasonEnum reason = ESRI.ArcGIS.Geometry.esriNonSimpleReasonEnum.esriNonSimpleOK; //Initialize

topoOp3.IsKnownSimple_2 = false;

Boolean pBool = topoOp3.get_IsSimpleEx(out reason); //Inspect pReason for description code

 

//The following code shows to wrap a line segment into a polyline in C#

//Assume a line (line1 as ILine) is already created

object obj = Type.Missing;

ISegmentCollection segCollection = new PolylineClass() as ISegmentCollection;

segCollection.AddSegment((ISegment)line1, ref obj, ref obj);

//Set the spatial reference on the new polyline

//The spatial reference is not transfered automatically from the segments

IGeometry geom = segCollection as IGeometry;

geom.SpatialReference = spatialRef;

//Can now be used with ITopologicalOperator methods

See Also

ITopologicalOperator3 Interface