我错误地为每个顶点对创建了一组几何线。通常它们具有数千种几何形状。 我想将每个要素中的几何(注意: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?
谢谢,
约翰
答案 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。