ArcGIS将IGeometryCollection转换为IEnumGeometry

时间:2017-11-30 01:17:45

标签: c# arcobjects

我错误地为每个顶点对创建了一组几何线。通常它们具有数千种几何形状。 我想将每个要素中的几何(注意:NOT合并要素)合并为一个几何。为此,我使用 ITopologicalOperator5.ConstructUnion 。 ConstructUnion采用IEnumGeometry参数,我有一个几何的IGeometryCollection。我可以使用GeometryBag创建IEnumGeometry,但ConstructUnion不接受GeometryBags。 如果我使用IEnumGeometry pEnum =(IEnumGeometry)pGeomCollection它会引发异常。 如果我使用IEnumGeometry pEnum = pGeomCollection作为IEnumGeometry,那么pEnum为null。 在VB.NET中,Ctype(pGeomCollection,IEnumGeometry)工作正常。 谁能告诉我如何将(C#)Geometry Collection转换为IEnumGeometry?

谢谢,

约翰

2 个答案:

答案 0 :(得分:1)

解决方案是在启动Geometry Bag和Geometry Collection时将其链接起来:

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

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

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

答案 1 :(得分:0)

你试过吗

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

IGeometryBag实现了IGeometryCollection,IGeometryBag实现了IEnumGeometry。

但是GeometryCollection并没有直接实现IEnumGeometry,所以你必须先将其转换为GeometryBag,然后再转换为IEnumGeometry。