shinewind
路人甲
路人甲
  • 注册日期2005-08-02
  • 发帖数1
  • QQ
  • 铜币111枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:836回复:0

请教各位高手,在Arcgis中如何删除Polygon 区域块特性!!

楼主#
更多 发布于:2005-12-01 17:29
<P>我在用C#和AO编写如何删除图层中的Polygon区域时,老报错,请大家给段代码或指正,</P>
<P>本人在此多谢各路大侠了:</P>
<P>public bool DeleteFeature(IMap pMap,IFeatureLayer pFeatureLayer,IFeature pFeature)<BR>  {<BR>   IInvalidArea pInvalidArea ; <BR>   ISelectionSet pSelectionSet ; <BR>   ICoverageFeatureClass pCoverageFC ; <BR>   IFeatureSelection pFeatureSelection  ;<BR>   IWorkspaceEdit pWorkspaceEdit ;<BR>   ISet pSet ;<BR>   bool bHasTopology ; <BR>   <BR>   <BR>   if (pFeature == null) return false ;<BR>   pSet = new SetClass() ;<BR>   pInvalidArea = new InvalidAreaClass() ; <BR>   pWorkspaceEdit = null ;<BR>   bHasTopology = false ;<BR>   try<BR>   {<BR>    IDataset pDataset = (IDataset)pFeatureLayer.FeatureClass ; <BR>    if ((pDataset.Type == esriDatasetType.esriDTFeatureClass) || (pDataset.Type ==  esriDatasetType.esriDTFeatureDataset)) <BR>    {<BR>     // start editing  <BR>     pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace ;<BR>     if (! pWorkspaceEdit.IsBeingEdited())<BR>     {<BR>      pWorkspaceEdit.StartEditing(true) ;<BR>      pWorkspaceEdit.EnableUndoRedo() ;<BR>     }<BR>     //=================================<BR>     pFeatureSelection =(IFeatureSelection) pFeatureLayer ; <BR>                    pSelectionSet = pFeatureSelection.SelectionSet ; </P>
<P>     if (pFeature is ICoverageFeatureClass )<BR>     {<BR>      pCoverageFC =(ICoverageFeatureClass)pFeature ;<BR>      if (pCoverageFC.Topology ==ESRI.ArcObjects.Core.esriFeatureClassTopology.esriFCTExists ) bHasTopology = true ;<BR>     }<BR>     if (!bHasTopology)<BR>     {<BR>      pInvalidArea.Add(pFeature) ;<BR>      pSet.Add(pFeature) ;<BR>     }<BR>     <BR>     IRow pRow = pFeature.Table.GetRow(pFeature.OID) ;<BR>     IRowEdit pRowEdit = (IRowEdit)pRow ;<BR>     pRow.Delete() ;<BR>     pRowEdit.DeleteSet(pSet) ;</P>
<P>     pMap.ClearSelection() ;<BR>    pInvalidArea.Invalidate((short)esriScreenCache.esriAllScreenCaches) ;<BR>    <BR>     pWorkspaceEdit.StopEditOperation();<BR>     pWorkspaceEdit.StopEditing(true) ; <BR>    }<BR>    IActiveView pActiveView =(IActiveView)pMap ;<BR>    pActiveView.Refresh(); <BR>    // pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,null) ;  <BR>    return true ;<BR>   }<BR>   catch (Exception Ex)<BR>   {<BR>    if ( pWorkspaceEdit.IsBeingEdited()) {pWorkspaceEdit.StopEditOperation(); pWorkspaceEdit.StopEditing(true) ;}<BR>    MessageBox.Show("DeleteOnFeature错误信息:“" + Ex.Message + " ”","错误",MessageBoxButtons.OK,MessageBoxIcon.Error) ; <BR>    return false ;<BR>   }</P>
<P>  }<BR></P>
<P>运行时,报错:“发生灾难性错误”。</P>
喜欢0 评分0
游客

返回顶部