wujing0327
路人甲
路人甲
  • 注册日期2006-04-19
  • 发帖数9
  • QQ
  • 铜币190枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1462回复:2

[求助]分割多边形,高手看一下

楼主#
更多 发布于:2006-05-28 14:03
<P>我画一条polyline分割多边形,线画后多边形没变化,也没有任何错误提示,调试了一下也没找到错误,很郁闷,</P>
<P>代码如下,在mousedown中画线</P>
<P>IActiveView activeView = (IActiveView)m_pMap;<BR>                IScreenDisplay screenDisplay = activeView.ScreenDisplay;</P>
<P>                ISimpleLineSymbol lineSymbol = new SimpleLineSymbolClass();<BR>                IRgbColor rgbColor = new RgbColorClass();<BR>                rgbColor.Red = 255;<BR>                lineSymbol.Color = rgbColor;</P>
<P>                IRubberBand rubberLine = new RubberLineClass();<BR>                IPolyline pPolyline = (IPolyline)rubberLine.TrackNew(screenDisplay, (ISymbol)lineSymbol);</P>
<P>                screenDisplay.StartDrawing(screenDisplay.hDC, (short)esriScreenCache.esriNoScreenCache);<BR>                screenDisplay.SetSymbol((ISymbol)lineSymbol);<BR>                screenDisplay.DrawPolyline(pPolyline);<BR>                screenDisplay.FinishDrawing();</P>
<P>                IFeatureSelection pFeatSel = (IFeatureSelection)m_pCurrentLayer;<BR>                ISelectionSet pSelectionSet = pFeatSel.SelectionSet;<BR>                SplitFeatures(pSelectionSet,pPolyline);</P>
<P>函数SplitFeatures(ISelectionSet pSelectionSet,IPolyline pPolyline)如下</P>
<P>            IFeatureCursor pCursor;<BR>            ISpatialFilter pSpatialFilter = new SpatialFilter();</P>
<P>            pSpatialFilter.Geometry = pPolyline;<BR>            pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;<BR>            IQueryFilter Query = pSpatialFilter;<BR>            IFeatureLayer pFeatureLayer = (IFeatureLayer)m_pCurrentLayer;<BR>            IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;<BR>            pCursor = pFeatureClass.Search(pSpatialFilter, false);<BR>            ICursor ppCursor = (ICursor)pCursor;<BR>            pSelectionSet.Search(Query, true, out ppCursor);<BR>            ITopologicalOperator pTopoOpo = (ITopologicalOperator)pPolyline;<BR>            pTopoOpo.Simplify();</P>
<P>            IFeature pFeature = pCursor.NextFeature();<BR>            do<BR>            {<BR>                IFeatureEdit pFeatureEdit;<BR>                pFeatureEdit = (IFeatureEdit)pFeature;<BR>                pFeatureEdit.Split(pPolyline);<BR>                pFeature = pCursor.NextFeature();<BR>            }<BR>            while (pFeature != null);</P>
<P>我用的是C#,</P>
喜欢0 评分0
wujing0327
路人甲
路人甲
  • 注册日期2006-04-19
  • 发帖数9
  • QQ
  • 铜币190枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-05-28 14:22
可以了,以上代码可以分割多边形
举报 回复(0) 喜欢(0)     评分
chenjunfc
外卖仔
外卖仔
  • 注册日期2003-08-14
  • 发帖数58
  • QQ283832077
  • 铜币452枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-06-02 17:20
<P>感觉差不多可以</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部