博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取IMap上绘制的Element的区域范围
阅读量:6202 次
发布时间:2019-06-21

本文共 1043 字,大约阅读时间需要 3 分钟。

运行环境:开发环境: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是当做点进行处理的,因此如果存在文本要素出现在外围,需要根据实际情况进行位置的简单调整即可。或者也可以获取这些文本的外接矩形进行计算,这样会更准确一些。

转载地址:http://eqmca.baihongyu.com/

你可能感兴趣的文章
python3 + Django + uwsgi + nginx 配置部署笔记
查看>>
UML设计一个电影票务销售系统(四)
查看>>
如何给VEEAM 7 分配角色权限
查看>>
AlphaGo Zero用它来调参?【高斯过程】到底有何过人之处?
查看>>
《Redis官方教程》Redis集群规范(二)
查看>>
卸载金蝶kis记账王的方法
查看>>
centos中系统启动故障排除
查看>>
Linux平台Oracle多个实例启动说明
查看>>
bash腳本編程之三 条件判断及算数运算
查看>>
php cookie
查看>>
linux下redis安装
查看>>
Sqlserver表值函数
查看>>
NYOJ-271 The 3n + 1 problem
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
JavaScript 数据类型
查看>>
量子通信和大数据最有市场突破前景
查看>>
跟益达学Solr5之使用Tika从PDF中提取数据导入索引
查看>>
StringBuilder用法小结
查看>>
UVa 10252-Common Permutation
查看>>
Oracle RAC环境下如何更新patch(Rolling Patch)
查看>>