AE下实现测量.docx

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AE下实现测量

利用ArcEngine实现距离量测,面积量测的功能已很简单,相信众多的ArcGIS爱好者都能写. 但单纯的实现功能总觉得欠什么.本人喜欢改代码,喜欢优化代码,在原有的功能基础上总喜欢润色,使之更好看.前一整子在玩skyline时看到 skyline 的测距功能能实时显示量测的距离,于是联想到之前自己用C#+ArcEngine 写的测距功能.何不也优化一下自己代码? 想到就做到.最近手有点痒,算练练手.废话少说,先附上效果图:说明:1.本功能的特点在于在量测的过称当中实时显示量测距离,并将结果实时显示在测距上方.在显示窗体上也显示量测的总距离.要点:1. INewLineFeedback 负责画线;2. 在OnMouseDown事件中计算量测距离,并向GraphicsContainer添加线和节点的Element;3.在OnMouseUp事件中实时计算距离随鼠标移动后产生的新距离.4. 将节点,量测值,线的element都分别存入到节点组和轨迹线组(IGroupElement),即用IGroupElement同一管理这些element; 最后将这些groupelement又添加到一个总的groupelement.这样做的目的在于好控制这些element,特别是启动新的量测或取消量测功能时可以控制这些element,而不必去用IGraphicsContainer.DeleteAllElements来清除这些element,使用IGraphicsContainer.DeleteAllElements会将所有的element删除.5. 量测值element 为ITextElement, 由于他停靠在轨迹线的上方,因此需要对量测值element进行一定角度的旋转,旋转角度由轨迹线的方向角决定.6. 绘制element之后的刷新问题也是比较重要的. 刷新范围一定要控制好,太小了,添加的element显示不出来,太大了,浪费. (实在不好控制就刷新整个extent吧,呵呵)核心代码如下:1. TrackLine类//=================================功能测距==========================//描述:实时显示测量距离,节点位置,总长度//编程:?Jin开发时间:2009.8.10-2009.8.11//特点:实时计算量测距离.//缺点:?由于采用element做为显示内容,地图进行放大缩小操作后并不能很好//控制量测值element和轨迹线element之间的距离间隔.//===================================================================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;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_NewLineFeedback?=?null;?private?IPointCollection?m_ptColl;?//记录节点?private?MeasureMsgInfo?_MsgInfo?=?null;?private?IPolyline?m_TraceLine?=?null;?//完整的轨迹线?//?private?IGroupElement?m_Elements?=?null;?//用于保存包含此功能产生的所有Element?private?IGroupElement?m_TraceElement?=?null;?//测距轨迹线?private?IGroupElement?m_VertexElement?=?null;?//结点?private?IGroupElement?m_LabelElement?=?null;?//?距离标记?public?TrackLine()?{?//?//?TODO:?Define?values?for?the

文档评论(0)

sh4125733 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档