Simplifying a feature geometry


About simplifying a feature geometry

When making changes to an existing feature, or when creating a feature, it is essential that the geometry that is stored with the feature be topologically correct (simple). ArcGIS assumes geometry retrieved from a feature is simple.
Geometry has a number of methods available to evaluate and force simplification of a geometry. Some of these methods are specific to a given geometry type, others perform a more specialized type of simplification.
The following code example takes an input geometry, simplifies the geometry based on its type, and returns the simplified geometry:
[C#]
public IGeometry SimplifyGeometry(IGeometry geometry)
{
    if (geometry == null)
        return null;

    //Set the IsKnownSimple property to false, otherwise simplification will not take place.
    ITopologicalOperator2 topoOp = geometry as ITopologicalOperator2;
    topoOp.IsKnownSimple_2 = true;

    switch (geometry.GeometryType)
    {
        case esriGeometryType.esriGeometryMultipoint:
            topoOp.Simplify();
            break;
        case esriGeometryType.esriGeometryPolygon:
            ((IPolygon)geometry).SimplifyPreserveFromTo();
            break;
        case esriGeometryType.esriGeometryPolyline:
            if (geometry is IPolyline6)
                ((IPolyline6)geometry).SimplifyNonPlanar();
            else
                ((IPolyline)geometry).SimplifyNetwork();
            break;
        default:
            break;
    }

    return geometry;
}
[VB.NET]
Public Function SimplifyGeometry(ByVal geometry As IGeometry) As IGeometry
    If geometry Is Nothing Then
        Return Nothing
    End If
    
    'Set the IsKnownSimple property to false, otherwise simplification will not take place.
    Dim topoOp As ITopologicalOperator2 = TryCast(geometry, ITopologicalOperator2)
    topoOp.IsKnownSimple_2 = True
    
    Select Case geometry.GeometryType
        Case esriGeometryType.esriGeometryMultipoint
            topoOp.Simplify()
            Exit Select
        Case esriGeometryType.esriGeometryPolygon
            DirectCast(geometry, IPolygon).SimplifyPreserveFromTo()
            Exit Select
        Case esriGeometryType.esriGeometryPolyline
            If TypeOf geometry Is IPolyline6 Then
                DirectCast(geometry, IPolyline6).SimplifyNonPlanar()
            Else
                DirectCast(geometry, IPolyline).SimplifyNetwork()
            End If
            Exit Select
        Case Else
            Exit Select
    End Select
    
    Return geometry
End Function


See Also:

Calling the Simplify method
Simplifying a geometry




To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
Development licensing Deployment licensing
ArcInfo ArcInfo
ArcEditor ArcEditor
ArcView ArcView