最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

扩展XML查询实现GML查询

IT圈 admin 32浏览 0评论

2024年5月30日发(作者:养听荷)

倌阳师范学院学报:自然科学版 

第23卷第2期2010年4月 

Journal of Xinyang Normal University 

Natural Science Edition Vo1.23 No.2 Apr。2010 

DOI:10.3969/j.issn.1003-0972.2010.02.033 

扩展XML查询实现GML查询 

陈淑婷 ,李云浩 

(江西理工大学8.建筑与测绘工程学院.b.信息工程学院,江西赣州341000) 

摘要:GML(地理标记语言)是基于XML发展而来的行业标记语言,具有XML的所有特征,同时还具有 

XML没有的空间特征。目前,对XML的查询有比较成熟壹询规范--Xquery,扩展XML查询是实现GML查询的 

最佳途径,在分析现有开放源码XML查询引擎的基础上,选择XQEnsine进行扩展,实现了对GML空间数据的 

本原查询。 

关奠词:XML/GML;空间扩展;本原查询 

中圈分类号:P208 文献标志码:A 文章编号:1003-0972(2010)02-0288-04 

Further Development of XML Query to Realise GML Query 

CHEN Shu-ring‘.LI Yun-hao。 

(a,Faculty of Architectural and Survey Engineering;h.Faculty of Information Engineering。Jiangxi 

University of Science and Technology。Ganzhou 341000,China) 

Abstract:GML(Geography Markup Language)is the professional markup language based on the further develop・ 

ment of XML.It is not only featured with al1 the distinctive characteristics of XML.but also with its own unique char- 

acteristic.At present,Xquery serves as the mature system for XML query.By analysing the open source of XML query 

en ̄ne,further extending XQ Engine and developing XML query,the GML query can be realized eventually. 

Key words:XML/GML;spatial expansion;primitive queries 

O 引言 

GML是由OGC推出地理标记语育(Geography 

Markup Language,GML)实施规范.目前,GML已经 

成为事实上的空间数据编码、传输、存储、发布的国 

际标准.随着GML数据不断涌现,对GML数据的 

管理与维护越来越显得紧迫,如何快速地从大量 

GML数据中检索出所需地理信息数据,这是本文 

所要解决的问题.由于GML是从XML扩展而来, 

这样可以借鉴对XML的查询来处理对GML的查 

询,但是XML不具有GML所具有的空问特征。所 

以需要对XML查询语言扩展空间功能,实现对 

GML数据的空间查询和空间运算. 

XQuery草案,目前最新XQuery草案是2005年2 

月11目的版本,它还在不断的修订和完善之中.目 

前基于XQuery的开源XML查询引擎很多,通过对 

这些开源引擎的分析,本研究选择XQEngine进行 

扩展来实现对GML的查询. 

XQEngine是一个使用XQuery规范的免费的 

开源的Java组件用来查询XML文档的XML查询 

引擎.这个引擎有两个主要优点:1)有一个简单易 

行的API,它可以很方便地嵌入到终端用户应用程 

序中;2)可以对它进行扩充,加入用户化功能,实 

现其他用途.正因这两点,本文采用了XQEngine作 

为基础平台来实现GML查询引擎.下面就 

1 开源XML查询引擎分析 

为了规范XML查询语言,W3C于1999年9 

月正式成立了XQuery工作组,先后颁布了多个 

XQEngine的应用和扩展进行分析: 

(1)XQEngine嵌入式开发 

创建一个Java文档,命名为testxqengine.java, 

分别引入相应开发包,操作如下: 

收稿日期:2009・12-30;修订日期:2010-01-25;’.通讯联系人.E-mail:1_yh8556@163.COnr 

基金项目:江西省教育厅科技研究项目(GIJ09251) 

作者简介:陈淑婷(1978-).女,河南商丘人,硕士。讲师,主要从事GML数据存储与索引的研究 

288・ 

陈淑婷,等:扩展XML查询实现GML查询 

impo ̄com.fatdog.xmlEngine.XQEngine; 

impo ̄com.fatdog.xmlEngine.ResultList; 

import org.xm1.sax.helpers.XMLReaderFacto・ 

ry; 

impo ̄java.io.PrintWriter; 

