阅读:1462回复:2
[求助]分割多边形,高手看一下
<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> |
|
1楼#
发布于:2006-06-02 17:20
<P>感觉差不多可以</P>
|
|
2楼#
发布于:2006-05-28 14:22
可以了,以上代码可以分割多边形
|
|