CN112214461A - 一种遥感元数据的模糊xml压缩方法 - Google Patents

一种遥感元数据的模糊xml压缩方法 Download PDF

Info

Publication number
CN112214461A
CN112214461A CN202011086120.XA CN202011086120A CN112214461A CN 112214461 A CN112214461 A CN 112214461A CN 202011086120 A CN202011086120 A CN 202011086120A CN 112214461 A CN112214461 A CN 112214461A
Authority
CN
China
Prior art keywords
node
xml
variable
nodes
fuzzy
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.)
Granted
Application number
CN202011086120.XA
Other languages
English (en)
Other versions
CN112214461B (zh
Inventor
丁文珂
陈万
鲍立杰
韩道军
姬毅飞
沈亚田
许涛
沈夏炯
张磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Henan University
Original Assignee
Henan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Henan University filed Critical Henan University
Priority to CN202011086120.XA priority Critical patent/CN112214461B/zh
Publication of CN112214461A publication Critical patent/CN112214461A/zh
Application granted granted Critical
Publication of CN112214461B publication Critical patent/CN112214461B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/81Indexing, e.g. XML tags; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种遥感元数据的模糊XML压缩方法,包括以下步骤:A:取模糊XML文档,并以变量形式保存模糊XML文档的路径;B:获取模糊XML文件中所有结点的结点信息并以Map类型变量存储,将模糊XML文件由XML类型转化为Map类型;C:将步骤B中得到的所有结点的结点信息转化为XML类型,再根据写入结点的位置写入结点,并更新写入结点的结点编码,最终将步骤B中得到的Map类型的模糊XML文件转化为XML类型;D:输出压缩后的模糊XML文档。本发明通过对模糊XML文档中的重复标签和属性使用短字节进行编码,极大地提高了压缩率,减小了存储空间,极大地提高了对计算机存储空间的利用率。

Description

一种遥感元数据的模糊XML压缩方法
技术领域
本发明涉及一种文件压缩方法,尤其涉及一种遥感元数据的模糊XML压缩方法。
背景技术
遥感影像(Remote Sensing Image)是指记录各种地物电磁波大小的胶片或照片,主要分为航空像片和卫星相片。由于可扩展标记语言即XML具有可扩展性、结构化、规范性和简洁性等特点,因此遥感影像元数据一般采用XML数据进行表达。在遥感影像元数据具有不确定性的背景下,传统的XML数据已经不能够充分的表达元数据中存在不确定性的问题,所以在实际应用中一般使用含有模糊结构体和可能性分布的模糊XML文档来描述遥感影像元数据中存在的不确定性。
由于遥感元数据具有体量大且信息丰富的特点以及XML自身数据冗余的特点,与同样的数据相比,XML类型的数据会比其他类型的数据占据更多的存储空间,因而,对于XML数据的压缩就成为研究者的研究热点。
目前的遥感信息处理系统往往采用压缩技术以减少存储和传输开销,但是对遥感元数据需要解压以后才能进行,这带来了额外的性能开销。传统的XML文档压缩方法都是针对精确的XML文档进行压缩,而不能够对模糊的XML文档进行有效的压缩。研究不需要解压的模糊XML文档算法就显得十分的迫切。因此遥感元数据的模糊XML文档的压缩是一个亟待解决的问题。
发明内容
本发明的目的是提供一种遥感元数据的模糊XML压缩方法,通过对模糊XML文档中的重复标签和属性使用短字节进行编码,极大地提高了压缩率,减小了存储空间,极大地提高了对计算机存储空间的利用率。
本发明采用下述技术方案:
一种遥感元数据的模糊XML压缩方法,包括以下步骤:
A:读取模糊XML文档,并以变量形式保存模糊XML文档的路径;
B:获取模糊XML文件中所有结点的结点信息并以Map类型变量存储,将模糊XML文件由XML类型转化为Map类型;
C:将步骤B中得到的所有结点的结点信息转化为XML类型,再根据写入结点的位置写入结点,并更新写入结点的结点编码,最终将步骤B中得到的Map类型的模糊XML文件转化为XML类型;
D:输出压缩后的模糊XML文档。
所述的步骤A中,将模糊XML文档的路径以变量filepath进行保存,filepath为自定义的变量名称。
所述的步骤B包括以下具体步骤:
B1:首先创建一个LinkedHashMap集合,以结点先序遍历的顺序来存储模糊XML文档的树形结构,并使用map_finall变量保存;然后创建一个file对象,file对象读入步骤A中得到的filepath变量,从而获取到模糊XML文件的信息;再使用解析器SAXReader()读入file对象将模糊XML文件解析为doc1变量,doc1变量类型为Document对象类型;
B2:首先通过getRootElement()方法获取doc1变量的根结点,并将根结点用rootElement变量保存;然后判断根结点是否含有子结点,若不含有子结点,则直接通过getNum()方法和getText()方法获取到根结点的结点信息,然后将得到的根结点的结点信息封装到map_finall变量中,并跳转到步骤B4;若含有子结点,则进入步骤B3;结点信息包括结点编号信息和结点属性信息;
B3:通过根结点调用递归方法recursion()获取到所有结点的结点信息;
B4:将集合map_finall以变量map另存,实现模糊XML文件由XML类型转化为Map类型。
所述的步骤B3包括以下具体步骤:
首先定义一个flag标志变量,表示结点是否含有子结点;然后创建两个LinkedHashMap集合,分别定义为集合map_this和集合map_children,集合map_this存储本层所有结点的结点信息,map_children存储本层所有结点的所有子结点的结点信息;其中,flag为自定义的标志变量名称,集合map_this和集合map_children为自定义的集合名称;
其次,创建结点迭代器iterator对结点是否含有子结点进行判断,迭代器的初始值为根结点,然后通过iterator.hasNext()依次获取到根结点的所有子结点,再依次判断所有的子结点是否还存在子结点;flag变量的初始值为1,然后通过iterator.hasNext()所获取到的下一个结点的信息对flag变量进行赋值;
在对结点是否含有子结点进行判断时:
(1)如果flag=0,则说明该结点的所有首层子结点均有次层子结点,然后通过iterator.next()方法获取到所有的首层子结点,并依次对所有的首层子结点进行递归操作,继续判断每个首层子结点是否存在次层子结点;
(2)如果flag=1,则说明该结点的所有首层子结点均无次层子结点,则直接将该结点的结点信息封装到map_this变量中;
(3)如果flag=2,则说明该结点的部分首层子结点存在次层子结点,部分首层子结点不存在次层子结点;然后,对于所有不存在次层子结点的首层子结点,将首层子结点的结点信息直接封装在集合map_this中;对于存在次层子结点的首层子结点则进行递归操作,并将获取到的次层子结点的结点信息直接封装在集合map_this中;
最后,通过map_finall.put()方法将获取到的集合map_this所储存的所有的结点信息转存到集合map_finall中。
所述的步骤C包括以下具体步骤:
C1:首先创建一个Map类型的集合rootMap,存储结点信息,然后通过map.get(parentNum)方法将集合rootMap的初始值赋值为根结点的结点信息;再创建一个Document对象定义为doc2变量,用于获取变量map中结点的结点信息,同时将doc2变量的编码格式设置为“utf-8”格式,再通过addElement(parentNum)方法依次向doc2变量中加入结点;其中,rootMap为自定义的集合名称,map.get(parentNum)为现有的获取根结点的结点信息的方法,addElement(parentNum)为现有的加入根结点的方法;
C2:通过getRootElement()方法获取到根结点,从根结点调用iterator()方法开始迭代,获取到所有结点的结点信息,并以String类型的变量xml保存;其中,iterator()方法为现有的集合迭代方法,xml为自定义的储存所有结点信息的变量名称;
C3:对迭代后获得的变量xml进行格式化;首先创建一个String类型的变量requestXML用于储存格式化后的变量xml,创建一个对象writer,对象writer为XMLWriter类型,对Map类型的模糊XML文件中的结点进行写入;requestXML为自定义的变量名称,writer为自定义的写入对象名称;
C4:创建Document对象定义为document变量,用于暂存中间文档,创建解析器reader用于解析读入变量xml,解析器reader为SAXReader解析器;然后通过解析器reader与StringReader(xml)方法对变量xml进行解析,并将解析后的xml以变量document临时储存;然后创建一个变量stringWriter用于变量xml的字符串流写入,变量stringWriter为StringWriter对象,创建变量format用于规定转化后模糊XML文档的格式,变量format为OutputFormat对象,其中规定的格式包括每一级结点前设置空格缩进、变量xml声明和内容之间不添加空行、添加变量xml头部声明、设置编码格式为“GB2312”以及设置分行;变量document为自定义的变量名称,reader为自定义的解析器名称;StringReader(xml)方法为现有的以字符串流读取XML文档的方法,stringWriter为自定义的以字符串流写入对象名称,format为自定义的文档格式变量名称;
C5:通过xml.StandaloneWriter(stringWriter,format)方法将变量xml逐步写入到对象writer中,最终得到更新后的对象writer;其中,xml.StandaloneWriter(stringWriter,format)方法为现有的以字符串流写入的方法;
C6:将更新后的对象writer通过getBuffer()方法和toString()方法,以字符串流的形式储存到最终的变量requestXML中,所获得的变量requestXML即为转化后的模糊XML文档,即压缩后的模糊XML文档。
所述的步骤C5中,将结点的编码设置为<NodeNum,PathName,PathPosition,poss>,其中NodeNum为结点在文档树中先序遍历的编号;PathName为结点的路径名称;PathPosition为结点的路径序号;poss为结点的模糊度;
结点的写入包含结点的新增、删除和修改;在将变量xml逐步写入到对象writer过程中,首先判断结点的写入是结点的新增、删除或修改,若结点的写入是结点的删除或修改,则直接进行结点的删除或修改;若结点的写入是结点的新增,则分为两种情况进行操作:1:若对象writer中没有任何结点,设新增结点为结点v,则直接将新增的结点v写入对象writer中;2:若对象writer中已存在一个或多个结点,则设对象writer中最近写入的结点为结点u,新增结点为结点v,然后进行结点u和结点v关系的判断,以确定新增的v结点的位置:
若结点u是结点v的父结点,则将结点v直接写入到结点u的下一个位置;
若结点v是结点u的父结点,则将结点v写入到结点u的上一个位置;
若结点v是结点u的兄弟结点,设结点p为结点v和结点u的父结点,结点q是与结点p同一层的结点,则将结点v写入到结点p的前两个位置;
在确定新增的结点v的位置后,对结点v的编码进行修改,将新增的结点v的结点编号通过对象writer中最近写入的结点u的“NodeNum”进行自增,然后再将结点v的信息写入对象writer中。
在进行结点u和结点v关系的判断时,定义结点u的编码为<f1,n1+node1+"/",p1,poss>,结点v的编码为<f2,n2+node2+"/",p2,poss>,则有:
(1)结点u所在层次为“/”的个数;
(2)若f1≠f2,n1+node1+"/"=n2,且p1=p2,则结点u是结点v的父结点;
(3)若f1≠f2,n2+node2+"/"=n1,且p1=p2,则结点v是结点u的父结点;
(4)若f1≠f2,n1+node1+"/"=n2+node2+"/",且p1=p2,则结点v是结点u的兄弟结点。
本发明考虑到实际应用场景中遥感元数据的不确定性,通过用模糊XML文档来代替传统的精确的XML文档来描述遥感元数据。在写入结点时,通过LinkedHashMap保证写入结点编号及位置信息的唯一性,从而保证了写入结点编码的唯一性,而且对模糊XML文档中的重复标签和属性使用短字节进行编码,极大地提高了压缩率,减小了存储空间,极大地提高了对计算机存储空间的利用率。
附图说明
图1为本发明的流程示意图;
图2为本发明所述压缩方法与现有XQzip、XBzip、ZCQ和XPATH压缩算法的压缩对比示意图。
具体实施方式
以下结合附图和实施例对本发明作以详细的描述:
如图1所示,本发明所述的遥感元数据的模糊XML压缩方法,包括以下步骤:
A:读取模糊XML文档,并以变量形式保存模糊XML文档的路径;在本实施例中,将模糊XML文档的路径以变量filepath进行保存,filepath为自定义的变量名称;
B:获取模糊XML文件中所有结点的结点信息并以Map类型变量存储,将模糊XML文件由XML类型转化为Map类型;
所述的步骤B包括以下具体步骤:
B1:首先创建一个LinkedHashMap集合,用于以结点先序遍历的顺序来存储模糊XML文档的树形结构,以保证结点的转化顺序,并使用map_finall变量保存;然后创建一个file对象,file对象读入步骤A中得到的filepath变量,从而获取到模糊XML文件的信息;再使用解析器SAXReader()读入file对象将模糊XML文件解析为doc1变量,doc1变量类型为Document对象类型,封装成Document对象有利于获取根结点信息;
其中,map_finall为自定义的集合名称,SAXReader为现有解析器,doc1为自定义的变量名称;
B2:首先通过getRootElement()方法获取doc1变量的根结点,并将根结点用rootElement变量保存;然后判断根结点是否含有子结点,若不含有子结点,则直接通过getNum()方法和getText()方法获取到根结点的结点信息,然后将得到的根结点的结点信息封装到map_finall变量中,并跳转到步骤B4;若含有子结点,则进入步骤B3;结点信息包括结点编号信息和结点属性信息;
其中,getRootElement()为现有的获取根结点的方法,getNum()为现有的获取结点编号的方法,getText()为现有的获取结点属性信息的方法,rootElement为自定义的变量名称;
B3:通过根结点调用递归方法recursion()获取到所有结点的结点信息;
首先定义一个flag标志变量,用于表示结点是否含有子结点;然后创建两个LinkedHashMap集合,分别定义为集合map_this和集合map_children,集合map_this用于存储本层所有结点的结点信息,map_children用于存储本层所有结点的所有子结点的结点信息,以保证结点的递归顺序;其中,flag为自定义的标志变量名称,集合map_this和集合map_children为自定义的集合名称;
其次,创建结点迭代器iterator对结点是否含有子结点进行判断,迭代器的初始值为根结点,然后通过iterator.hasNext()依次获取到根结点的所有子结点,再依次判断所有的子结点是否还存在子结点。flag变量的初始值为1,然后通过iterator.hasNext()所获取到的下一个结点的信息对flag变量进行赋值;
在对结点是否含有子结点进行判断时:
(1)如果flag=0,则说明该结点的所有首层子结点均有次层子结点,然后通过iterator.next()方法获取到所有的首层子结点,并依次对所有的首层子结点进行递归操作,继续判断每个首层子结点是否存在次层子结点;
(2)如果flag=1,则说明该结点的所有首层子结点均无次层子结点,则直接将该结点的结点信息封装到map_this变量中;
(3)如果flag=2,则说明该结点的部分首层子结点存在次层子结点,部分首层子结点不存在次层子结点;然后,对于所有不存在次层子结点的首层子结点,将首层子结点的结点信息直接封装在集合map_this中;对于存在次层子结点的首层子结点则进行递归操作,并将获取到的次层子结点的结点信息直接封装在集合map_this中;
最后,通过map_finall.put()方法将获取到的集合map_this所储存的所有的结点信息转存到集合map_finall中;
B4:将集合map_finall以变量map另存,从而实现模糊XML文件由XML类型转化为Map类型;
其中,结点迭代器iterator所使用的elementIterator()方法为现有的结点迭代方法,结点迭代器iterator所使用的iterator.hasNext()方法为现有的获取下一个结点的方法;变量map为Map类型变量,Iterator为现有的迭代器,map_finall.put()方法为现有的获取结点信息的方法;
C:将步骤B中得到的所有结点的结点信息转化为XML类型,再根据写入结点的位置写入结点,并更新写入结点的结点编码,最终将步骤B中得到的Map类型的模糊XML文件转化为XML类型;
所述步骤C包括以下具体步骤:
C1:首先创建一个Map类型的集合rootMap,用于存储结点信息,然后通过map.get(parentNum)方法将集合rootMap的初始值赋值为根结点的结点信息;再创建一个Document对象定义为doc2变量,用于获取变量map中结点的结点信息,同时将doc2变量的编码格式设置为“utf-8”格式,再通过addElement(parentNum)方法依次向doc2变量中加入结点;
rootMap为自定义的集合名称,map.get(parentNum)为现有的获取根结点的结点信息的方法,addElement(parentNum)为现有的加入根结点的方法;
C2:通过getRootElement()方法获取到根结点,从根结点调用iterator()方法开始迭代,获取到所有结点的结点信息,并以String类型的变量xml保存。其中,iterator()方法为现有的集合迭代方法,xml为自定义的储存所有结点信息的变量名称;
C3:对迭代后获得的变量xml进行格式化。首先创建一个String类型的变量requestXML用于储存格式化后的变量xml,创建一个对象writer,对象writer为XMLWriter类型,对Map类型的模糊XML文件中的结点进行写入;requestXML为自定义的变量名称,writer为自定义的写入对象名称;
C4:创建Document对象定义为document变量,用于暂存中间文档,创建解析器reader用于解析读入变量xml,解析器reader为SAXReader解析器;然后通过解析器reader与StringReader(xml)方法对变量xml进行解析,并将解析后的xml以变量document临时储存;然后创建一个变量stringWriter用于变量xml的字符串流写入,变量stringWriter为StringWriter对象,创建变量format用于规定转化后模糊XML文档的格式,变量format为OutputFormat对象,其中规定的格式包括每一级结点前设置空格缩进、变量xml声明和内容之间不添加空行、添加变量xml头部声明、设置编码格式为“GB2312”以及设置分行。
变量document为自定义的变量名称,reader为自定义的解析器名称;StringReader(xml)方法为现有的以字符串流读取XML文档的方法,stringWriter为自定义的以字符串流写入对象名称,format为自定义的文档格式变量名称。
C5:通过xml.StandaloneWriter(stringWriter,format)方法将变量xml逐步写入到对象writer中,最终得到更新后的对象writer。
其中,xml.StandaloneWriter(stringWriter,format)方法为现有的以字符串流写入的方法;
本发明中,由于基于现有的精确XML文档基础上的字符串流写入XML文档的方法存在一定的缺陷,如无法充分挖掘数据信息和压缩效果不佳,因此本发明中充分考虑到实际XML文档的模糊性,通过使用含有模糊度属性的模糊XML文档来描述遥感影像元数据中存在的不确定性,对现有xml.StandaloneWriter(stringWriter,format)方法进行如下修改:
在步骤C5中,本发明将结点的编码设置为<NodeNum,PathName,PathPosition,poss>,其中NodeNum为结点在文档树中先序遍历的编号;PathName为结点的路径名称;PathPosition为结点的路径序号;poss为结点的模糊度;
结点的写入包含结点的新增、删除和修改;在将变量xml逐步写入到对象writer过程中,首先判断结点的写入是结点的新增、删除或修改,若结点的写入是结点的删除或修改,由于删除或修改的操作不会改变结点的原有编码,因此直接进行结点的删除或修改;若结点的写入是结点的新增,则分为两种情况进行操作:1:若对象writer中没有任何结点,设新增结点为结点v,则直接将新增的结点v写入对象writer中;2:若对象writer中已存在一个或多个结点,则设对象writer中最近写入的结点为结点u,新增结点为结点v,然后进行结点u和结点v关系的判断,以确定新增的v结点的位置:
若结点u是结点v的父结点,则将结点v直接写入到结点u的下一个位置;
若结点v是结点u的父结点,则将结点v写入到结点u的上一个位置;
若结点v是结点u的兄弟结点,设结点p为结点v和结点u的父结点,结点q是与结点p同一层的结点,则将结点v写入到结点p的前两个位置;
在确定新增的结点v的位置后,对结点v的编码进行修改,将新增的结点v的结点编号通过对象writer中最近写入的结点u的“NodeNum”进行自增,即结点v的结点编号修改为结点u的结点编号+1,保证结点编号的唯一性,从而使新增的v结点编码唯一;然后再将结点v的信息写入对象writer中,写入方法可采用getNum()方法和getText()方法,避免数据的覆盖和丢失。
在进行结点u和结点v关系的判断时,定义结点u的编码为<f1,n1+node1+"/",p1,poss>,结点v的编码为<f2,n2+node2+"/",p2,poss>,则有:
(1)结点u所在层次为“/”的个数;
(2)若f1≠f2,n1+node1+"/"=n2,且p1=p2,则结点u是结点v的父结点;
(3)若f1≠f2,n2+node2+"/"=n1,且p1=p2,则结点v是结点u的父结点;
(4)若f1≠f2,n1+node1+"/"=n2+node2+"/",且p1=p2,则结点v是结点u的兄弟结点。
C6:将更新后的对象writer通过getBuffer()方法和toString()方法,以字符串流的形式储存到最终的变量requestXML中,所获得的变量requestXML即为转化后的模糊XML文档,也就是压缩后的模糊XML文档。
getBuffer()方法为现有的获取并保存当前缓冲区值的方法,toString()方法为现有的转化为字符串的方法。
D:输出压缩后的模糊XML文档。
由于本发明考虑到实际应用场景中遥感元数据的不确定性,通过用模糊XML文档来代替传统的精确的XML文档来描述遥感元数据。本发明在写入结点时,通过LinkedHashMap保证写入结点编号及位置信息的唯一性,从而保证了写入结点编码的唯一性,而且对模糊XML文档中的重复标签和属性通过用短字符串代替长字符串后,将模糊XML文档树压缩进内存当中,有效减少了存储空间。如图2所示,本发明所述的遥感元数据的模糊XML压缩方法FXMLCA,在同等文件大小的情况下,与现有的XQzip、XBzip、ZCQ和XPATH压缩算法相比,压缩后的文档最小,压缩率最优。

Claims (7)

1.一种遥感元数据的模糊XML压缩方法,其特征在于,包括以下步骤:
A:读取模糊XML文档,并以变量形式保存模糊XML文档的路径;
B:获取模糊XML文件中所有结点的结点信息并以Map类型变量存储,将模糊XML文件由XML类型转化为Map类型;
C:将步骤B中得到的所有结点的结点信息转化为XML类型,再根据写入结点的位置写入结点,并更新写入结点的结点编码,最终将步骤B中得到的Map类型的模糊XML文件转化为XML类型;
D:输出压缩后的模糊XML文档。
2.根据权利要求1所述的遥感元数据的模糊XML压缩方法,其特征在于,所述的步骤A中,将模糊XML文档的路径以变量filepath进行保存,filepath为自定义的变量名称。
3.根据权利要求2所述的遥感元数据的模糊XML压缩方法,其特征在于,所述的步骤B包括以下具体步骤:
B1:首先创建一个LinkedHashMap集合,以结点先序遍历的顺序来存储模糊XML文档的树形结构,并使用map_finall变量保存;然后创建一个file对象,file对象读入步骤A中得到的filepath变量,从而获取到模糊XML文件的信息;再使用解析器SAXReader()读入file对象将模糊XML文件解析为doc1变量,doc1变量类型为Document对象类型;
B2:首先通过getRootElement()方法获取doc1变量的根结点,并将根结点用rootElement变量保存;然后判断根结点是否含有子结点,若不含有子结点,则直接通过getNum()方法和getText()方法获取到根结点的结点信息,然后将得到的根结点的结点信息封装到map_finall变量中,并跳转到步骤B4;若含有子结点,则进入步骤B3;结点信息包括结点编号信息和结点属性信息;
B3:通过根结点调用递归方法recursion()获取到所有结点的结点信息;
B4:将集合map_finall以变量map另存,实现模糊XML文件由XML类型转化为Map类型。
4.根据权利要求3所述的遥感元数据的模糊XML压缩方法,其特征在于:所述的步骤B3包括以下具体步骤:
首先定义一个flag标志变量,表示结点是否含有子结点;然后创建两个LinkedHashMap集合,分别定义为集合map_this和集合map_children,集合map_this存储本层所有结点的结点信息,map_children存储本层所有结点的所有子结点的结点信息;其中,flag为自定义的标志变量名称,集合map_this和集合map_children为自定义的集合名称;
其次,创建结点迭代器iterator对结点是否含有子结点进行判断,迭代器的初始值为根结点,然后通过iterator.hasNext()依次获取到根结点的所有子结点,再依次判断所有的子结点是否还存在子结点;flag变量的初始值为1,然后通过iterator.hasNext()所获取到的下一个结点的信息对flag变量进行赋值;
在对结点是否含有子结点进行判断时:
(1)如果flag=0,则说明该结点的所有首层子结点均有次层子结点,然后通过iterator.next()方法获取到所有的首层子结点,并依次对所有的首层子结点进行递归操作,继续判断每个首层子结点是否存在次层子结点;
(2)如果flag=1,则说明该结点的所有首层子结点均无次层子结点,则直接将该结点的结点信息封装到map_this变量中;
(3)如果flag=2,则说明该结点的部分首层子结点存在次层子结点,部分首层子结点不存在次层子结点;然后,对于所有不存在次层子结点的首层子结点,将首层子结点的结点信息直接封装在集合map_this中;对于存在次层子结点的首层子结点则进行递归操作,并将获取到的次层子结点的结点信息直接封装在集合map_this中;
最后,通过map_finall.put()方法将获取到的集合map_this所储存的所有的结点信息转存到集合map_finall中。
5.根据权利要求4所述的遥感元数据的模糊XML压缩方法,其特征在于:所述的步骤C包括以下具体步骤:
C1:首先创建一个Map类型的集合rootMap,存储结点信息,然后通过map.get(parentNum)方法将集合rootMap的初始值赋值为根结点的结点信息;再创建一个Document对象定义为doc2变量,用于获取变量map中结点的结点信息,同时将doc2变量的编码格式设置为“utf-8”格式,再通过addElement(parentNum)方法依次向doc2变量中加入结点;其中,rootMap为自定义的集合名称,map.get(parentNum)为现有的获取根结点的结点信息的方法,addElement(parentNum)为现有的加入根结点的方法;
C2:通过getRootElement()方法获取到根结点,从根结点调用iterator()方法开始迭代,获取到所有结点的结点信息,并以String类型的变量xml保存;其中,iterator()方法为现有的集合迭代方法,xml为自定义的储存所有结点信息的变量名称;
C3:对迭代后获得的变量xml进行格式化;首先创建一个String类型的变量requestXML用于储存格式化后的变量xml,创建一个对象writer,对象writer为XMLWriter类型,对Map类型的模糊XML文件中的结点进行写入;requestXML为自定义的变量名称,writer为自定义的写入对象名称;
C4:创建Document对象定义为document变量,用于暂存中间文档,创建解析器reader用于解析读入变量xml,解析器reader为SAXReader解析器;然后通过解析器reader与StringReader(xml)方法对变量xml进行解析,并将解析后的xml以变量document临时储存;然后创建一个变量stringWriter用于变量xml的字符串流写入,变量stringWriter为StringWriter对象,创建变量format用于规定转化后模糊XML文档的格式,变量format为OutputFormat对象,其中规定的格式包括每一级结点前设置空格缩进、变量xml声明和内容之间不添加空行、添加变量xml头部声明、设置编码格式为“GB2312”以及设置分行;变量document为自定义的变量名称,reader为自定义的解析器名称;StringReader(xml)方法为现有的以字符串流读取XML文档的方法,stringWriter为自定义的以字符串流写入对象名称,format为自定义的文档格式变量名称;
C5:通过xml.StandaloneWriter(stringWriter,format)方法将变量xml逐步写入到对象writer中,最终得到更新后的对象writer;其中,xml.StandaloneWriter(stringWriter,format)方法为现有的以字符串流写入的方法;
C6:将更新后的对象writer通过getBuffer()方法和toString()方法,以字符串流的形式储存到最终的变量requestXML中,所获得的变量requestXML即为转化后的模糊XML文档,即压缩后的模糊XML文档。
6.根据权利要求5所述的遥感元数据的模糊XML压缩方法,其特征在于:所述的步骤C5中,将结点的编码设置为<NodeNum,PathName,PathPosition,poss>,其中NodeNum为结点在文档树中先序遍历的编号;PathName为结点的路径名称;PathPosition为结点的路径序号;poss为结点的模糊度;
结点的写入包含结点的新增、删除和修改;在将变量xml逐步写入到对象writer过程中,首先判断结点的写入是结点的新增、删除或修改,若结点的写入是结点的删除或修改,则直接进行结点的删除或修改;若结点的写入是结点的新增,则分为两种情况进行操作:1:若对象writer中没有任何结点,设新增结点为结点v,则直接将新增的结点v写入对象writer中;2:若对象writer中已存在一个或多个结点,则设对象writer中最近写入的结点为结点u,新增结点为结点v,然后进行结点u和结点v关系的判断,以确定新增的v结点的位置:
若结点u是结点v的父结点,则将结点v直接写入到结点u的下一个位置;
若结点v是结点u的父结点,则将结点v写入到结点u的上一个位置;
若结点v是结点u的兄弟结点,设结点p为结点v和结点u的父结点,结点q是与结点p同一层的结点,则将结点v写入到结点p的前两个位置;
在确定新增的结点v的位置后,对结点v的编码进行修改,将新增的结点v的结点编号通过对象writer中最近写入的结点u的“NodeNum”进行自增,然后再将结点v的信息写入对象writer中。
7.根据权利要求6所述的遥感元数据的模糊XML压缩方法,其特征在于:在进行结点u和结点v关系的判断时,定义结点u的编码为<f1,n1+node1+"/",p1,poss>,结点v的编码为<f2,n2+node2+"/",p2,poss>,则有:
(1)结点u所在层次为“/”的个数;
(2)若f1≠f2,n1+node1+"/"=n2,且p1=p2,则结点u是结点v的父结点;
(3)若f1≠f2,n2+node2+"/"=n1,且p1=p2,则结点v是结点u的父结点;
(4)若f1≠f2,n1+node1+"/"=n2+node2+"/",且p1=p2,则结点v是结点u的兄弟结点。
CN202011086120.XA 2020-10-12 2020-10-12 一种遥感元数据的模糊xml压缩方法 Active CN112214461B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011086120.XA CN112214461B (zh) 2020-10-12 2020-10-12 一种遥感元数据的模糊xml压缩方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011086120.XA CN112214461B (zh) 2020-10-12 2020-10-12 一种遥感元数据的模糊xml压缩方法

Publications (2)

Publication Number Publication Date
CN112214461A true CN112214461A (zh) 2021-01-12
CN112214461B CN112214461B (zh) 2022-09-30

Family

ID=74054399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011086120.XA Active CN112214461B (zh) 2020-10-12 2020-10-12 一种遥感元数据的模糊xml压缩方法

Country Status (1)

Country Link
CN (1) CN112214461B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113518088A (zh) * 2021-07-12 2021-10-19 北京百度网讯科技有限公司 数据处理方法、装置、服务器、客户端和介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004302868A (ja) * 2003-03-31 2004-10-28 Nri & Ncc Co Ltd Xmlのタグ圧縮方法
JP2004342029A (ja) * 2003-05-19 2004-12-02 Hitachi Ltd 構造化文書圧縮方法及び装置
US20060031756A1 (en) * 2004-08-05 2006-02-09 Digi International Inc. Method for compressing XML documents into valid XML documents
CN104462147A (zh) * 2013-09-25 2015-03-25 天津书生投资有限公司 一种文档的存储方法
CN106503003A (zh) * 2015-09-06 2017-03-15 阿里巴巴集团控股有限公司 一种可扩展标记语言xml文档的压缩、解压方法和装置
CN109145155A (zh) * 2018-07-09 2019-01-04 中科遥感科技集团有限公司 海量遥感影像元数据高并发入库处理方法
CN110245248A (zh) * 2019-05-31 2019-09-17 河南大学 一种遥感影像关键字查询方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004302868A (ja) * 2003-03-31 2004-10-28 Nri & Ncc Co Ltd Xmlのタグ圧縮方法
JP2004342029A (ja) * 2003-05-19 2004-12-02 Hitachi Ltd 構造化文書圧縮方法及び装置
US20060031756A1 (en) * 2004-08-05 2006-02-09 Digi International Inc. Method for compressing XML documents into valid XML documents
CN104462147A (zh) * 2013-09-25 2015-03-25 天津书生投资有限公司 一种文档的存储方法
CN106503003A (zh) * 2015-09-06 2017-03-15 阿里巴巴集团控股有限公司 一种可扩展标记语言xml文档的压缩、解压方法和装置
CN109145155A (zh) * 2018-07-09 2019-01-04 中科遥感科技集团有限公司 海量遥感影像元数据高并发入库处理方法
CN110245248A (zh) * 2019-05-31 2019-09-17 河南大学 一种遥感影像关键字查询方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
LI TING: "A structure-based approach of kryword querying for fuzzy XML data", 《RESEARCH ARTICLE》 *
李永超: "基于模糊XML的海量遥感元数据查询技术的研究与实现", 《中国优秀硕士学位论文全文数据库》 *
杨静静,马骏: "遥感影像区域面积快速计算并行算法研究", 《万方数据》 *
缪丰羽等: "图结构模糊XML文档上的模式匹配算法", 《计算机科学》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113518088A (zh) * 2021-07-12 2021-10-19 北京百度网讯科技有限公司 数据处理方法、装置、服务器、客户端和介质
CN113518088B (zh) * 2021-07-12 2023-07-07 北京百度网讯科技有限公司 数据处理方法、装置、服务器、客户端和介质

Also Published As

Publication number Publication date
CN112214461B (zh) 2022-09-30

Similar Documents

Publication Publication Date Title
KR100424130B1 (ko) 데이터 압축 장치, 데이터베이스 시스템, 데이터 통신시스템, 데이터 압축 방법, 기억 매체 및 프로그램 전송장치
US8346737B2 (en) Encoding of hierarchically organized data for efficient storage and processing
JP5407043B2 (ja) バイナリにエンコードされたxmlデータの効率的な区分的アップデート
US8117217B2 (en) Information processing apparatus and encoding method
US20080098001A1 (en) Techniques for efficient loading of binary xml data
US7952500B2 (en) Serialization of shared and cyclic data structures using compressed object encodings
US8024353B2 (en) Method and system for sequentially accessing compiled schema
US8601368B2 (en) Processing method and device for the coding of a document of hierarchized data
US20020029229A1 (en) Systems and methods for data compression
US20090254882A1 (en) Methods and devices for iterative binary coding and decoding of xml type documents
JP4653381B2 (ja) 構造化文書の圧縮/解凍方法
JP2004530188A (ja) 構造化された文書を圧縮/伸長する方法
CN101346689A (zh) 压缩模式表示对象和用于元数据处理的方法
US20060184873A1 (en) Determining an acceptance status during document parsing
KR101109201B1 (ko) 멀티미디어 환경에서의 오디오 비쥬얼 데이터 콘텐츠의기술 방법
CN112214461B (zh) 一种遥感元数据的模糊xml压缩方法
KR101224684B1 (ko) 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처간의 매핑 방법 및 시스템
US20060184547A1 (en) Method and system for fast encoding of data documents
US7735001B2 (en) Method and system for decoding encoded documents
CN113434625A (zh) 专利检索式的代码化方法、设备和存储介质
US8996991B2 (en) System and method for displaying an acceptance status
CN110839022A (zh) 一种基于xml语言的车载控制软件通信协议解析方法
US20060212799A1 (en) Method and system for compiling schema
CN107818121B (zh) 一种html文件压缩方法、装置及电子设备
US20110185274A1 (en) Mark-up language engine

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant