首页 > 代码库 > ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码
ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码
转自原文 ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码
#region 校验合法性 ArrayList pFeatureArray = null; pFeatureArray = Application.Editor.FeatureSelection(); int count=pFeatureArray.Count; if (count<1) { MessageBox.Show("最少必须选择1个要素才能进行要素分解!", "提示"); return; } #endregion try { //启动编辑操作 Application.Editor.StartOperation(); #region 对选中的要素进行多部件测试及分解 int multipartcount = 0; for (int i = 0; i < count; i++) { IFeature pFeature = pFeatureArray as IFeature; if (pFeature.ShapeCopy.IsEmpty) continue; IGeometry pGeometry = pFeature.ShapeCopy; IGeometryCollection pGeocoll = pGeometry as IGeometryCollection; int geomcount = pGeocoll.GeometryCount; if (geomcount > 1) { multipartcount++; for (int k = 1; k < geomcount; k++) { IFeature newFeaturte = (pFeature.Class as IFeatureClass).CreateFeature(); IFeatureEdit pFeatureEdit = pFeature as IFeatureEdit; pFeatureEdit.SplitAttributes(newFeaturte); IGeometry newGeom = pGeocoll.get_Geometry(k); if (pFeature.ShapeCopy.GeometryType == esriGeometryType.esriGeometryPolygon) newGeom=GeometryHelper.ConstructPolygon(newGeom); else newGeom = GeometryHelper.ConstructPolyline(newGeom); newGeom.SpatialReference = pFeature.ShapeCopy.SpatialReference; newFeaturte.Shape = newGeom; newFeaturte.Store(); } IGeometry newGeom2 = pGeocoll.get_Geometry(0); if (pFeature.ShapeCopy.GeometryType == esriGeometryType.esriGeometryPolygon) newGeom2 = GeometryHelper.ConstructPolygon(newGeom2); else newGeom2 = GeometryHelper.ConstructPolyline(newGeom2); newGeom2.SpatialReference = pFeature.ShapeCopy.SpatialReference; pFeature.Shape = newGeom2; pFeature.Store(); Application.Editor.StopOperation("分解多部件要素"); } else { continue; } } if (multipartcount == 0) { MessageBox.Show("未选择多部件要素!", "分解要素"); return; } #endregion } catch (Exception ex) { Application.Editor.AbortOperation(); MessageHelper.WriteLog("分解多部件要素", ex); } finally { Application.ActiveView.Refresh(); FlashFeatures(); }
ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。