使用GP工具。
參考:
點(diǎn)擊打開(kāi)鏈接
代碼為:
public void EraSEOper(IFeatureClass ExSourceFC,IFeatureClass ExEraseFC) { IFeatureClass mFeatureClass = null; IFeatureClass mSourceFeatureClass = null; IFeatureCursor mFeatureCursor = mFeatureClass.Search(null, false); IFeature mFeature = mFeatureCursor.NextFeature(); while (mFeature != null) { ISpatialFilter tSF = new SpatialFilterClass(); tSF.Geometry = mFeature.Shape; tSF.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects; //求出與裁切框相交要素 IFeatureCursor tFeatureCursor = mSourceFeatureClass.Search(tSF, false); IFeature tFeature = tFeatureCursor.NextFeature(); while (tFeature != null) { IGeometry tGeo2 = tFeature.ShapeCopy; ITopologicalOperator tTope2 = tGeo2 as ITopologicalOperator; tTope2.Simplify(); IGeometry tGeo = tFeature.ShapeCopy; ITopologicalOperator tTope = tGeo as ITopologicalOperator; tTope.Simplify(); //用Envelope對(duì)要素進(jìn)行裁切 tTope.Intersect(mFeature.Shape, esriGeometryDimension.esriGeometry2Dimension); //tTope.Clip(this._Envelope); IGeometry tGeoClip = (IGeometry)tTope; //用裁切出來(lái)的要素,再與其源要素進(jìn)行求差處理,即得到外圍要素 IGeometry tGeoDe = tTope2.Difference(tGeoClip); //把外圍要素賦予源要素 tFeature.Shape = tGeoDe; tFeature.Store(); tFeature = tFeatureCursor.NextFeature(); mFeature = mFeatureCursor.NextFeature(); } } }需要完善的內(nèi)容
1.沒(méi)有判斷IFeatureClass對(duì)象是否為面對(duì)象,如果不為面對(duì)象則無(wú)法實(shí)現(xiàn)擦除。2.沒(méi)有考慮投影問(wèn)題。3.還有待發(fā)現(xiàn)其他可能產(chǎn)生的問(wèn)題。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注