ArcEngine 测量.docx

ArcEngine 测量.docx

ID:42603349

大小:43.91 KB

页数:23页

时间:2019-09-18

ArcEngine 测量.docx_第1页
ArcEngine 测量.docx_第2页
ArcEngine 测量.docx_第3页
ArcEngine 测量.docx_第4页
ArcEngine 测量.docx_第5页
资源描述:

《ArcEngine 测量.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、利用ArcEngine实现距离量测,面积量测的功能已很简单,相信众多的ArcGIS爱好者都能写.但单纯的实现功能总觉得欠什么.本人喜欢改代码,喜欢优化代码,在原有的功能基础上总喜欢"润色",使之更好看.前一整子在玩skyline时看到skyline的测距功能能实时显示量测的距离,于是联想到之前自己用C#+ArcEngine写的测距功能.何不也优化一下自己代码?想到就做到.最近手有点痒,算练练手.废话少说,先附上效果图:说明:1.本功能的特点在于在量测的过称当中实时显示量测距离,并将结果实时显示在测距上方.在显示窗体上也显示量测的总

2、距离.要点:1.INewLineFeedback负责画线;2.在OnMouseDown事件中计算量测距离,并向GraphicsContainer添加线和节点的Element;3.在OnMouseUp事件中实时计算距离随鼠标移动后产生的新距离.4.将节点,量测值,线的element都分别存入到节点组和轨迹线组(IGroupElement),即用IGroupElement同一管理这些element;最后将这些groupelement又添加到一个总的groupelement.这样做的目的在于好控制这些element,特别是启动新的量测或

3、取消量测功能时可以控制这些element,而不必去用IGraphicsContainer.DeleteAllElements来清除这些element,使用IGraphicsContainer.DeleteAllElements会将所有的element删除.5.量测值element为ITextElement,由于他停靠在轨迹线的上方,因此需要对量测值element进行一定角度的旋转,旋转角度由轨迹线的方向角决定.6.绘制element之后的刷新问题也是比较重要的.刷新范围一定要控制好,太小了,添加的element显示不出来,太大了,

4、浪费.(实在不好控制就刷新整个extent吧,呵呵)核心代码如下:1.TrackLine类TrackLine//=================================功能测距==========================//描述:实时显示测量距离,节点位置,总长度//编程: Jin               开发时间:2009.8.10-2009.8.11//特点:实时计算量测距离.//缺点: 由于采用element做为显示内容,地图进行放大缩小操作后并不能很好//      控制量测值element和轨迹线e

5、lement之间的距离间隔.//===================================================================using System;using System.Drawing;using System.Runtime.InteropServices;using ESRI.ArcGIS.ADF.BaseClasses;using ESRI.ArcGIS.ADF.CATIDs;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.Carto;

6、using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.Display;using ESRI.ArcGIS.Geometry;using System.Windows.Forms;namespace MhGis.GisTool.Pb_Toolbar{    class TrackLine : BaseTool    {        private IHookHelper m_hookHelper = null;        private INewLineFeedback m_NewLi

7、neFeedback = null;        private IPointCollection m_ptColl; //记录节点        private MeasureMsgInfo _MsgInfo = null;        private IPolyline m_TraceLine = null; //完整的轨迹线        //        private IGroupElement m_Elements = null; //用于保存包含此功能产生的所有Element        private IG

8、roupElement m_TraceElement = null; //测距轨迹线        private IGroupElement m_VertexElement = null; //结点        private IGroupEl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。