曲线数据压缩方法与实现.doc

上传人:99****p 文档编号:1746618 上传时间:2019-03-14 格式:DOC 页数:7 大小:26.50KB
下载 相关 举报
曲线数据压缩方法与实现.doc_第1页
第1页 / 共7页
曲线数据压缩方法与实现.doc_第2页
第2页 / 共7页
曲线数据压缩方法与实现.doc_第3页
第3页 / 共7页
曲线数据压缩方法与实现.doc_第4页
第4页 / 共7页
曲线数据压缩方法与实现.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、曲线数据压缩方法与实现【摘要】本文主要讨论了曲线矢量数据的压缩算法,分析将其运用到等高线或其他曲线矢量数据压缩。在 Spliting 算法基础上提出了一种针对无拓扑矢量数据的快速压缩算法,并在 AUTOCAD 中实现该算法过程。【关键词】矢量数据,压缩算法,精确度,等高线 中图分类号:U212.33+2 曲 文献标识码:A 文章编号: 一引言 在计算机自动制图中应用计算机处理已得到的数字化的资料就不能不注重计算机的容量和计算量。因此,就产生了计算机自动制图中的曲线压缩问题。曲线压缩实质上是信息压缩问题,从信息论上讲曲线矢量数据压缩就是从组成曲线的点序集合 A 中抽取一个点序子集。用这个子集作为

2、一个新的信息源,在规定的精度范围内对该子集从内容上尽可能地反映原集合,而于数量上则尽可能精简。 由于各种原因,系统接收的原图数据中,有一些等高线、曲线等线状要素的坐标点非常密集,存在大量冗余点。冗余点不但占用大量存储空间,使曲线上出现许多不应有的微小波动,还给对曲线的编辑带来困难。这有时是不必要的,而且常常造成系统处理受限制。因此,需要利用一定的压缩算法消除冗余点,对数据进行简化,并且在保证精度的前提下使曲线具有原来的轮廓和关系,节约存储空间。 曲线矢量数据压缩是从组成曲线的点序集合 A 中抽取一个点序 A,也就是说 A是 A 中的一部分,不是新的点。而由曲线拟合的方法也可以得到一个逼近的曲线

3、,但拟合出来的曲线不一定通过原来曲线的点,为了避免误差的传递还是用上述方法压缩。 二、曲线压缩方法讨论 对于封闭曲线它是先确定曲线最左边或最右边两点作为起始端点,而对于非封闭曲线可选择两个断点为起始点,如图 1, 图 1 找出两端点之间的曲线上的离散点与两端点的连线的最大距离点,如果该距离值大于给定的精度值,则保留该点,如:2大于精度值则保留 2 点。如果 2小于精度值,则再用分别得到的相邻点 4 作为起始端点重新进行判断以确定下一个要保留的点。依次反复进行直到两直线之间曲线上的点到直线的 距离大于精度值为止。最后,作为端点的末点与曲线的 最后一个端点重合进行判断并保留最后一个端点。 从以上可

4、知,此法可以很大程度上满足即能保留曲线原始的点,能体现曲线的精度不受太大的变化。这在地形图作业上是一个很好的压缩方法。 三、曲线压缩的原理和步骤 曲线数据压缩方法三部分: 把等高线上的离散点提取出来作为待处理的点; 对相邻两点的距离进行比较如果大于距离精度值则保留第二个点;在满足前面条件的情况下对两个端点之间的离散点进行判断如果到两端点的距离大于偏离精确值,则保留该离散点; 对保留的点进行绘图使它成为与原等高线相近的曲线。 3.1 对曲线的离散点进行精度压缩原理 基本思想是去除偏离曲线距离小于规定值 (例如图 0.1mm)的点。假设(图 1)中 1、2、3、4、5、6 为待压缩的曲线上的点。首

5、先保留第一点 1,并以 1 为起点,连接 1、3 两点,若点 2 到连线 13 的垂距 22大于 ,则保留点 2,以点 3 为起点继续计算。若小于 ,则连接 1、4 两点,分别考察 2、3 两点到连线 14 的垂距,若任意一个垂距超过 ,则去掉点 2,以点 3 为起点继续计算;否则,连接 1、5 两点,考察2、3、4 各点到连线 15 的垂距,如此进行下去,直到点 1 与点 i连线时,其间至少有一个点到连线 1i 的垂距超过 ,则去掉2、3,i-2 各点,然后以 i-1 为起点继续计算。重复上述步骤,直到曲线的终点。用这种方法压缩曲线时,在曲线变化平缓的地方,曲线上被压缩掉的点很多,剩下的点间

