C# ArcGIS将IgometryCollection转换为IEnumGeometry

C# ArcGIS将IgometryCollection转换为IEnumGeometry,c#,arcobjects,C#,Arcobjects,我错误地创建了一组多段线,每个顶点对都有一个几何体。通常,它们有数千种几何图形。 我想合并几何体注意:不要将每个特征中的特征合并为一个几何体。为此,我使用ITopologicalOperator5.ConstructionUnion。ConstructUnion接受IEnumGeometry参数,我有一个几何图形的IGeometryCollection。我可以使用GeometryBag创建IEnumGeometry,但ConstructUnion不接受GeometryBag。 如果使用IEnum

我错误地创建了一组多段线,每个顶点对都有一个几何体。通常,它们有数千种几何图形。 我想合并几何体注意:不要将每个特征中的特征合并为一个几何体。为此,我使用ITopologicalOperator5.ConstructionUnion。ConstructUnion接受IEnumGeometry参数,我有一个几何图形的IGeometryCollection。我可以使用GeometryBag创建IEnumGeometry,但ConstructUnion不接受GeometryBag。 如果使用IEnumGeometry pEnum=IEnumGeometrypGeomCollection,则会引发异常。 如果我使用IEnumGeometry pEnum=pGeomCollection作为IEnumGeometry,那么pEnum为null。 在VB.NET CtypepGeomCollection中,IEnumGeometry工作正常。 谁能告诉我如何将C几何体集合转换为IEnumGeometry

谢谢

约翰你试过了吗

IEnumGeometry enumGeom = (IEnumGeometry)((IGeometryBag)geometryCollection);
IGeometryBag实现IGeometryCollection,IGeometryBag实现IEnumGeometry


但是GeometryCollection不直接实现IEnumGeometry,因此您必须先将其强制转换为GeometryBag,然后再转换为IEnumGeometry。

解决方案是在启动几何体包和几何体集合时链接它们:

IGeometryBag pGeomBag = new GeometryBagClass();
pGeomBag.SpatialReference = .......

IGeometryCollection pGeomColl = new PolylineClass();
pGeomColl = (IGeometryCollection)pGeomBag;

IEnumGeometry pEnum = new EnumFeatureGeometryClass();
pEnum = (IEnumGeometry)pGeomBag;

谢谢你,格温。不幸的是,它没有起作用。它因以下错误而崩溃:“无法将PolylineClass类型的COM对象强制转换为接口类型IGeometryBag”。是否已将polyline对象初始化为IPolyLine?Like:IPolyLine pl=新的PolyLineClass;PolyLine的类对象不实现IGeometryBag,但接口实现了。