zoukankan      html  css  js  c++  java
  • 获取IMap上绘制的Element的区域范围

    运行环境:开发环境:Windows7旗舰版64bit、VisualStudio2008 With SP1、ArcEngine10.0、NetFrameWork4.0、IIS7和C#开发语言。

    问题描述:之前CS端的断面分析功能,是将断面图绘制在IMap之上,然后再AxMapControl进行展现,现在要将其移植到WebService中,自然没有控件进行展现,于是采用了直接将在IMap中绘制的要素导出为图片的方式进行,但是在导出图片的过程中,往往导出的区域并不是自己绘制要素所在的区域,因此要先获取自己绘制要素的区域范围。

    下面是获取绘制的要素公共外接矩形方法,只要在绘制完成后获取此公共外接矩形,然后将该区域进行导出为图片即可。

       1: //获取绘制要素的整体范围
       2: IEnumElement pEnumElem;
       3: IGraphicsContainer graphicsContainer = pMap as IGraphicsContainer;
       4: IGraphicsContainerSelect pGraphicsContainerSelect = pMap as IGraphicsContainerSelect;
       5: pGraphicsContainerSelect.SelectAllElements();
       6: pEnumElem = pGraphicsContainerSelect.SelectedElements;
       7: IElement ele = pEnumElem.Next();
       8: IEnvelope env = new EnvelopeClass();
       9: while (ele != null)
      10: {
      11:     IGeometry geo = ele.Geometry;
      12:     ele = pEnumElem.Next();
      13:     env.Union(geo.Envelope);
      14: }
      15: pActiveView.Extent = env;
      16: pGraphicsContainerSelect.UnselectAllElements();

    最后获取的env就是所需要的公共外接矩形。

    注意:在此过程中对于文本要素的Envelop是当做点进行处理的,因此如果存在文本要素出现在外围,需要根据实际情况进行位置的简单调整即可。或者也可以获取这些文本的外接矩形进行计算,这样会更准确一些。

  • 相关阅读:
    Solaris下批量kill掉oracle的session
    我写blog的方式变迁
    filezilla ftp client在win7 下获取ftp目录信息出错解决方法
    GNU System Monitor编译问题
    在vmware的Solaris虚拟机中安装vmtool
    关于golden gate director client的一点点使用总结
    测试 乱弹
    ORM的世界 (再补充)
    Yahoo Konfabulator
    轻量容器和注射依赖 的自实现
  • 原文地址:https://www.cnblogs.com/Jingkunliu/p/3854004.html
Copyright © 2011-2022 走看看