为什么题目要加个“成功地”,因为 ITopologicalOperator的方法是bug非常多的,在90%的情况下能够按照你预想的工作,但是在10%的情况下,既不报错也不工作。这个merge的操作,成功地折磨了我两天。终于找到了解决的方法。 ICursor pCursor; featureSelect.SelectionSet.Search( null , false , out pCursor); IFeatureCursor pFeatureCursor = pCursor as IFeatureCursor; IFeature pFeatureFirst = pFeatureCursor.NextFeature(); // 开始一个编辑操作,以能够撤销 m_EditWorkspace.StartEditOperation(); IGeometry pGeometryFirst = pFeatureFirst.Shape; ITopologicalOperator2 topo_oper = (ITopologicalOperator2)pGeometryFirst; // ITopologicalOperator的操作是bug很多的,先强制的检查下面三个步骤,再进行操作 // 成功的可能性大一些 topo_oper.IsKnownSimple_2 = false ; topo_oper.Simplify(); pGeometryFirst.SnapToSpatialReference(); // 这是准备合并的图斑使用的 ITopologicalOperator2 topo_oper2; IGeometry pGeometryNext; IFeature pFeatureNext = pFeatureCursor.NextFeature(); while (pFeatureNext != null ) { pGeometryNext = pFeatureNext.ShapeCopy; //与上面的同理 topo_oper2 = pGeometryNext as ITopologicalOperator2; topo_oper2.IsKnownSimple_2 = false; topo_oper2.Simplify(); pGeometryNext.SnapToSpatialReference(); //这才是合并图斑的关键 pGeometryFirst = topo_oper.Union(pGeometryNext); pFeatureNext.Delete(); pFeatureNext = pFeatureCursor.NextFeature(); } topo_oper.IsKnownSimple_2 = false ; topo_oper.Simplify(); pFeatureFirst.Shape = pGeometryFirst; pFeatureFirst.Store(); m_EditWorkspace.StopEditOperation(); 转载于:https://www.cnblogs.com/renji/archive/2007/11/30/978029.html