public class testxqengine{ 

public static void main(String[]args) 

{XQEngine myengine=new XQEngine();//对 

XQEngine实例化 

ny{//设置XQEngine的解析器为xerces解 

析器 

myen ̄ne.setXMLReader(XMLReaderFactory. 

createXMLReader(”org.apache.xerces.parsers. 

SAXParser”)); 

//输人要查询的XML文档名(包含路径) 

myengine.setDocument(XMLFilename); 

//输入按照XQuery规范写的查询语文件名 

(包含路径) 

//并返回查询结果 

ResultList rl=myengine.setQueryFromFile(XM- 

LQueryFilename); 

//这个true是让输出的xml符合一般格式的 

System.out.println(r1.emitXml(true)); 

l 

catch(Exception e) 

{e.printStackTrace();} 

} 

{ 

(2)XQEngine用户扩展 

主要扩展工作是在XQEngine类FandO.java 

中进行.具体实现以空间交叉查询函数intersection 

为例,过程如下: 

①创建函数 

ResuhList intersection(SimpleNode argl,Sier— 

pleNode ars2) 

throws InvalidQueryException 

{Geometry gl;Geometry ; 

Geometry g3; 

g3。g1.intersection(s2); 

return 

ResuhList(m—treeWalker).newString(”GA in- 

tersection GB:”+g3.toString());} 

②注册函数 

在Fand0.java的dispatchNamedFunction方法 

中注册函数. 

2 XML查询扩展内容 

本文主要针对OGC简单要素规范SFS(Simple 

Features Speciifcation For SQL)中定义的基本的空 

间数据类型(Spatial Data Types)和空间操作算子 

(Spatila Operators)以及GML3.X对XQuery进行了 

扩展. 

2.1 空间数据类型的扩展 

OGC的SFS中定义的基本空间数据类型包 

括:Point、LineString、LinearRing、Polygon、Geometry— 

Collection(MultiPoint、MuhiLineString、MuhiPoly— 

gon).SFS中的空间数据类型只限于2D、线性几何 

对象(Linear eGometries),GML 2中的空间数据类 

型与SFS中定义的数据类型一致,但GML 3.x中 

的空间数据类型已超出SFS中定义的数据类型,除 

了简单要素之外,还支持3D、非线性几何对象 

(Nonlinear eGometries),需要对SFs中的空间数据 

类型进行扩展,使其支持GMI_3.x. 

2.2空间操作算子的扩展 

空间操作算子的扩展包括:空间关系运算和空 

间分析操作.空间关系运算包括:Equals、Disjoint、 

Intersects Touches、Crosses,Within、Contains1 con— 

tains、within、Overlaps、Relate;空间分析操作包括: 

Distance、Buffer、ConvexHull、Intersection、Union、 

Difference、SymDifference. 

2.3空间索引扩展 

引入空间索引主要是为了提高查询速度,空问 

索引采用R-Tree索引,空间索引和GML文档独立 

存储,通过唯一标识符相互联系.实现步骤:①利用 

SAX遍历GML文档获取每个要素的外包矩形,重 

新设置要素标识FID;②调用R-Tree索引算法,生 

成R.Tree索引,索引ID的值和FID对应,这样就 

可以在查询的时候将索引定位到对应要素;③将生 

成的索引存储到磁盘空间,这样可以避免每次查询 

相同文档都要重新生成索引. 

2.4空间扩展的具体实现 

首先对JTS提供的空间数据类型和空间操作 

算子进行扩展,使其支持GML 3.x中定义的非线 

性几何类型;然后对XQEngine扩展空间数据类型 

和空间操作算子,使其支持GML空间数据的本原 

查询. 

289・ 

第23卷第2期 信阳师范学院学报:自然科学版hap://journa1.xyte.edu.cn 2010年4月 

3基于XML查询的GML查询实现 

3.1 GML查询流程 

GML本原查询系统流程如图1所示,GML查 

询引擎GMLQEngine主要对XQEngine查询引擎添 

加GML查询语句解析器、XML/GML文档解析器、 

R—Tree索引和空间扩展.一个完整的GML本原查 

询流程是: 

①首先将一个GML查询以文本的形式传送到 

查询引擎的查询解析器,经处理从输入流获得记号 

序列; 

@GML文档解析器对GML文档进行解析; 

③对GML文档建立空间索引,并存储为独立 

文件(如果已经建立索引,则只需装载索引); 

④然后经语法分析器处理生成查询语法树,判 

断该查询是否存在语义错误,如果存在这样的错 

误,则系统报告错误,查询不再往下执行; 

⑤对查询计划进行求值和各种空间运算; 

⑥最后通过查询输出构造器输出查询结果并 

以文本显示. 

0 

霍 

作霸夺问搽l

:子I

 

 

匝 G搬类型IMI 数l 

MI

审问扩展 

 杏询gj擎 

图1 GML查询系统流程 

Fig.1 Flow of GML query system 

3.2 GML查询具体实现 

GML查询的实现主要内容包括5个方面:① 

查询解析器的开发;②GML文档解析器的开发;③ 

空间索引;④空间扩展;⑤查询结果的处理.查询系 

统界面如图2所示,该系统将所有功能都集成到一 

个界面. 

(1)查询解析器的开发 

依据JavaCC的文法规则,本文创建了GML查 

询的语法描述文件GMLXQueryParser.java,解析器 

名为GMLXQueryParser.接下来使用JavaCC编译语 

290- 

法描述文件,自动生成GML查询解析器.JavaCC 

在编译过程中,如果没有发现文法错误,则生成相 

应的Java源程序,GML查询解析器的7个Java源 

程序是:GMLXQueryParser.java——解析类;GMLX— 

QueryParserTokenManager.java——记号管理类; 

GMLXQueryParserConstants.java——记号与其代表 

的符号名称联系接口.SimpleCharStream.javr 

代表输入字符流;Token.java——代表输入的记号 

(token);TokenMgrError.java——记号处理错误; 

ParseException.java——语法解析错误. 

图2 GML查询系统 

Fig.2 GML query system 

其中前3个是根据用户定义的解析器名生成 

的Java类,后4个是公共的Java类.JavaCC的输入 

为语法描述文件(GMLXQueryParser.java)、输出为 

查询解析器相关的7个Java源文件. 

查询解析器生成以后,在GML查询引擎GM— 

LQEngine中可以通过以下方式: 

GMLXQueryParser parser = new GMLX— 

QueryParser(flew StringReader(query)); 

调用,其中query为GMLXQuery查询语句字符流. 

GML查询解析器对查询语句query进行词法、语法 

分析,若查询语句巾存在错误,则报告错误类型及 

有关信息. 

(2)GML文档解析器的开发 

在SAX基础上设计了GMLSAXHandler.java 

解析器,能够完成对XML/GML数据的解析工作. 

通过继承org.xm1.sax.ContentHandler接口,对其 

提供的儿个主要构造进行扩展实现. 

GMLSAXHandIer.iava类主要对以下构造进行 

扩展:( ̄)startDocument():开始解析文档②startEle. 

merit(…):开始解析元素;③endEtement(・):元素 

解析结束;( ̄)characters(・・):获取元素内容;⑤end- 

Document():文档解析结束. 

陈淑婷,等:扩展XML查洵实现GML查询 

(3)空间扩展 

where Intersection(¥c,”61850 52150 61950 

52350”)and¥c//type=”Land” 

return¥C 

具体见3.2 GML查询语言的空间扩展. 

(4)空间索引 

具体见3.2 GML查询语言的空间索引扩展. 

(5)查询结果的处理 

对查询结果的处理提供了两种方式:GML格 

式和SVG格式. 

实验中的每个查询对每个文档大小都运行l0 

次,且分别进行了属性查询实验、空间查询实验及 

属性和空间相结合的查询实验,所有实验都得到了 

预期结果,实验结果如表1至表5所示.从查询结 

果可以看出查询时间随文件增大而增加,随查询结 

4 GML查询测试 

本文对1O个1~50 MB不等的GML文档进行 

果个数增加而增加;同时,要素的复杂程度也会影 

响查询时间.这些结果表明了本文提出的基于 

XQEngine来开发GML本原查询系统是可行的,同 

时也显示出了本文开发的GML本原查询系统的稳 

定性良好. 

各种查询测试,查询语句的写法,以空间交叉和属 

性混合查询为例: 

for¥C in doc(,e:\test\test.xml 3//Feature. 

Member 

表1属性查询测试 

Tab.1 Attribute query test 

文档大小/MB 

O.5 

l 

1.5 

查询时间/ms 

63 

78 

140 

结果个数 

91 

303 

554 

文档大sJ ̄/M 

10 

15 

20 

查询时间/ms 

5 266 

1O 831 

22 492 

结果个数 

5 561 

8 31l 

l1 974 

2.5 

5 

39O 

l 500 

1 131 

2 664 

25 

5O 

内存溢出错误 

内存溢出错误 

表2包含查询测试 

Tab.2 Contain query test 

文档大tJ ̄/MB 

0.5 

l 

1.5 

2.5 

查询时问/ms 

3O 

40 

55 

7O 

结果个数 

23 

26 

26 

36 

文档大4,/M 

10 

15 

20 

25 

查询时间/ms 

1l0 

175 

222 

243 

结果个数 

36 

36 

29 

29 

5 90 28 50 271 87 

表3相交查询测试 

Tab.3 Intersection query test 

文档大小/MB 查询时问/ms 候选几何对象个数最终结果个数 文档大小/MB 查询U ̄1q/.m ̄ 候选几何对象个数最终结果个数 

O.5 

1 

1.5 

2.5 

5 

160 

175 

246 

280 

320 

26 

52 

43 

8O 

67 

9 

9 

19 

12 

22 

10 

15 

20 

25 

50 

44l 

561 

850 

962 

1 352 

77 

96 

109 

l09 

109 

64 

25 

l05 

105 

27 

表4 k-邻近查询测试 

Tab.4 K-nearest query test 

文档大d ̄/MB 

0.5 

l 

1.5 

2.5 

查询时间/ms 

141 

140 

172 

187 

结果个数 

20 

20 

20 

20 

文档大dx/M 

10 

15 

20 

25 

查询时间/ms 

218 

219 

218 

234 

结果个数 

2O 

20 

2O 

20 

5 203 20 50 282 20 

(下转第303页) 

291・ 

周增国,等:基于ANSYS的大跨度拱桥拱肋吊装过程稳定性分析 

(2)通过设置下拉索或通过多点下锚张拉控 

线张拉的松紧程度不同,有可能使某些扣索的自振 

制拱肋(箱)的纵向稳定.下拉索布置如考虑到拱 频率恰巧与风的脉动频率相同而发生风振现象.如 

肋接头可能发生骨架变形,所以可在其下方设置拉 

果有多根扣索发生风振现象,可能会对拱肋的稳定 

索并通过改变拉索索力的大小来控制拱轴的变形. 产生不利的影啊所以应采取安装临时减振器的措 

(3)安装临时减振器.在安装钢绞线扣索时, 施,以消除扣索的风振现象. 

由于接线器的安装误差,导致其中一根或几根钢绞 

参考文献: 

[1]孟凡强.拱段吊装过程中的索力优化及拱肋稳定性研究[D].武汉:武汉理工大学,2008. 

[2]项海帆,刘光栋.拱结构稳定与振动[M].北京:人民交通出版社,1991. 

[3]庞大彬.大跨度钢筋混凝土箱型拱桥缆索吊装施工技术研究[J].铁道建筑技术,2003(3):303-304. 

[4]席红星.150 m钢筋混凝土拱桥单箱悬臂吊装施工技术[J].铁道建筑,2002(4):9-11. 

[5]李国豪.桥梁结构稳定与振动[M].北京:中国铁道出版社,1992. 

[6]叶裕明,刘春山,沈火明,等.ANSYS在土木工程中的应用实例[M].北京:中国水利水电出版社,2005:149-214 

[7]钱莲萍,项海帆.空间拱桥结构侧倾稳定性的实用计算[J].同济大学学报,1989,17(2):161・172. 

[8]赵雷, 一之.大跨度拱桥施工稳定性的时变力学分析[J].铁道学报,2000,22(5):55-59. 

责任编辑:郭红建 

(上接第291页) 

表5属性和空间联合查询测试 

Tab.5 Attribute and spatial integration query test 

文档大dx/MB 查询时间/ms 候选几何对象个数最终结果个数 文档大/b/MB 查询时IWms 候选几何对象个数最终结果个数 

O.5 531 26 6 10 1 375 43 11 

1 563 52 6 15 1 422 43 l1 

1.5 1 032 43 11 2O 1 719 44 12 

2.5 l o47 43 ll 25 3 062 l25 61 

5 1 172 43 11 50 4 575 l72 35 

5 结论 

果表明了本文提出的基于XML查询扩展思路是可 

本文在开源软件XML查询引擎XQEngine的基 

行的,同时将空问索引技术作为查询的空间过滤条 

础上扩充了GML空间数据类型、空间操作算子和空 

件,大大缩减了查询时问,提高了查询效率. 

间索引,实现了对GML的查询,从研究查询实验结 

参考文献: 

[1]高军,杨冬青,唐世渭,等.基于树自动机的XPath在XML数据流上的高效执行[J].软件学报,2005,16(2):223 ̄32. 

[2]於荔,鲍培明,张书 .GML空间数据的对象化存储研究[J].南京师范大学学报:工程技术版,2006,6(1):67-71. 

[3]兰小机,间国年,刘德儿,等.基于XQuery的GML查询语言研究[J].测绘科学,2005,30(6):99—102. 

[4]Fegaras L.The ofSAX[c]//Proc ofthe1 stinternationalworkshop onXQueryimplementation,experience and perspectives.Paris:Maison 

de al Chimie,2004:61-66. 

[5]Li X G,Agrawal G.Effwient evaluation ofXQuery over streaming data[c]//Pmc ofthe 31 st VLDB Conference Trondheim,Nor,say,2005: 

265.276. 

[6]Bose S,FegarasI .Data streammanagementfor historicalXML data[c]//Proc of SIGMOD,NewYork:ACM Press,2004:239 ̄50. 

[7]Guan J H_GQL:extending XQuery to query GML documents[J].Geospatial Information Science(S1009 ̄020),2006,9(2):118・126. 

责任编辑:郭红建 

303・ 

t 

2024年5月30日发(作者:养听荷)

倌阳师范学院学报:自然科学版 

第23卷第2期2010年4月 

Journal of Xinyang Normal University 

Natural Science Edition Vo1.23 No.2 Apr。2010 

DOI:10.3969/j.issn.1003-0972.2010.02.033 

扩展XML查询实现GML查询 

陈淑婷 ,李云浩 

(江西理工大学8.建筑与测绘工程学院.b.信息工程学院,江西赣州341000) 

摘要:GML(地理标记语言)是基于XML发展而来的行业标记语言,具有XML的所有特征,同时还具有 

XML没有的空间特征。目前,对XML的查询有比较成熟壹询规范--Xquery,扩展XML查询是实现GML查询的 

最佳途径,在分析现有开放源码XML查询引擎的基础上,选择XQEnsine进行扩展,实现了对GML空间数据的 

本原查询。 

关奠词:XML/GML;空间扩展;本原查询 

中圈分类号:P208 文献标志码:A 文章编号:1003-0972(2010)02-0288-04 

Further Development of XML Query to Realise GML Query 

CHEN Shu-ring‘.LI Yun-hao。 

(a,Faculty of Architectural and Survey Engineering;h.Faculty of Information Engineering。Jiangxi 

University of Science and Technology。Ganzhou 341000,China) 

Abstract:GML(Geography Markup Language)is the professional markup language based on the further develop・ 

ment of XML.It is not only featured with al1 the distinctive characteristics of XML.but also with its own unique char- 

acteristic.At present,Xquery serves as the mature system for XML query.By analysing the open source of XML query 

en ̄ne,further extending XQ Engine and developing XML query,the GML query can be realized eventually. 

Key words:XML/GML;spatial expansion;primitive queries 

O 引言 

GML是由OGC推出地理标记语育(Geography 

Markup Language,GML)实施规范.目前,GML已经 

成为事实上的空间数据编码、传输、存储、发布的国 

际标准.随着GML数据不断涌现,对GML数据的 

管理与维护越来越显得紧迫,如何快速地从大量 

GML数据中检索出所需地理信息数据,这是本文 

所要解决的问题.由于GML是从XML扩展而来, 

这样可以借鉴对XML的查询来处理对GML的查 

询,但是XML不具有GML所具有的空问特征。所 

以需要对XML查询语言扩展空间功能,实现对 

GML数据的空间查询和空间运算. 

XQuery草案,目前最新XQuery草案是2005年2 

月11目的版本,它还在不断的修订和完善之中.目 

前基于XQuery的开源XML查询引擎很多,通过对 

这些开源引擎的分析,本研究选择XQEngine进行 

扩展来实现对GML的查询. 

XQEngine是一个使用XQuery规范的免费的 

开源的Java组件用来查询XML文档的XML查询 

引擎.这个引擎有两个主要优点:1)有一个简单易 

行的API,它可以很方便地嵌入到终端用户应用程 

序中;2)可以对它进行扩充,加入用户化功能,实 

现其他用途.正因这两点,本文采用了XQEngine作 

为基础平台来实现GML查询引擎.下面就 

1 开源XML查询引擎分析 

为了规范XML查询语言,W3C于1999年9 

月正式成立了XQuery工作组,先后颁布了多个 

XQEngine的应用和扩展进行分析: 

(1)XQEngine嵌入式开发 

创建一个Java文档,命名为testxqengine.java, 

分别引入相应开发包,操作如下: 

收稿日期:2009・12-30;修订日期:2010-01-25;’.通讯联系人.E-mail:1_yh8556@163.COnr 

基金项目:江西省教育厅科技研究项目(GIJ09251) 

作者简介:陈淑婷(1978-).女,河南商丘人,硕士。讲师,主要从事GML数据存储与索引的研究 

288・ 

陈淑婷,等:扩展XML查询实现GML查询 

impo ̄com.fatdog.xmlEngine.XQEngine; 

impo ̄com.fatdog.xmlEngine.ResultList; 

import org.xm1.sax.helpers.XMLReaderFacto・ 

ry; 

impo ̄java.io.PrintWriter; 

public class testxqengine{ 

public static void main(String[]args) 

{XQEngine myengine=new XQEngine();//对 

XQEngine实例化 

ny{//设置XQEngine的解析器为xerces解 

析器 

myen ̄ne.setXMLReader(XMLReaderFactory. 

createXMLReader(”org.apache.xerces.parsers. 

SAXParser”)); 

//输人要查询的XML文档名(包含路径) 

myengine.setDocument(XMLFilename); 

//输入按照XQuery规范写的查询语文件名 

(包含路径) 

//并返回查询结果 

ResultList rl=myengine.setQueryFromFile(XM- 

LQueryFilename); 

//这个true是让输出的xml符合一般格式的 

System.out.println(r1.emitXml(true)); 

l 

catch(Exception e) 

{e.printStackTrace();} 

} 

{ 

(2)XQEngine用户扩展 

主要扩展工作是在XQEngine类FandO.java 

中进行.具体实现以空间交叉查询函数intersection 

为例,过程如下: 

①创建函数 

ResuhList intersection(SimpleNode argl,Sier— 

pleNode ars2) 

throws InvalidQueryException 

{Geometry gl;Geometry ; 

Geometry g3; 

g3。g1.intersection(s2); 

return 

ResuhList(m—treeWalker).newString(”GA in- 

tersection GB:”+g3.toString());} 

②注册函数 

在Fand0.java的dispatchNamedFunction方法 

中注册函数. 

2 XML查询扩展内容 

本文主要针对OGC简单要素规范SFS(Simple 

Features Speciifcation For SQL)中定义的基本的空 

间数据类型(Spatial Data Types)和空间操作算子 

(Spatila Operators)以及GML3.X对XQuery进行了 

扩展. 

2.1 空间数据类型的扩展 

OGC的SFS中定义的基本空间数据类型包 

括:Point、LineString、LinearRing、Polygon、Geometry— 

Collection(MultiPoint、MuhiLineString、MuhiPoly— 

gon).SFS中的空间数据类型只限于2D、线性几何 

对象(Linear eGometries),GML 2中的空间数据类 

型与SFS中定义的数据类型一致,但GML 3.x中 

的空间数据类型已超出SFS中定义的数据类型,除 

了简单要素之外,还支持3D、非线性几何对象 

(Nonlinear eGometries),需要对SFs中的空间数据 

类型进行扩展,使其支持GMI_3.x. 

2.2空间操作算子的扩展 

空间操作算子的扩展包括:空间关系运算和空 

间分析操作.空间关系运算包括:Equals、Disjoint、 

Intersects Touches、Crosses,Within、Contains1 con— 

tains、within、Overlaps、Relate;空间分析操作包括: 

Distance、Buffer、ConvexHull、Intersection、Union、 

Difference、SymDifference. 

2.3空间索引扩展 

引入空间索引主要是为了提高查询速度,空问 

索引采用R-Tree索引,空间索引和GML文档独立 

存储,通过唯一标识符相互联系.实现步骤:①利用 

SAX遍历GML文档获取每个要素的外包矩形,重 

新设置要素标识FID;②调用R-Tree索引算法,生 

成R.Tree索引,索引ID的值和FID对应,这样就 

可以在查询的时候将索引定位到对应要素;③将生 

成的索引存储到磁盘空间,这样可以避免每次查询 

相同文档都要重新生成索引. 

2.4空间扩展的具体实现 

首先对JTS提供的空间数据类型和空间操作 

算子进行扩展,使其支持GML 3.x中定义的非线 

性几何类型;然后对XQEngine扩展空间数据类型 

和空间操作算子,使其支持GML空间数据的本原 

查询. 

289・ 

第23卷第2期 信阳师范学院学报:自然科学版hap://journa1.xyte.edu.cn 2010年4月 

3基于XML查询的GML查询实现 

3.1 GML查询流程 

GML本原查询系统流程如图1所示,GML查 

询引擎GMLQEngine主要对XQEngine查询引擎添 

加GML查询语句解析器、XML/GML文档解析器、 

R—Tree索引和空间扩展.一个完整的GML本原查 

询流程是: 

①首先将一个GML查询以文本的形式传送到 

查询引擎的查询解析器,经处理从输入流获得记号 

序列; 

@GML文档解析器对GML文档进行解析; 

③对GML文档建立空间索引,并存储为独立 

文件(如果已经建立索引,则只需装载索引); 

④然后经语法分析器处理生成查询语法树,判 

断该查询是否存在语义错误,如果存在这样的错 

误,则系统报告错误,查询不再往下执行; 

⑤对查询计划进行求值和各种空间运算; 

⑥最后通过查询输出构造器输出查询结果并 

以文本显示. 

0 

霍 

作霸夺问搽l

:子I

 

 

匝 G搬类型IMI 数l 

MI

审问扩展 

 杏询gj擎 

图1 GML查询系统流程 

Fig.1 Flow of GML query system 

3.2 GML查询具体实现 

GML查询的实现主要内容包括5个方面:① 

查询解析器的开发;②GML文档解析器的开发;③ 

空间索引;④空间扩展;⑤查询结果的处理.查询系 

统界面如图2所示,该系统将所有功能都集成到一 

个界面. 

(1)查询解析器的开发 

依据JavaCC的文法规则,本文创建了GML查 

询的语法描述文件GMLXQueryParser.java,解析器 

名为GMLXQueryParser.接下来使用JavaCC编译语 

290- 

法描述文件,自动生成GML查询解析器.JavaCC 

在编译过程中,如果没有发现文法错误,则生成相 

应的Java源程序,GML查询解析器的7个Java源 

程序是:GMLXQueryParser.java——解析类;GMLX— 

QueryParserTokenManager.java——记号管理类; 

GMLXQueryParserConstants.java——记号与其代表 

的符号名称联系接口.SimpleCharStream.javr 

代表输入字符流;Token.java——代表输入的记号 

(token);TokenMgrError.java——记号处理错误; 

ParseException.java——语法解析错误. 

图2 GML查询系统 

Fig.2 GML query system 

其中前3个是根据用户定义的解析器名生成 

的Java类,后4个是公共的Java类.JavaCC的输入 

为语法描述文件(GMLXQueryParser.java)、输出为 

查询解析器相关的7个Java源文件. 

查询解析器生成以后,在GML查询引擎GM— 

LQEngine中可以通过以下方式: 

GMLXQueryParser parser = new GMLX— 

QueryParser(flew StringReader(query)); 

调用,其中query为GMLXQuery查询语句字符流. 

GML查询解析器对查询语句query进行词法、语法 

分析,若查询语句巾存在错误,则报告错误类型及 

有关信息. 

(2)GML文档解析器的开发 

在SAX基础上设计了GMLSAXHandler.java 

解析器,能够完成对XML/GML数据的解析工作. 

通过继承org.xm1.sax.ContentHandler接口,对其 

提供的儿个主要构造进行扩展实现. 

GMLSAXHandIer.iava类主要对以下构造进行 

扩展:( ̄)startDocument():开始解析文档②startEle. 

merit(…):开始解析元素;③endEtement(・):元素 

解析结束;( ̄)characters(・・):获取元素内容;⑤end- 

Document():文档解析结束. 

陈淑婷,等:扩展XML查洵实现GML查询 

(3)空间扩展 

where Intersection(¥c,”61850 52150 61950 

52350”)and¥c//type=”Land” 

return¥C 

具体见3.2 GML查询语言的空间扩展. 

(4)空间索引 

具体见3.2 GML查询语言的空间索引扩展. 

(5)查询结果的处理 

对查询结果的处理提供了两种方式:GML格 

式和SVG格式. 

实验中的每个查询对每个文档大小都运行l0 

次,且分别进行了属性查询实验、空间查询实验及 

属性和空间相结合的查询实验,所有实验都得到了 

预期结果,实验结果如表1至表5所示.从查询结 

果可以看出查询时间随文件增大而增加,随查询结 

4 GML查询测试 

本文对1O个1~50 MB不等的GML文档进行 

果个数增加而增加;同时,要素的复杂程度也会影 

响查询时间.这些结果表明了本文提出的基于 

XQEngine来开发GML本原查询系统是可行的,同 

时也显示出了本文开发的GML本原查询系统的稳 

定性良好. 

各种查询测试,查询语句的写法,以空间交叉和属 

性混合查询为例: 

for¥C in doc(,e:\test\test.xml 3//Feature. 

Member 

表1属性查询测试 

Tab.1 Attribute query test 

文档大小/MB 

O.5 

l 

1.5 

查询时间/ms 

63 

78 

140 

结果个数 

91 

303 

554 

文档大sJ ̄/M 

10 

15 

20 

查询时间/ms 

5 266 

1O 831 

22 492 

结果个数 

5 561 

8 31l 

l1 974 

2.5 

5 

39O 

l 500 

1 131 

2 664 

25 

5O 

内存溢出错误 

内存溢出错误 

表2包含查询测试 

Tab.2 Contain query test 

文档大tJ ̄/MB 

0.5 

l 

1.5 

2.5 

查询时问/ms 

3O 

40 

55 

7O 

结果个数 

23 

26 

26 

36 

文档大4,/M 

10 

15 

20 

25 

查询时间/ms 

1l0 

175 

222 

243 

结果个数 

36 

36 

29 

29 

5 90 28 50 271 87 

表3相交查询测试 

Tab.3 Intersection query test 

文档大小/MB 查询时问/ms 候选几何对象个数最终结果个数 文档大小/MB 查询U ̄1q/.m ̄ 候选几何对象个数最终结果个数 

O.5 

1 

1.5 

2.5 

5 

160 

175 

246 

280 

320 

26 

52 

43 

8O 

67 

9 

9 

19 

12 

22 

10 

15 

20 

25 

50 

44l 

561 

850 

962 

1 352 

77 

96 

109 

l09 

109 

64 

25 

l05 

105 

27 

表4 k-邻近查询测试 

Tab.4 K-nearest query test 

文档大d ̄/MB 

0.5 

l 

1.5 

2.5 

查询时间/ms 

141 

140 

172 

187 

结果个数 

20 

20 

20 

20 

文档大dx/M 

10 

15 

20 

25 

查询时间/ms 

218 

219 

218 

234 

结果个数 

2O 

20 

2O 

20 

5 203 20 50 282 20 

(下转第303页) 

291・ 

周增国,等:基于ANSYS的大跨度拱桥拱肋吊装过程稳定性分析 

(2)通过设置下拉索或通过多点下锚张拉控 

线张拉的松紧程度不同,有可能使某些扣索的自振 

制拱肋(箱)的纵向稳定.下拉索布置如考虑到拱 频率恰巧与风的脉动频率相同而发生风振现象.如 

肋接头可能发生骨架变形,所以可在其下方设置拉 

果有多根扣索发生风振现象,可能会对拱肋的稳定 

索并通过改变拉索索力的大小来控制拱轴的变形. 产生不利的影啊所以应采取安装临时减振器的措 

(3)安装临时减振器.在安装钢绞线扣索时, 施,以消除扣索的风振现象. 

由于接线器的安装误差,导致其中一根或几根钢绞 

参考文献: 

[1]孟凡强.拱段吊装过程中的索力优化及拱肋稳定性研究[D].武汉:武汉理工大学,2008. 

[2]项海帆,刘光栋.拱结构稳定与振动[M].北京:人民交通出版社,1991. 

[3]庞大彬.大跨度钢筋混凝土箱型拱桥缆索吊装施工技术研究[J].铁道建筑技术,2003(3):303-304. 

[4]席红星.150 m钢筋混凝土拱桥单箱悬臂吊装施工技术[J].铁道建筑,2002(4):9-11. 

[5]李国豪.桥梁结构稳定与振动[M].北京:中国铁道出版社,1992. 

[6]叶裕明,刘春山,沈火明,等.ANSYS在土木工程中的应用实例[M].北京:中国水利水电出版社,2005:149-214 

[7]钱莲萍,项海帆.空间拱桥结构侧倾稳定性的实用计算[J].同济大学学报,1989,17(2):161・172. 

[8]赵雷, 一之.大跨度拱桥施工稳定性的时变力学分析[J].铁道学报,2000,22(5):55-59. 

责任编辑:郭红建 

(上接第291页) 

表5属性和空间联合查询测试 

Tab.5 Attribute and spatial integration query test 

文档大dx/MB 查询时间/ms 候选几何对象个数最终结果个数 文档大/b/MB 查询时IWms 候选几何对象个数最终结果个数 

O.5 531 26 6 10 1 375 43 11 

1 563 52 6 15 1 422 43 l1 

1.5 1 032 43 11 2O 1 719 44 12 

2.5 l o47 43 ll 25 3 062 l25 61 

5 1 172 43 11 50 4 575 l72 35 

5 结论 

果表明了本文提出的基于XML查询扩展思路是可 

本文在开源软件XML查询引擎XQEngine的基 

行的,同时将空问索引技术作为查询的空间过滤条 

础上扩充了GML空间数据类型、空间操作算子和空 

件,大大缩减了查询时问,提高了查询效率. 

间索引,实现了对GML的查询,从研究查询实验结 

参考文献: 

[1]高军,杨冬青,唐世渭,等.基于树自动机的XPath在XML数据流上的高效执行[J].软件学报,2005,16(2):223 ̄32. 

[2]於荔,鲍培明,张书 .GML空间数据的对象化存储研究[J].南京师范大学学报:工程技术版,2006,6(1):67-71. 

[3]兰小机,间国年,刘德儿,等.基于XQuery的GML查询语言研究[J].测绘科学,2005,30(6):99—102. 

[4]Fegaras L.The ofSAX[c]//Proc ofthe1 stinternationalworkshop onXQueryimplementation,experience and perspectives.Paris:Maison 

de al Chimie,2004:61-66. 

[5]Li X G,Agrawal G.Effwient evaluation ofXQuery over streaming data[c]//Pmc ofthe 31 st VLDB Conference Trondheim,Nor,say,2005: 

265.276. 

[6]Bose S,FegarasI .Data streammanagementfor historicalXML data[c]//Proc of SIGMOD,NewYork:ACM Press,2004:239 ̄50. 

[7]Guan J H_GQL:extending XQuery to query GML documents[J].Geospatial Information Science(S1009 ̄020),2006,9(2):118・126. 

责任编辑:郭红建 

303・ 

t 

发布评论

评论列表 (0)

  1. 暂无评论