Provides access to members that enumerate the members of a collection of geometries.
Description
IEnumGeometry methods can be used to loop over the geometries contain in a GeometryBag or an EnumFeatureGeometry.
Members
Name | Description | |
---|---|---|
Count | The number of geometries in the enumeration. | |
Next | Returns the next geometry in the enumeration. | |
Reset | Starts the enumeration at the beginning. |
IEnumGeometry.Count Property
The number of geometries in the enumeration.
Public ReadOnly Property Count As Integer
public int Count {get;}
Description
Returns the number of distinct geometry parts in the enumeration. This count is the same as the count returned by GeometryCount in a GeometryCollection.
IEnumGeometry.Next Method
Returns the next geometry in the enumeration.
Public Function Next ( _
) As IGeometry
public IGeometry Next (
);
Description
Returns the Next Geometry part from the current enumeration location.
IEnumGeometry.Reset Method
Starts the enumeration at the beginning.
Public Sub Reset ( _
)
public void Reset (
);
Description
Resets the current enumeration location to the null pointer at the beginning of the enumeration such that the Next Geometry is the first Geometry part in the enumeration.
Classes that implement IEnumGeometry
Classes | Description |
---|---|
EnumFeatureGeometry (esriGeoDatabase) | Esri enumerator for geometries of a feature class or selection set. |
GeometryBag | An ordered collection of objects that support the IGeometry interface. |
//This example demonstrates how to use the IEnumGeometry methods
public void IEnumGeometry_Example()
{
IGeometryBag geometryBag = CreateGeometryBag() as IGeometryBag;
IEnumGeometry enumGeometry = geometryBag as IEnumGeometry;
//Reset the enumrator
enumGeometry.Reset();
//Print the number of geometries
System.Windows.Forms.MessageBox.Show("Number of geometries : " + enumGeometry.Count);
//Loop over the enumerator and print the geometrytype of each geometry
IGeometry geometry = enumGeometry.Next();
int counter = 1;
while(geometry != null)
{
System.Windows.Forms.MessageBox.Show("Geometry: " + counter + " Geometry type: " + geometry.GeometryType);
geometry = enumGeometry.Next();
counter++;
}
}
//Create a geometrybag for the need of the example
private IGeometryCollection CreateGeometryBag()
{
//Should set the spatial reference on the geometry bag here - Code ommited
//Create some points
IPoint[] points = new IPoint[4];
for(int i = 0; i < 4; i++)
{
points[i] = new PointClass();
}
points[0].PutCoords(0, 0);
points[1].PutCoords(0, 10);
points[2].PutCoords(10, 10);
points[3].PutCoords(0, 0);
//Create a polyline
IPointCollection polyLinePoints = new PolylineClass();
//helper class to solve C-Style Array usage in COM classes
IGeometryBridge geometryBride = new GeometryEnvironmentClass();
geometryBride.AddPoints(polyLinePoints as IPointCollection4, ref points);
//Create a polygon
IPointCollection polygonPoints = new PolygonClass();
geometryBride.AddPoints(polygonPoints as IPointCollection4, ref points);
IGeometryCollection geometryBag = new GeometryBagClass();
object Missing = Type.Missing;
geometryBag.AddGeometry(polyLinePoints as IGeometry, ref Missing, ref Missing);
geometryBag.AddGeometry(polygonPoints as IGeometry, ref Missing, ref Missing);
return geometryBag;
}
'This example demonstrates how to use the IEnumGeometry methods
Sub IEnumGeometry_Example()
Dim pGeoBag As ESRI.ArcGIS.Geometry.IGeometryBag, pEnumGeometry As ESRI.ArcGIS.Geometry.IEnumGeometry
Dim pGeo As ESRI.ArcGIS.Geometry.IGeometry, i As Long
pGeoBag = CreateGeometryBag
pEnumGeometry = pGeoBag
'Reset the enumrator
pEnumGeometry.Reset()
'Print the number of geometries
Debug.Print("Number of geometries : " & pEnumGeometry.Count)
'Loop over the enumerator and print the geometrytype of each geometry
pGeo = pEnumGeometry.Next
While Not pGeo Is Nothing
Debug.Print("Geometry: " & i & " Geometry type: " & pGeo.GeometryType)
i = i + 1
pGeo = pEnumGeometry.Next
End While
End Sub
'Create a geometrybag for the need of the example
Private Function CreateGeometryBag() As ESRI.ArcGIS.Geometry.IGeometryBag
Dim pGeoColl As ESRI.ArcGIS.Geometry.IGeometryCollection, pPointColl0 As ESRI.ArcGIS.Geometry.IPointCollection
Dim pts(3) As ESRI.ArcGIS.Geometry.IPoint, i As Long
Dim pPointColl1 As ESRI.ArcGIS.Geometry.IPointCollection
pGeoColl = New ESRI.ArcGIS.Geometry.GeometryBag
'Should set the spatial reference on the geometry bag here - Code ommited
'Create some points
For i = 0 To 3
pts(i) = New ESRI.ArcGIS.Geometry.Point
Next
pts(0).PutCoords(0, 0)
pts(1).PutCoords(0, 10)
pts(2).PutCoords(10, 10)
pts(3).PutCoords(0, 0)
'Create a polyline
pPointColl0 = New ESRI.ArcGIS.Geometry.Polyline
pPointColl0.AddPoints(3, pts(0))
'Create a polygon
pPointColl1 = New ESRI.ArcGIS.Geometry.Polygon
pPointColl1.AddPoints(4, pts(0))
pGeoColl.AddGeometry(pPointColl0)
pGeoColl.AddGeometry(pPointColl1)
CreateGeometryBag = pGeoColl
End Function