6、距较大,绘制曲线时点之间会产生多余的摆动。为避免这种情况,压缩过程中可以加入距离条件,即当点的间距超过某一阈值 时必须保留一个点,即使其间各点到连线的垂距均不超限。 3.2 在曲线矢量数据压缩过程中的实现 1 对等高线上的离散点进行提取。 建立一个选择集把提取出的等高线上离散点存入新定义的数组中,其实现程序(见附录) 3.2.2 对数据进行压缩计算。 该算法实际上是一个递归的过程,其实现一直以来也都采用递归的方式,本文通过利用堆和栈的数据结构,提出了该算法的一种非递归实现方法。在算法的实现过程中,用一个数组 D 来存放曲线的样点列 P。 ,P ,P ,用数组的位置索引来指示样点,同时采用了一个

7、与之相配合的队和一个栈,记队尾元素为 n,栈顶元素为 b。具体步骤如下: (1)将曲线起点 D0和终点 Dn的下标分别放入队和栈中,此时,n=0,b=n,。 (2)连接 Dn和 Db,在 Dn和 Db之间的点列中寻找与直线 DnDb具有最大距离的点,记为 Dc,若 Dn与 Db之间没有中间点,转(4)。若之间有最大距离点,利用两点之间的距离公式: 判断 D(n)与D(c)的距离是否大于距离精度值,若大于则保留点 D(c),若小于则转(4) 。(3)判段 Dc到直线 DnDb之间的距离是否小于阈值,利用点到直线公式判断。若否,则将 Dc的下标 c 压入栈中,此时,栈顶元素为c,即 b=c,回到(

8、2)。 (4)判断 b 是否等于 n,,若否,将栈顶元素压入队中,此时,b 出栈,队尾元素为 b ,即 n=b,回到(2)。 (5)将 b 压入队中,队中的元素即为所提取特征点的下标。 (6)以队中元素为下标,从队头到队尾依次取数,组 D 中的点,即为所提取的特征点。 (7)将保留的特征点在图中依次连接起来用不同的颜色显示作为比较。具体实现代码见附录。 3.3 起始点的处理 从上所述可以看出,用上述方法所确定的曲线压缩后的保留点与起始点的选择密切相关,即不同起始点所得到的压缩后的保留点不尽相同。因此,起始点的选择对获取最大压缩比的保留点至关重要。选择那些不引起始点变化而变化的曲线压缩后的保留点

9、为起始点较为合理。对于非闭合曲线,其两端点总是压缩后的保留点。因此对于非闭合曲线可选择该曲线的任一端点作为起始点。而在压缩过程中要不断的存储保留点,并把保留点作为起点,而终点则由起点的变化根据情况来确定。 四实验结果和结论 (2) 根据上述原理对一条等高线进行曲线矢量数据压缩。如图(1)为一条等高线的其中一段,有大量的矢量点组成,利用这条等高线进行矢量数据压缩实验,实验的等高线有 418 个矢量点组成。用本文的方法进行矢量数据压缩,其结果如图(2)所视,压缩后剩余 158 个点,大大压缩的矢量数据。并与原图比较(如图 2)保留了原本的曲线形态。为矢量数据的存储节省了大量的空间,简化曲线的计算量

10、,同时压缩后的数据能够保留曲线的原始精度在一定的范围内。 曲线简化在自动制图综合、应用模型边界简化等方面有着较广泛的应用,但由于曲线形态的复杂性,算法设计仍存在一定困难,主要表现在它的过程、指标和方法难以数量化和模型化。本文的研究为此提供了一种思路和途径,在这些初步工作的基础上,还可以进一步综合考虑曲线压缩。从我个人的实验了来看压缩效果很明显。能够满足等高线的矢量数据压缩,但还存在着一些问题,不足之处请指教。 五结束语 本文介绍了一种常用的矢量曲线数据压缩的算法,该算法在通过距离精度的算法进行压缩的基础上进行偏离精度压缩,最大限度地保留原曲线的特征点减小误差,并有效地压缩了矢量曲线数据地压缩,

11、为系统节省了空间,同时为工作减轻了压力。希望该算法能为 CAD 的矢量曲线数据提供技术支持和帮助。 参考文献 (1)龚有亮,付子傲,翟翊 一种实用的等高线内插算法(信息工程大学 测绘学院,河南 郑州450052 ) (2)翟战强,管华,王双亭一种快速空间矢量数据压缩方法 (北京大学遥感所,北京 10087E52解放军信息工程大学测绘学院,郑州) (3)易辉伟 ,江资斌 ,周翠竹 ,邹岭蝶 地形图矢量化的后处理(中南大学信息物理学院,长沙 410083;2湖南省建筑学校,湘潭 411001) (4)张帆,郑立楷,卢择临,王成煌AutoCAD VBA 二次开发教程(北京.清华大学出版社) (5)张帆,郑立楷,王华杰AutoCAD VBA 开发精彩实例教程(北京.清华大学出版社)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。