基于objectarx的图幅自动接边算法的实现

基于objectarx的图幅自动接边算法的实现

ID:22581799

大小:63.00 KB

页数:9页

时间:2018-10-30

基于objectarx的图幅自动接边算法的实现_第1页
基于objectarx的图幅自动接边算法的实现_第2页
基于objectarx的图幅自动接边算法的实现_第3页
基于objectarx的图幅自动接边算法的实现_第4页
基于objectarx的图幅自动接边算法的实现_第5页
资源描述:

《基于objectarx的图幅自动接边算法的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于ObjectARX的图幅自动接边算法的实现摘要:地理信息系统中许多图形信息是通过已有图形数字化而来,这样不可避免地存在图幅间图元的接边问题。本文利用C#语言调用ObjectARX托管封装类进行编程,建立AutoCAD接边命令,在AutoCAD环境下调用接边命令实现自动接边,提高数字化成图的效率和数字化地图的精度。  关键词:数字地图自动接边接边要素ObjectARX    随着社会信息化发展和计算机技术日益深入应用,各种比例尺地图都采用计算机存储。地理信息系统中的很多图形信息、空间地理数据都于地形图,由于各种比例尺地图采用分幅管理,数字化过程中相邻图幅边界的几何位置与属性难免会出现不吻合

2、,因此两幅相邻的地图之间就存在着接边问题。在传统的手工成图方法中,接边是一项很重要的工作,在数字化测图的今天,接边问题仍然存在,特别是在已有地图的数字化过程中,接边工作量占整个图形编辑工作量20%~30%。在数据处理方面,能通过良好的算法,减少边界处的图形误差,提高基础数据质量。  1常用的地图接边方法  1.1平均法  平均法是取图边两边待接点的坐标均值作为接边后的点的坐标,该方法简单易行,适用于接边误差在精度允许范围内的各种直线、多义线类的接边处理,容易实现接边的全自动批量处理。  1.2强制法  强制法是把一条待接边的待接点强制附和到另一条待接边的待接点上,该方法主要用于用户能明显判断

3、出哪一条待接边比另一条待接边更准确、可靠,适合交互式的接边处理。如图1-2所示。  1.3优化法  无论采用了平均法还是强制法,在边界处都要产生一个拐点,如果测图无错误,此拐角应很小。但是如果待接边明显是一条直线边的话(如建筑物、直线道路、围墙等),这个很小的拐角也影响图形的美观,因此我们不但要在图边线上把两个点接在一起,还要考虑到接边后的图边两端线段要在一条直线上,既要共点,也要共线。这种方法就叫优化法。  以上三种常用接边方法各有优缺点,可根据图形的实际情况来分别采用。  2图幅自动接边算法设计  对于接边,手工处理效率非常低,对操作人员的素质要求也较高,因此必须寻求一种自动化程度高,操

4、作简便的接边方法,提高接边的效率和精度。本算法采用半自动接边,即采用人工判别与计算机处理相结合的地图接边处理法。在确定接边边界线和指定接边方法后,用人工指定需要接边处理的两条线,程序按要求完成接边处理工作。  3图幅自动接边程序实现  本设计利用ObjectARX提供的面向对象的开发环境及应用程序接口,使用简单、功能强大、表达力丰富的C#语言,在MicrosoftVisualStudio2005平台基础上进行编程,调用ObjectARX托管封装类,该类能对AutoCAD界面元素进行访问,包括命令行、特性对话框、AutoCAD编辑器及发布和打印组件,对AutoCAD进行二次开发,创建接边命令,

5、通过AutoCAD调用这些命令实现图幅接边自动化。  3.1程序结构介绍  接边过程中,首先要将需要拼接的两幅图的图形数据合并在一个临时的数据库中,根据各种地物的特点,将要素分为4类:1)直线:实线道路、围墙、铁路、房屋等;2)多段线:小路、陡坎、斜坡、地类界等;3)曲线:等高线、水系等;4)房屋线:实线或虚线建筑物。然后再按指定接边方法进行接边处理。  3.1.1直线接边命令(lineJB)  1)选择模块  创建一个Editor类对象。Editor类拥有访问AutoCAD命令行的相关方法,它还包括选择对象和其它一些重要的功能。采用手工选择实体,用PromptEntityOptions类进

6、行设置提示信息,根据提示信息,选择待接边的两个实体。将选择的实体存放在PromptEntityResult类对象中。  如果选择第一个实体操作结果(Status属性)是OK,继续选择第二个实体。否则在AutoCAD命令行输出“选择对象失败,请重新选择”。如果选择两个实体的类型匹配,继续,否则在AutoCAD命令行输出“选择对象失败,请重新选择”。验证条件:ent.GetType()==typeof(Line)&&ent1.GetType()==typeof(Line)。  2)接边模块  定义事务处理(Transaction)对象,把函数中有关数据库的操作封装起来。  using(Trans

7、actiontrans=db.TransactionManager.StartTransaction())  根据选择两个实体的ID,建立具有图形显示的Entity类对象ent、ent1,并强制转化为Line类对象Jbline、Jbline1。使用Line类StartPoint和EndPoint属性获取直线对象Jbline、Jbline1的始点和终点,存于List类对象PointArray、PointArra

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

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

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