[发明专利]实现图形节点捕捉的方法无效
申请号: | 201210199256.0 | 申请日: | 2012-06-18 |
公开(公告)号: | CN102799352A | 公开(公告)日: | 2012-11-28 |
发明(设计)人: | 何小军;姚圣华 | 申请(专利权)人: | 江苏智途科技有限公司 |
主分类号: | G06F3/048 | 分类号: | G06F3/048 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 225000 江苏省扬州市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实现 图形 节点 捕捉 方法 | ||
1.一种实现图形节点捕捉的方法,其特征在于,包括如下步骤:
步骤一:捕捉对象初始化;
步骤二:在ArcGIS命令ITool的MouseMove函数中,实现捕捉过程:
首先,计算捕捉节点:
将捕捉节点分为两类:常规节点与非常规节点,常规节点包括节点、中点和最近点,非常规节点包括圆心、交点、垂点和延长线上点;利用ArcGIS提供的二次开发接口,常规节点的捕捉可以直接获取,非常规节点可以通过所述接口提供的数学方法来计算;
(1)使用IFeatureCache接口建立要素缓存,捕捉时只需对IFeatureCache集合中的要素进行捕捉;
(2)使用ArcEngine中的IHitTest接口作点击测试,以判断当前给定点和容限范围内是否能捕捉到点;
(3)常规节点的捕捉:
(a)判断当前捕捉点是否在要素缓存所包含的范围内,如果包含,则转下一步,如果不包含,则根据当前点和节点捕捉半径重新构建要素缓存;
(b)获取要素缓存的要素,如果要素为空,则返回空;
(c)判断是否能够捕捉到最近点,如不能,则获取下一个缓存要素,转步骤(b);
(d)判断当前是否设定了中点的捕捉,如果有,则转下一步;没有,则转步骤(h);
(e)判断当前是是否能捕捉到中点,如不能捕捉则转到步骤(h),如有则转下一步;
(f)判断是否捕捉端点,如果否,则返回中点坐标;如果是则转下一步;
(g)判断是否能捕捉到端点,如果能则返回端点坐标,否则返回中点坐标;
(h)判断是否捕捉端点,如果是则判断是否设置了捕捉端点,如果是则返回端点坐标,否则下一步;
(i)判断是否捕捉最近点,如果是则返回最近点坐标,否则获取下一个缓存要素,转步骤(b);
(4)圆心、垂点、延长线上点的捕捉:
(a)通过当前点坐标和捕捉半径构建单要素选择集;
(b)判断捕捉类型,如是圆心则转下一步,如果是垂点则转步骤(d),延长点则转步骤(e);
(c)获取要素并判断当前要素是否为圆要素,如果是则返回圆心坐标,否则返回空;
(d)获取要素并计算垂点,返回垂点坐标;
(e)获取要素并计算延长点,返回延长点坐标;
(5)交点的捕捉:
(a)通过当前点坐标和捕捉半径构建多要素选择集;
(b)要素之间两两求交点,得到交点则返回交点坐标,否则返回空;
然后,绘制捕捉点标记:
利用ArcEngine中的IDisplay接口,当捕捉接口捕捉到点之后,通过捕捉点构建要素,并采用符号参数进行绘制。
2.根据权利要求1所述的方法,其特征是所述绘制捕捉点标记的绘制流程为:
(a)判断上次绘制的捕捉标记要素a是否为空,如不为空,则再次绘制捕捉标记要素a,在地图窗口中擦除标记;
(b)判断新的捕捉要素标记b是否为空,如不为空则绘制新的捕捉要素标记b,并将b的值赋给a。
3.根据权利要求1或2所述的方法,其特征是,所述绘制捕捉点标记的步骤中,绘制对象进行捕捉标记绘制时,采用esriROPNotXOrPen绘制参数。
4.根据权利要求1或2所述的方法,其特征是所述捕捉对象初始化的方法为:
(1)在系统打开加载数据时,构建捕捉管理器对象,捕捉管理器对象包含捕捉功能开关变量、定向捕捉类型变量以及捕捉对象集合;
(2)获取图层集合,若当前图层不为空,则根据当前图层类型创建捕捉对象;捕捉对象分为点要素捕捉对象、线要素捕捉对象以及面要素捕捉对象,每个捕捉对象包含捕捉开关变量、捕捉图层等信息,同时也实现了根据鼠标点坐标和捕捉半径捕捉点的接口函数;
(3)将捕捉对象添加至捕捉管理器对象的捕捉对象集合中;
(4)获取下一个图层,返回步骤(2)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江苏智途科技有限公司,未经江苏智途科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210199256.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:荷包烫贴固定板
- 下一篇:仿古建筑大屋顶大跨度飞檐斗拱钢骨架