日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码

發布時間:2025/3/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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及分解(炸开)代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。