zoukankan      html  css  js  c++  java
  • 如何调用ITopologicalOperator.Union方法成功地merge polygon

    为什么题目要加个“成功地”,因为ITopologicalOperator的方法是bug非常多的,在90%的情况下能够按照你预想的工作,但是在10%的情况下,既不报错也不工作。这个merge的操作,成功地折磨了我两天。终于找到了解决的方法。
          ICursor pCursor;
          featureSelect.SelectionSet.Search(null, false, out 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();
     来自:http://www.cnblogs.com/renji/archive/2007/11/30/978029.html

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yanleigis/archive/2008/04/18/2305010.aspx

  • 相关阅读:
    重新开始学习Linux
    2006:远离windows, 拥抱linux!
    适合做首页的网站: http://www.netvibes.com/
    netvibes出问题了,登陆不进去。
    推荐开源的rss阅读器rssreader 3.0,支持中文
    ubuntu的即时通讯gaim不错, 如何连qq呢?
    linux是否能把显示改为1024x768呢?
    通过IRC学习ubuntu很不错
    Firefox 扩展软件介绍(转载) Mozine 论坛
    几个有意思的网站
  • 原文地址:https://www.cnblogs.com/linghe/p/1635501.html
Copyright © 2011-2022 走看看