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


IGeometryCollection Interface (ArcObjects .NET 10.5 SDK)
ArcObjects Library Reference (Geometry)  

IGeometryCollection Interface

Provides access to members that can be used for accessing, adding and removing individual geometries of a multi-part geometry (Multipoint, Polyline, Polygon, MultiPatch, and GeometryBag).

Product Availability

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

Description

A Collection of Geometry parts.  For Multipoints, Triangles, TriangleFans, and TriangleStrips, the Geometry parts are Points. For Polylines, the Geometry parts are Paths.  For Polygons, the Geometry parts are Rings.  For MultiPatches, the Geometry parts are Triangles, TriangleFans, TriangleStrips, or Rings.  For GeometryBags, the Geometry parts are any IGeometry object.

The GeometryCollection can be used to access, manipulate, add, insert, remove, and set specific parts of a composite geometry.

When To Use

If you are using a development language that does not support C style arrays, use IGeometryBridge instead. The IGeometryBridge interface solves that problem allowing you to pass safe arrays instead.

Members

Description
Method AddGeometries Adds references to the specified geometries. This method is intended for internal use only.
Method AddGeometry Adds a reference to the input geometry either at the end, or before, or after the specified index.
Method AddGeometryCollection Adds references to geometries in the input collection.
Method GeometriesChanged Tells this geometry collection that some of its geometries have been altered. Use this method on polylines, polygons and multipatches after directly editing one of its parts.
Read-only property Geometry A reference to the ith geometry.
Read-only property GeometryCount The number of geometries in this collection.
Method InsertGeometries Inserts at the specified index references to some number of geometries in the input array. This method is intended for internal use only.
Method InsertGeometryCollection Inserts at the specified index references to all if the geometries in the input collection.
Method QueryGeometries Populates the array with references to a sub-sequence of geometries. This method is intended for internal use only.
Method RemoveGeometries Removes references to some geometries from this collection.
Method SetGeometries Replaces all geometries in the collection with the specified number of references to those in the input array. This method is intended for internal use only.
Method SetGeometryCollection Replaces all geometries in the collection with references to geometries from the input collection.

CoClasses that implement IGeometryCollection

CoClasses and Classes Description
GeometryBag An ordered collection of objects that support the IGeometry interface.
MultiPatch A collection of surface patches.
Multipoint An ordered collection of points; optionally has measure, height and ID attributes.
Polygon A collection of rings ordered by their containment relationship; optionally has measure, height and ID attributes.
Polyline An ordered collection of paths; optionally has measure, height and ID attributes.
TriangleFan A continuous 3D fan of triangles, where each triangle after the first shares an edge with the preceding triangle, and all triangles share a common pivot point.
Triangles A collection of 3D triangles, where each consecutive triplet of vertices defines a new triangle
TriangleStrip A continuous 3D strip of triangles, where each triangle after the first shares an edge with the preceding triangle.

Remarks

Every Geometry created within ArcGIS should be assigned a spatial reference. Always attach well-defined spatial references to new geometries. This improves processing efficiency, in particular, when using ITopologicalOperator on geometries that contain curved segments (circular arcs, bezier curves, elliptical arcs). New geometries include any geometry that is created in memory. It does not matter whether it will be stored in a feature class or not. Well-defined as applied to a spatial reference means that it not only has its coordinate system (projection) defined, but also its coordinate grid. The coordinate grid consists of the xy domain, xy resolution, and xy cluster tolerance properties of a spatial reference. If the Geometry includes z or m values, the z or m domains, z or m resolutions, and z or m cluster tolerance properties must also be defined. The cluster tolerance and resolutions can be quickly and easily set using SetDefault methods on ISpatialReferenceResolution and ISpatialReferenceTolerance interfaces.

[C#]

    //The example shows a GeometryCollection for MultiPoint.
    public void ShowGeometries()
    {
        IGeometryCollection geometryCollection=new MultipointClass();
        //add 10 points in a loop
        object missing=Type.Missing;
        for (int i=0; i < 10; i++)
        {
            IPoint point=new PointClass();
            point.PutCoords(i * 10, i * 2);

            geometryCollection.AddGeometry(point as IGeometry, ref missing, ref missing);
        }

        int geometryCount=geometryCollection.GeometryCount;
        System.Windows.Forms.MessageBox.Show("GeometryCount=" + geometryCount);
        for (int i=0; i < geometryCount; i++)
        {
            IGeometry currentGeometry=geometryCollection.get_Geometry(i);
            IPoint point=currentGeometry as IPoint;
            //we know that there are IPoints only in the Geometrycollection.
            //But this is the safe and recommended way
            if (point != null)
            {
                System.Windows.Forms.MessageBox.Show("X=" + point.X + ", Y=" + point.Y);
            }
        }
    }

See Also

IGeometry Interface | ISegmentCollection Interface | IGeometryCollection Interface | IPointCollection Interface

.NET Snippets

Cut Polygon

.NET Samples

Convert part to feature command (Code Files: ConvertPart) | 3D multipatch examples (Code Files: CompositeExamples ExtrusionExamples GeometryUtilities GraphicsLayer3DUtilities RingExamples RingGroupExamples TriangleFanExamples TrianglesExamples TriangleStripExamples Vector3DExamples) | ViperPin tool (Code Files: ViperPinForm) | Custom vertex editing commands (Code Files: CustomVertexCommands) | Subset network evaluators (Code Files: SubsetHelperUI)

.NET Related Topics

Executing spatial queries | Geometry service | How to build a polygon using segments and points | How to create a multipart polyline | How to create a polygon | How to create a polyline | How to create a union of several polygons | How to modify a specific segment of a polyline | How to modify a specific vertex of a polyline | How to use the IEnumSegment methods | How to use the IEnumVertex methods