CN102591869A - 一种高性能的gml多文档流压缩信息处理方法 - Google Patents
一种高性能的gml多文档流压缩信息处理方法 Download PDFInfo
- Publication number
- CN102591869A CN102591869A CN2011100040679A CN201110004067A CN102591869A CN 102591869 A CN102591869 A CN 102591869A CN 2011100040679 A CN2011100040679 A CN 2011100040679A CN 201110004067 A CN201110004067 A CN 201110004067A CN 102591869 A CN102591869 A CN 102591869A
- Authority
- CN
- China
- Prior art keywords
- data
- document
- gml
- compression
- container
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种高性能的GML多文档流压缩信息处理方法,包括以下步骤:1)输入设备输入GML多文档数据给GML文件解析器;2)GML文件解析器利用SAX对多文档数据进行解析;3)事件处理模块将多文档数据中的结构信息数据经过动态结构压缩算法压缩后存入结构容器中,将多文档数据中的空间坐标数据经过空间坐标增量压缩算法压缩后存入空间坐标容器中,将多文档数据中的属性数据、文本值数据、当前文件信息数据分别存储到属性容器、文本容器、文件信息容器中;4)所有容器中的数据通过通用文本压缩工具Gzip作为后台压缩工具进行压缩,最终得到此文件集合的单独压缩文件。与现有技术相比,本发明具有更高压缩率、更低压缩时间和解压缩时间、使用方便等优点。
Description
技术领域
本发明涉及一种压缩信息处理方法,尤其是涉及一种高性能的GML多文档流压缩信息处理方法。
背景技术
随着GIS(Geography Information Systems)技术的不断完善和GIS应用的不断推广和流行,近年来其已成为越来越多的空间地理信息系统的支撑平台。随着Internet的迅速发展和Web的广泛使用,GIS已经由专业人员使用的集中式系统逐步向分布式、网络化的海量信息系统演变。要使得人们可以利用手机或其它移动个人设备在任何时间、任何地点访问任何空间信息。
但是现有空间信息处理方法与技术还面临着不少挑战。由于现有的GIS系统多是孤立的系统,所以越来越多的异构空间数据迅速出现。为了增强不同空间数据集和GIS应用之间的数据共享和交互性,OGC(Open Geospatial Consortium)提出了GML(Geography Makeup Language)语言,用其来提供统一数据格式和表示空间数据的框架。现在GML语言已经成为了空间数据交换的标准,从1.0到3.2.1,GML的规范不断完善,在Oracle、SQL Server等主流数据库以及ESRI等重要GIS软件厂商的广泛支持下,GML已成为事实上的地理数据编码的国际标准。
虽然GML是在网络上应用非常灵活和易于扩展、与编程语言和运行平台无关的空间信息表达与交换标准语言,这就为空间信息的集成与共享以及实现GIS互操作提供了一种潜在的简单、灵活的技术途径。但是GML文档中由于包含了很多的冗余信息,它的冗余主要来自1)那些大量表示结构信息的重复标签、描述地物特征的各种属性及属性值等。一般来说GML文档越来越大,文档内部冗余信息也越来越多,这就增加了GML在Web上数据处理、数据存储和数据交换的代价。2)GML文档中含有大量的浮点坐标数据、空间关系拓扑数据和时间序列数据。由于地理定位的精度要求比较高,浮点坐标数据的数值一般精确到小数点后6~8位,时间序列数据也精确到秒,而这些时间和空间数据都被当作一个文本串存储在GML文档中,这样就非常浪费存储空间,而且会造成传输和存储要付出大量的代价。
在移动GIS场景中(例如GPS,移动信息空间站等),在这些场景中客户端(例如iPAD,iPhone或者移动电话)都有非常有限的存储空间以及交换带宽,这样对于这些应用程序的成功运行的最主要因素就是减少存储和传输空间。因此能够提出一种和有效压缩GML文件的方法来减少GML文件的存储和传输。但是现在的研究都主要集中在GML数据的查询数据优化方面,对于GML文档压缩,现在的关注度还不太够。
由于GML是XML语言的一种应用,所以GML文档通常是文本形式的,它也是一种特殊的XML文档,包含结构和数据的混合文本。从技术上来说,我们可以通过三种方式来压缩GML文档:1)通用文本压缩工具,例如Gzip,PPM,Bzip2等;2)XML压缩器,例如XMill,XGrind、XMLPPM、XWRT、Rngzip等;3)GML压缩器,例如GPress等。
像XMLPPM,Millau,XSC这一类XML压缩算法没有考虑到GML文档的独特性,而像Gpress这样的GML压缩器是对于单一文档进行工作的,也就是说它们在压缩GML文件集合时需要独立顺序压缩集合中的每一个GML文件,对于文档与文档之间的信息没有得到充分地利用,每一个文档中信息的收集和利用都是局限在单独文档中,所以当压缩GML文档集合时,不会有很好的压缩效果。这也是我们要解决的主要问题之一。
由于GML文档在网络上传播都是以数据流的形式进行的,而且数据流在传输的过程当中有以下几个特点,包括:
1)无论是数据流的压缩端或是解压缩端,系统中都无法存储数据流的全部数据,所以在压缩过程中只能缓存部分数据,而且数据流中的数据是随着时间的推移而增加的,所以压缩方法必须能够快速地处理数据流;
2)压缩算法无须对数据进行整体地二次扫描,这就要求压缩方法必须能够充分利用GML文档的信息。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种更高压缩率、更低压缩时间和解压缩时间、使用方便的高性能的GML多文档流压缩信息处理方法。
本发明的目的可以通过以下技术方案来实现:
一种高性能的GML多文档流压缩信息处理方法,其特征在于,包括以下步骤:
1)输入设备输入GML多文档数据给GML文件解析器;
2)GML文件解析器利用SAX对多文档数据进行解析,并将解析后的多文档数据发送给事件处理模块;
3)事件处理模块将多文档数据中的结构信息数据经过动态结构压缩算法压缩后存入结构容器中,将多文档数据中的空间坐标数据经过空间坐标增量压缩算法压缩后存入空间坐标容器中,将多文档数据中的属性数据、文本值数据、当前文件信息数据分别存储到属性容器、文本容器、文件信息容器中;
4)所有容器中的数据通过通用文本压缩工具Gzip作为后台压缩工具进行压缩,最终得到此文件集合的单独压缩文件。
所述的GML文件解析器利用SAX对多文档数据进行解析过程为:
将多文档数据分割为结构信息数据、空间坐标数据、属性数据、文本值数据、当前文件信息数据。
所述的动态结构压缩算法为:
初始化公共字典,在读取标签的过程中如果读取的标签没有在字典中出现过,那么就将它放入字典,并将标签值放入结构容器中;如果此标签出现过,则将它在公共字典中的索引值放入结构容器中,然后利用缓存来存储这个标签,继续读取下一个标签,直到缓存中的标签组合不存在于字典中时,将这些值放入结构容器中。
与现有技术相比,本发明具有以下优点:
1、对于压缩GML文档集合来说具有更高压缩率、更低压缩时间和解压缩时间、使用方便。
2、对于压缩GML文档集合流来说,可以做到边压缩边解压缩来提高GML数据流的网络传输效率。
附图说明
图1为本发明的数据流结构框图;
图2为本发明的空间坐标增量压缩算法示意图;
图3为各种压缩器压缩率比较图;
图4为各种压缩器压缩时间比较图;
图5为各种压缩器解压缩时间比较图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,一种高性能的GML多文档流压缩信息处理方法,包括以下步骤:
1)输入设备输入GML多文档数据给GML文件解析器;
2)GML文件解析器利用SAX对多文档数据进行解析,并将解析后的多文档数据发送给事件处理模块;
3)事件处理模块将多文档数据中的结构信息数据经过动态结构压缩算法压缩后存入结构容器中,将多文档数据中的空间坐标数据经过空间坐标增量压缩算法压缩后存入空间坐标容器中,将多文档数据中的属性数据、文本值数据、当前文件信息数据分别存储到属性容器、文本容器、文件信息容器中;
4)所有容器中的数据通过通用文本压缩工具Gzip作为后台压缩工具进行压缩,最终得到此文件集合的单独压缩文件。
一、事件处理模块
可以看出GML符合XML规范,而且符合相同模式的文件之间的相同标签很多;同时文档中也包含了大量表示空间数据的坐标,由于每一个空间物体都需要很多坐标组合才能完整表示,所以相邻坐标数值之间的差别不大,这些特点都可以从图中看出。
我们利用SAX来解析GML文档集合,它解析文档时会产生相应的事件序列。对于文档集合的每一个正在解析的文件来说,如果此时事件是文档开始标签或者结束标签,将它的元素名发送到结构预处理中处理,后放入结构容器中,这其中包括如果元素名是坐标数据开始标签时,我们把在这个标签下的文坐标先进行坐标增量处理,然后放入数据容器中;如果事件是文本或者属性时,就将其值放入文本容器或者属性容器中。
如果此时是文件结束的事件,本发明会将文件名写入压缩文件,这样可以保证解压缩后的文件和原文件信息完全相同。
事件处理模块的具体代码如下:
INPUT:SAX event stream//输入是SAX事件流
OUTPUT:different sub-streams//输出是不同的子数据流
Begin
While SAX event stream is not null do//当没有结束文件读取时
IF SAX-event is StartElement then//如果是开始标签
name:=GetElementName
send name to the structure sub-stream
IF name is a coordinate element then//如果是空间数据标签
value:=GetTextValue
send the value to the spatial data sub-stream
END IF
IF the element has an attribute then //如果是属性值标签
send the attribute′s value to the attribute sub-stream
END IF
ELSE IF SAX-event is EndElement then //如果是结束标签
send its name to the structure sub-stream
ELSE IF SAX-event is PCDATA then //如果是普通文本数据
send its value to the text sub-stream
ELSE IF SAX-event is end-file event then//如果是文件信息数据
send filename to the file information sub-stream
END IF
END WHILE
二、动态压缩结构信息
由于单一GML文档中包含了大量的重复标签,对于同一模式下的文档来说,文档之间的标签重复出现的概率也很大,这样我们可以建立一个动态公共字典,用来存储这些文档中出现的标签,在多文档压缩过程中遇到此类标签时,就利用字典中相应的索引代替它来达到压缩的目的。实验证明,这可以达到很好的压缩效果。
下面算法表示了动态压缩结构标签的过程。我们先初始化公共字典,在读取标签的过程中如果读取的标签没有在字典中出现过,那么就将它放入字典,将标签值放入容器中;如果此标签出现过,则将它在公共字典中的索引值放入容器中,然后利用缓存来存储这个标签,继续读取下一个标签,直到缓存中的标签组合不存在于字典中时,将这些值放入容器中。
这种动态做法的操作粒度是在标签上的,而不是基于字符的操作,所以它可以最大化每一个字典条目的代表性来提高压缩性能。对于GML文档集合序列,文档1中新加入的部分词条是“<gml:surfaceMember>”和“<gml:Polygon>”,在解析文档2时字典中的词条已存在“<gml:surfaceMember><gml:Polygon>”,对于文档后出现的相同的标签组合进行最替换。
Input:GML structure sub-stream//输入是GML结构数据流
Output:compressed GML structure sub-stream//输出是压缩后的GML结构数据流
Begin
Initialize dic,buffer,tag:=null
WHILE GML structure sub-stream is not null do
WHILE tag:=Readtag()is not null do
IF dic contains tag is false then//如果tag没有出现过
IF buffer is not empty then//如果这时候缓存中有数据
output the index of the whole word in the buffer in the dic
//先将缓存中的数据写入数据流
END IF
output tag.value into the stream//将tag的值写入数据流
put tag into dic//将tag写入字典
ELSE
IF dic contains(buffer.concat(tag))then//如果字典中含有缓存中的数据和tag的结合字
buffer.append(tag)//将tag和缓存中的数字结合
continue
ELSE
output index of the whole word in the buffer in the dic into the stream
//将缓存中剩下的字符数据写入数据流中
buffer.clear()
buffer.append(tag)//将tag写入缓存中
continue
END IF
output index of the whole word in the buffer in the dic into the stream
//将缓存中的所有字写入数据流中
buffer.clear()
END IF
output index of the whole word left in the buffer in the dic into the stream
//将缓存中剩下的所有字写入数据流中
buffer.clear()
END WHILE
END WHILE
三、空间坐标增量压缩
由于在GML 2.0到3.0规范中已规定了存储坐标数据的特定标签名,比如<gml:X>,<gml:Y>,<gml:pos>,<gml:posList>等。但是在这些标签下的数据格式有很大不同,比如<gml:X>,<gml:Y>,<gml:pos>下存储的都是单一坐标,在<gml:posList>下存储的坐标是二维或三维坐标集合。
在GML文档中表征一个空间物体的地理信息需要大量的二维或三维坐标集合,这样在清楚表示这个空间物体的同时也使得文档中储存了大量的数据。由于这些坐标是顺序按照空间物体的表面排列的,我们发现坐标集合在一定区间内存在单调性,并且相邻坐标之间的差值很小,所以我们存储差值占用的空间会比直接存储这些坐标小很多。
在这里我们发现此差值主要体现在相邻坐标之间的整数值之间,但是小数值之间相差很大,并且没有规律可以发掘,所以我们采取的策略是存储相邻坐标整数值之间的差值;对于坐标的小数部分则存储原值,由于在GML文档中所有坐标数据都以文本值存储,由于坐标数据的高精度性,小数位数很多,每一位小数的存储都要占用1个字节,如果将小数值转化为二进制存储的话,则只需要4个字节(Int32类型)或者8个字节(Int64类型),这样可以节省很多空间。
本发明采取将文档集合中的所有坐标数据经过增量处理后存入坐标容器中,它先解析不同标签下的坐标数据,将它们映射到三维数组中,对于相邻坐标的整数值进行增量压缩后存储差值到坐标容器中,对于小数值利用Int32类型存储到坐标容器中,这样在最大程度上减小存储空间。这一过程如图2所示。
四、对于其它文本数据流的压缩算法
由于每一个标签下的数据之间差别很大,所以我们不采用任何方法来进行处理,只利用最终的Gzip压缩算法来压缩这些数据。
五、性能对比测试
验证本发明在多文件条件下的压缩性能,我们的实验是在一台CPU为2.6GHz,2GB内存的电脑上测试的。在实验过程中,我们将压缩效果从压缩率,压缩时间和解压缩时间这三个衡量指标上进行了比较,
压缩率CR(Compression Ratio):我们采用下面的公式计算压缩器的压缩率:
通过上式可以看出,压缩率越低的压缩器压缩能力越强。
压缩时间和解压缩时间:当压缩时间和解压缩时间长时,压缩器的压缩效率和解压缩效率越低。
根据Sherif文章中所得到的实验结果,我们选择了压缩率比较低的两个XML压缩器XMill和XMLPPM,以及压缩时间比较少的文本压缩器Gzip,通过实验比较本发明和这几个压缩器在上两个指标上的差别。
由于其它几个压缩器都是基于单独文档的,当他们顺序压缩所有的文件的压缩过程结束时,要使用新的公式来计算它们的平均压缩率
对于压缩时间和解压缩时间的计算也采用将顺序压缩所有文件的压缩时间和解压缩时间求和的方法计算。
我们选择了比较流行的几个数据集来进行实验,分别是CityGML数据集,ALKISATKIS数据集,以及通过其它格式的数据转化到Oracle Spatial中的数据。表1表示了这些数据的详细信息,包括文件集合中的长度,标签个数,标签和坐标数据所占的比例。在实验的过程中我们将每一组数据分别压缩来进行比较。
表1实验数据详细信息
1、压缩率比较
从图3中可以看出,本发明在多文档压缩的环境下的压缩率是最低的,因为它利用了文档之间的关系,而且对于空间坐标部分利用增量压缩的方法可以达到很好的压缩效果;XMill和XMLPPM对于通用XML文本来说的压缩效果是很好的,但是由于GML文档的特殊性以及GML文档之间的关联程度,所以它的压缩效果并没有比本发明好;Gzip是通用的文本压缩器,它适合于任何文本,利用霍夫曼编码以及LZ77方法来进行信息统计后压缩,实验证明它没有考虑到GML文档的特点,所以它的压缩率不是最好的。
2、压缩时间和解压缩时间比较
通过图4和图5我们可以看出,XMLPPM具有最长的压缩时间和解压缩时间,因为XMLPPM利用了PPM压缩器作为后台压缩工具,它利用计算概率值对信息进行预测;Gzip具有最少的压缩时间和解压缩时间,因为它采用容量为32KB的滑动窗口进行压缩,切换速度是很快的;XMill由于在计算过程中的复杂程度比本发明要小很多,所以压缩时间和解压缩时间比后者少;本发明由于要进行增量压缩,所以时间要比XMill略长。
Claims (3)
1.一种高性能的GML多文档流压缩信息处理方法,其特征在于,包括以下步骤:
1)输入设备输入GML多文档数据给GML文件解析器;
2)GML文件解析器利用SAX对多文档数据进行解析,并将解析后的多文档数据发送给事件处理模块;
3)事件处理模块将多文档数据中的结构信息数据经过动态结构压缩算法压缩后存入结构容器中,将多文档数据中的空间坐标数据经过空间坐标增量压缩算法压缩后存入空间坐标容器中,将多文档数据中的属性数据、文本值数据、当前文件信息数据分别存储到属性容器、文本容器、文件信息容器中;
4)所有容器中的数据通过通用文本压缩工具Gzip作为后台压缩工具进行压缩,最终得到此文件集合的单独压缩文件。
2.根据权利要求1所述的一种高性能的GML多文档流压缩信息处理方法,其特征在于,所述的GML文件解析器利用SAX对多文档数据进行解析过程为:
将多文档数据分割为结构信息数据、空间坐标数据、属性数据、文本值数据、当前文件信息数据。
3.根据权利要求1所述的一种高性能的GML多文档流压缩信息处理方法,其特征在于,所述的动态结构压缩算法为:
初始化公共字典,在读取标签的过程中如果读取的标签没有在字典中出现过,那么就将它放入字典,并将标签值放入结构容器中;如果此标签出现过,则将它在公共字典中的索引值放入结构容器中,然后利用缓存来存储这个标签,继续读取下一个标签,直到缓存中的标签组合不存在于字典中时,将这些值放入结构容器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100040679A CN102591869A (zh) | 2011-01-10 | 2011-01-10 | 一种高性能的gml多文档流压缩信息处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100040679A CN102591869A (zh) | 2011-01-10 | 2011-01-10 | 一种高性能的gml多文档流压缩信息处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102591869A true CN102591869A (zh) | 2012-07-18 |
Family
ID=46480538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100040679A Pending CN102591869A (zh) | 2011-01-10 | 2011-01-10 | 一种高性能的gml多文档流压缩信息处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102591869A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108370385A (zh) * | 2015-11-13 | 2018-08-03 | 微软技术许可有限责任公司 | 通过网络传输容器文件 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101847998A (zh) * | 2010-04-15 | 2010-09-29 | 同济大学 | 一种高性能gml流压缩方法 |
CN101877005A (zh) * | 2010-04-15 | 2010-11-03 | 同济大学 | 一种基于文档模式的gml压缩方法 |
-
2011
- 2011-01-10 CN CN2011100040679A patent/CN102591869A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101847998A (zh) * | 2010-04-15 | 2010-09-29 | 同济大学 | 一种高性能gml流压缩方法 |
CN101877005A (zh) * | 2010-04-15 | 2010-11-03 | 同济大学 | 一种基于文档模式的gml压缩方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108370385A (zh) * | 2015-11-13 | 2018-08-03 | 微软技术许可有限责任公司 | 通过网络传输容器文件 |
CN108370385B (zh) * | 2015-11-13 | 2021-06-15 | 微软技术许可有限责任公司 | 通过网络传输容器文件的系统、方法和计算机可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7668386B2 (en) | Lossless compression algorithms for spatial data | |
CN101346689A (zh) | 压缩模式表示对象和用于元数据处理的方法 | |
CN102024047B (zh) | 数据检索方法及装置 | |
CN104040542A (zh) | 用于在易失性存储器内保持关系型数据的列向量的技术 | |
CN104283567A (zh) | 一种名称数据的压缩、解压缩方法及设备 | |
Yang et al. | A novel representation and compression for queries on trajectories in road networks | |
CN101847998A (zh) | 一种高性能gml流压缩方法 | |
CN1924854B (zh) | 智能移动终端的桌面搜索方法 | |
CN101751440A (zh) | 一种数据压缩/解压缩方法及其装置 | |
Price et al. | HDFITS: Porting the FITS data model to HDF5 | |
US6600432B2 (en) | Variable length encoding and decoding of ascending numerical sequences | |
US9602129B2 (en) | Compactly storing geodetic points | |
CN101469989B (zh) | 一种手机网络导航中导航数据的压缩方法 | |
EP3387647A1 (en) | Reduction of audio data and data stored on a block processing storage system | |
CN101877005B (zh) | 一种基于文档模式的gml压缩方法 | |
CN102591869A (zh) | 一种高性能的gml多文档流压缩信息处理方法 | |
Chen et al. | Sorting local descriptors for lowbit rate mobile visual search | |
CN104021121A (zh) | 一种文本数据压缩方法、装置及服务器 | |
CN105631000B (zh) | 基于移动终端位置特征信息的终端缓存的数据压缩方法 | |
CN103975593A (zh) | 基于三维模型压缩而生成重复性结构发现的比特流的方法和设备 | |
Zhao et al. | Integrated compression of vehicle spatio‐temporal trajectories under the road stroke network constraint | |
Ramsey | LIDAR in PostgreSQL with PointCloud | |
CN104899311A (zh) | WebGIS矢量数据高效传输方法 | |
Yu et al. | A GML documents stream compressor | |
Guan et al. | An effective GML documents compressor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120718 |