ArcGIS 将 IGeometryCollection 转换为 IEnumGeometry

ArcGIS Convert IGeometryCollection to IEnumGeometry

我错误地创建了一组多段线,每个顶点对都有一个几何体。通常他们有成千上万的几何图形。 我想将每个特征中的几何图形(注意:不合并特征)合并为一个几何图形。为此,我使用 ITopologicalOperator5.ConstructUnion。 ConstructUnion 采用 IEnumGeometry 参数,我有一个 IGeometryCollection 几何图形。我可以使用 GeometryBag 创建 IEnumGeometry,但 ConstructUnion 不接受 GeometryBag。 如果我使用 IEnumGeometry pEnum = (IEnumGeometry)pGeomCollection,它会抛出异常。 如果我将 IEnumGeometry pEnum = pGeomCollection 用作 IEnumGeometry,则 pEnum 为空。 在 VB.NET 中,Ctype(pGeomCollection, IEnumGeometry) 工作正常。 谁能告诉我如何将 (C#) 几何集合转换为 IEnumGeometry?

谢谢,

约翰

你试过了吗

IEnumGeometry enumGeom = (IEnumGeometry)((IGeometryBag)geometryCollection);

IGeometryBag 实现 IGeometryCollection,IGeometryBag 实现 IEnumGeometry。

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

解决方法是link几何包和几何Collection初始化时:

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

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

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