应用多线程与Huffman编码压缩SVG矢量空间数据.docVIP

应用多线程与Huffman编码压缩SVG矢量空间数据.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用多线程与Huffman编码压缩SVG矢量空间数据

应用多线程与Huffman编码压缩SVG矢量空间数据   摘要:在分析矢量数据以及SVG的结构特点、多线程和Huffman算法原理的基础上,提出了用多线程和Huffman算法对矢量数据进行压缩的流程,大大缩短了压缩时间。   关键词:多线程;Huffman算法;矢量数据压缩   中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2012)30-7332-03   随着网络GIS快速发展,需要传输的空间数据量急剧增长,而网络带宽的提速相对滞后。因此,为了提高网络GIS效率,对空间数据的压缩技术的研究越来越受到重视。   对数据的压缩分为无损压缩和有损压缩,常见的无损压缩方法有Huffman编码和LZW等,这些无损压缩方法同样适用于对空间数据的压缩。本文提出综合应用多线程和Huffman编码压缩空间矢量数据以提高压缩效率,减少压缩时间。   1 矢量数据结构及其特点   矢量数据通常由两种数据模型表示:拓扑数据结构和简单数据结构(又称无拓扑数据结构)。其中简单数据结构通过点、线、面来表示地理实体,而地理实体坐标用其边界的坐标的X和Y值来表示。点由一个(X,Y)表示;线由多个(X,Y)排列在一起表示;面则由闭合的一系列(X,Y)表示。每个地理实体自成一体,各自维护自己的坐标和属性信息,没有相邻或相离等拓扑信息[1]。比如SVG格式的空间矢量数据等。   2 多线程原理   计算机中运行的程序称为进程,每个进程都有独立的一块内存空间和一组系统资源。而一个进程可以有多个线程同时执行。线程是进程的最小执行单元。多线程之间相互独立,各自完成自己的任务,可有效提高进程的执行速度。   在 Java 中,有两种创建线程的方法[2]:   第一种是通过继承classThread实现多线程   classThread中有两个最重要的函数run()和start()。其中run()函数必须把要在多个线程中并行处理的代码放入其中。通过调用start()函数来调用run()函数。在调用start()的时候,start()函数会首先进行与多线程相关的初始化(这也是为什么不能直接调用run()函数的原因),然后再调用run()函数。   第二种是通过实现 Runnable 接口的类来实现。   如果有一个类,它已继承了某个类,又想实现多线程,那就可以通过实现Runnable接口来实现。Runnable接口只有一个run()函数。把一个实现了Runnable接口的对象作为参数产生一个Thread对象,再调用Thread对象的start()函数就可执行并行操作。如果在产生一个Thread对象时以一个Runnable接口的实现类的对象作为参数,那么在调用start()函数时,start()会调用Runnable接口的实现类中的run()函数。   3 Huffman编码压缩思想   霍夫曼(Huffman)编码是1952年为文本文件而建立,是一种统计编码。属于无损压缩编码。霍夫曼编码的码长是变化的,对于出现频率高的信息,编码的长度较短;而对于出现频率低的信息,编码长度较长。这样,处理全部信息的总码长一定小于实际信息的符号长度。   构造Huffman编码的算法:   1)将需压缩文件的字符按照出现频率递减的顺序排列。假设每个字符出现的频率作为权重值 wi(i=1,2……n),将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);   2)在森林中选出两个根结点的权重值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权重值为其左、右子树根结点权重值之和。在合并运算时,权重值大的字符用编码0表示,权重值小的符号用编码1表示;   3)从森林中删除刚被选取的两棵树,并将新树加入森林;   4)重复2)、3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树;   5)每个字符的Huffman编码就是从根节点到该字符节点路径上的0、1序列。   4 应用多线程和Huffman编码压缩SVG矢量空间数据   4.1 可行性分析   1)SVG与地图。   SVG能为地图提供标准的矢量方法,而不是特定的插件或Javaapplet等,同时提供高   质量的图形和很强的交互功能。地图符号可以由SVG的形状元素进行描述;注记由SVG的文本元素表示;图层由SVG的组元素表示【3】(图1)。   2)SVG的特点   SVG(可缩放矢量图形,Scalable Vector Graphics)是基于可扩展标记语言(XML)的,用于描述二维矢量图形的一种图形格式;它采用文本格式描述图形对象;SVG完全支持DOM (Document Object Model,文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。DO

您可能关注的文档

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档