Provides access to members that enumerate the members of a collection of geometries.
Product Availability
Description
IEnumGeometry methods can be used to loop over the geometries contain in a GeometryBag or an EnumFeatureGeometry.
Members
Description | ||
---|---|---|
Count | The number of geometries in the enumeration. | |
Next | Returns the next geometry in the enumeration. | |
Reset | Starts the enumeration at the beginning. |
CoClasses that implement IEnumGeometry
CoClasses and 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. |
[C#]
//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