随笔 - 31  文章 - 0 评论 - 149 trackbacks - 36
<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

与我联系

搜索

 

常用链接

留言簿(2)

我的标签

随笔分类

随笔档案

相册

收藏夹

积分与排名

  • 积分 - 38213
  • 排名 - 1053

最新评论

阅读排行榜

评论排行榜

为什么题目要加个“成功地”,因为ITopologicalOperator的方法是bug非常多的,在90%的情况下能够按照你预想的工作,但是在10%的情况下,既不报错也不工作。这个merge的操作,成功地折磨了我两天。终于找到了解决的方法。
      ICursor pCursor;
      featureSelect.SelectionSet.Search(
nullfalseout pCursor);

      IFeatureCursor pFeatureCursor 
= pCursor as IFeatureCursor;
      IFeature pFeatureFirst 
= pFeatureCursor.NextFeature();

      
// 开始一个编辑操作,以能够撤销
      m_EditWorkspace.StartEditOperation();

      IGeometry pGeometryFirst 
= pFeatureFirst.Shape;
      ITopologicalOperator2 topo_oper 
= (ITopologicalOperator2)pGeometryFirst;

      
//ITopologicalOperator的操作是bug很多的,先强制的检查下面三个步骤,再进行操作
      
//成功的可能性大一些
      topo_oper.IsKnownSimple_2 = false;
      topo_oper.Simplify();
      pGeometryFirst.SnapToSpatialReference();

      
//这是准备合并的图斑使用的
      ITopologicalOperator2 topo_oper2;
      IGeometry pGeometryNext;
      IFeature pFeatureNext 
= pFeatureCursor.NextFeature();

      
while (pFeatureNext != null)
      
{
        pGeometryNext 
= pFeatureNext.ShapeCopy;

        
//与上面的同理
        topo_oper2 = pGeometryNext as ITopologicalOperator2;
        topo_oper2.IsKnownSimple_2 
= false;
        topo_oper2.Simplify();
        pGeometryNext.SnapToSpatialReference();

        
//这才是合并图斑的关键
        pGeometryFirst = topo_oper.Union(pGeometryNext);
        pFeatureNext.Delete();

        pFeatureNext 
= pFeatureCursor.NextFeature();
      }

      topo_oper.IsKnownSimple_2 
= false;
      topo_oper.Simplify();
      pFeatureFirst.Shape 
= pGeometryFirst;
      pFeatureFirst.Store();
      m_EditWorkspace.StopEditOperation();
posted on 2007-11-30 11:14 Ren 阅读(397) 评论(2)  编辑 收藏 所属分类: ArcEngine

FeedBack:
#1楼  2007-12-11 19:22 xc#      
Simplify 也不能滥用 闭合的实体会出问题
  回复  引用  查看    
#2楼 [楼主] 2007-12-11 19:34 任佶      
这也是没办法的办法
  回复  引用  查看    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交