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).

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

Name 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.

IGeometryCollection.AddGeometries Method

Adds references to the specified geometries. This method is intended for internal use only.

Public Sub AddGeometries ( _
    ByVal Count As Integer, _
    ByRef newGeometries As IGeometry _
)
public void AddGeometries (
    int Count,
    ref IGeometry newGeometries
);

Remarks

The geometries are added last in the list. Use an array of geometries (IGeometry) and the exact number (count ) of elements in the array. Exceeding the boundary of the array will cause an application error. If you don't want to place the geometries last in the collection then use the InsertGeometries method.

When using C# you must use the IGeometryBridge interface to call this method.
When using VBNET you must use the IGeometryBridge interface to call this method.

IGeometryCollection.AddGeometry Method

Adds a reference to the input geometry either at the end, or before, or after the specified index.

Public Sub AddGeometry ( _
    ByVal inGeometry As IGeometry, _
    [ByRef before As Object], _
    [ByRef after As Object] _
)
public void AddGeometry (
    IGeometry inGeometry,
    ref object before,
    ref object after
);

Remarks

When applying the AddGeometry method give either the before or after index and not both. Adding a Geometry to the collection as the first one is done by setting the before index as 0.

The spatial reference of the GeometryCollection is transferred (objects projected if necessary) to any objects added to it. However the spatial reference of the added geometry is not transferred to the GeometryCollection. Always make sure to set the spatial reference on the object GeometryCollection prior to add other geometries to it to avoid creating invalid geometry. For example, adding geometry objects to a GeometryBag that doesn't have a well-defined spatial reference will set an undefined spatial reference to all the objects added to the bag. Using this GeometryBag may cause unexpected behavior with the ITopologicalOperator::ConstructUnion method.

 
IPoint pnt = new PointClass();

 pnt.PutCoords(x, y);

 IGeometryCollection geomColl = new MultipointClass() as IGeometryCollection;

 object obj = Type.Missing;

 geomColl.AddGeometry(pnt, ref obj, ref obj);

IGeometryCollection.AddGeometryCollection Method

Adds references to geometries in the input collection.

Public Sub AddGeometryCollection ( _
    ByVal newGeometries As IGeometryCollection _
)
public void AddGeometryCollection (
    IGeometryCollection newGeometries
);

Description

Adds references of all of the parts of the input GeometryCollection to the end of the current GeometryCollection.

IGeometryCollection.GeometriesChanged Method

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.

Public Sub GeometriesChanged ( _
)
public void GeometriesChanged (
);

Description

GeometriesChangedflags that the geometries have been changed. It also marks a top level geometry as being non-simple. Use it when manipulating the parts of a geometry directly (for example, rotating a ring). The top level geometry won't know that its cached envelope, length, centroid, etc. are invalid until this method is used.

IGeometryCollection.Geometry Property

A reference to the ith geometry.

Public Function get_Geometry ( _
    ByVal Index As Integer _
) As IGeometry
public IGeometry get_Geometry (
    int Index
);

Description

Returns the ith Geometry from the GeometryCollection. The first Geometry has index 0 and the last Geometry has index equal to GeometryCount - 1. The last Geometry can also be referenced using index -1.

Remarks

Note: The GeometryType returned by the Geometry method depends on which object type points the IGeometryCollection pointer.

IGeometryCollection Object GeometryType Returned Object GeometryType
Polygon Rings
Polyline Paths
Multipoint Points
Multipatch TriangleFans or TriangleStrips or Rings
TriangleFan Points
TriangleStrip Points
Geometry Bag Any type of IGeometry

IGeometryCollection.GeometryCount Property

The number of geometries in this collection.

Public ReadOnly Property GeometryCount As Integer
public int GeometryCount {get;}

Description

Returns the number of Geometries in the GeometryCollection. The last Geometry in the GeometryCollection has an index equal to GeometryCount - 1.

IGeometryCollection.InsertGeometries Method

Inserts at the specified index references to some number of geometries in the input array. This method is intended for internal use only.

Public Sub InsertGeometries ( _
    ByVal Index As Integer, _
    ByVal Count As Integer, _
    ByRef newGeometries As IGeometry _
)
public void InsertGeometries (
    int Index,
    int Count,
    ref IGeometry newGeometries
);

Remarks

The geometries are inserted before the ith (index) element in the list. Use an array of geometries and give the exact number (count ) of elements in the array. A too large value for the count parameter causes exceeding the boundary of the array and will cause an application error. To place the geometries last in the collection then use the addGeometries method.

When using C# you must use the IGeometryBridge interface to call this method.
When using VBNET you must use the IGeometryBridge interface to call this method.

IGeometryCollection.InsertGeometryCollection Method

Inserts at the specified index references to all if the geometries in the input collection.

Public Sub InsertGeometryCollection ( _
    ByVal Index As Integer, _
    ByVal newGeometries As IGeometryCollection _
)
public void InsertGeometryCollection (
    int Index,
    IGeometryCollection newGeometries
);

Remarks

InsertGeometryCollectionmerges one GeometryCollection within another at a specified index.

//C# Example: Insert GeometryCollection geomColl2 within geomColl at index 3. geomColl.InsertGeometryCollection(3, geomColl2);

IGeometryCollection.QueryGeometries Method

Populates the array with references to a sub-sequence of geometries. This method is intended for internal use only.

Public Sub QueryGeometries ( _
    ByVal Index As Integer, _
    ByVal Count As Integer, _
    ByRef geometries As IGeometry _
)
public void QueryGeometries (
    int Index,
    int Count,
    ref IGeometry geometries
);

Remarks

Note: The GeometryType returned by the QueryGeometries method depends on which object type points the IGeometryCollection pointer.

IGeometryCollection Object GeometryType Returned Object GeometryType
Polygon Rings
Polyline Paths
Multipoint Points
Multipatch TriangleFans or TriangleStrips or Rings
TriangleFan Points
TriangleStrip Points
Geometry Bag Any type of IGeometry
When using C# you must use the IGeometryBridge interface to call this method.
When using VBNET you must use the IGeometryBridge interface to call this method.

IGeometryCollection.RemoveGeometries Method

Removes references to some geometries from this collection.

Public Sub RemoveGeometries ( _
    ByVal Index As Integer, _
    ByVal Count As Integer _
)
public void RemoveGeometries (
    int Index,
    int Count
);

Remarks

RemoveGeometriesdeletes count number of geometries from the indexlocation.

IGeometryCollection.SetGeometries Method

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.

Public Sub SetGeometries ( _
    ByVal Count As Integer, _
    ByRef newGeometries As IGeometry _
)
public void SetGeometries (
    int Count,
    ref IGeometry newGeometries
);

Remarks

SetGeometries is used to reset the references of the geometries within the GeometryCollection . The result is that all references are changed to**point only at the geometries contained within the specified array. Note that the GeometryCount**changes accordingly also.

When using C# you must use the IGeometryBridge interface to call this method.
When using VBNET you must use the IGeometryBridge interface to call this method.

IGeometryCollection.SetGeometryCollection Method

Replaces all geometries in the collection with references to geometries from the input collection.

Public Sub SetGeometryCollection ( _
    ByVal newParts As IGeometryCollection _
)
public void SetGeometryCollection (
    IGeometryCollection newParts
);

Remarks

SetGeometryCollectioncopies the geometry references from one GeometryCollection to another.VB Example: Set GeometryCollection m_pGeoColl_A as m_pGeoColl_B

  m_pGeoColl_A.SetGeometryCollection m_pGeoColl_B

Classes that implement IGeometryCollection

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.

//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);

            }

        }

    }

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.