时空数据库中时空查询语言的设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

近年来空间数据库中随时间而变化的信息越来越受到人们的关注,时态的思想和理论逐渐地产生和发展起来。GIS 作为时态的核心,时空数据库同其他类型的应用数据库GIS 一样,除了需要实现时空数据的组织、存储、转换及简单的检索之外,还应根据自身的应用需求提供相应的时空分析能力。同时为了满足时态系统处理海量数据的要求,时空GIS 数据库的发展更多地采用利用大型商业关系数据库管理时空数据的方法,以求获得较高的数据完整性和数据一致性。为了有效地利用商业关系数据库,为使用者提供方便的数据查询、数据操作和数据管理功能,时空数据库中实现时空分析功能的查询语言的设计普遍采用扩充关系数据库中标准SQL 语言的方法。

一个基于关系数据库的时空数据库的设计通常包括个3部分:将点、线、面、时间等时空数据类型作为基本数(1) 据类型,建立全关系化的时空数据模型;在标准语(2) SQL 言中扩充时空数据以及时空数据项的表示方法,形成时空数据查询语言;在语言中扩充空间运算的

(STSQL)(3) STSQL 功能[1]

。因此,作为时空数据库的应用接口,语言继STSQL 承了标准语言的全部功能,在语言的用户表示上与标准SQL 保持统一,提供了数据模型、数据表示和数据操作的可SQL 重用性。

本文阐述了时空数据查询的一种新的表示方法,在此基础上利用子句重构法的思想FROM [2]提出了一种时空数据查询语言的设计方法及其实现方案。

时空数据查询

1 时空分析是时态简称的基本应用需求,是时GIS(

TGIS)态区别于其他管理信息系统的标志。实现时空分析的关GIS 键是在标准语言中扩充时空数据查询。在时态中时SQL GIS 空数据查询往往演变成某一时间的空间数据查询,即以时t 间作为约束条件的空间查询t [3]。设表示点对象,POINT 表示线对象,表示区域对象,LINE REGION T s 、T e 表示空间

对象的生命起止时间,…表示其他约束条件,则

时间的时''t 空查询结果可定义为:

TGIS(t)∈TGIS(t)={POINT(t) | t [T s ,T e …∪∈], }{LINE(t) | t [T s ,T e

…∪∈], }{REGION(t) | t [T s ,T e …

], }下面讨论城区历史演变的实例。图中实线表示城区1

范围,用类型表示。虚线表示河流,用(city)REGION (river)类型表示。大写字母表示对应城区的名称,小写字母LINE 表示河流名称。表示历史发展时间T (T 1 < T 2 < T 3 < T 4。

) T 1 T 2

T 3 T 4

图城区历史演变图

1 在T 4时间后城区表中记录的数据如表其中表示1(NOW 对应对象尚未终止:

)表对应时间表

1 名称其他属性起止时间A 城区……[T 1,T 4]B 城区……[T 2,T 3]C 城区……[T 3,NOW]B 城区

……[T 3,T 4]A 城区

……

[T 4,NOW]

现在对图的历史情况进行时空查询。假如当前时间处

1时空数据库中时空查询语言的设计与实现

任家东,高伟,任东英

(燕山大学信息科学与工程学院,秦皇岛)

066004摘要: 给出了时空数据查询的表示方法及时空数据查询的意义。在此基础上,提出了一种时空查询语言的设计及其在关系数据库中的实现方法。

关键词:时空分析;时空数据查询;时空运算

Design and Implementation of Spatio-temporal Query Language

in Spatio-temporal Database

REN Jiadong, GAO Wei, REN Dongying

(,,)

College of Information Science & Engineering Yanshan University Qinhuangdao 066004【】Abstract This paper introduces the representation of spatio-temporal data query and explains its significance. Based on the representation, the paper also presents a method of designing spatio-temporal query language and provides its implementary method in the relational database.【】Key words Spatio-temporal analysis; Spatio-temporal data query; Spatio-temporal operation

第29卷 第9期Vol.29 № 9

计 算 机 工 程Computer Engineering

2003年6月 June 2003

・ 软件技术与数据库・ 中图分类号: TP311

文章编号:1000—3428(2003)09 —0098—02

文献标识码:A

—98—

于T 4之后的某一时间,若要查询t(T 3 < t < T 4时间下河流所)a 流经的所有城区,则根据上述定义可表述为TGIS(t)={city.∈region(t) | t [T 3,T 4∩∩]intersect(river.line(t),city.region(t))=a}={A[T 1,T 4], C[T 3,其中是判断两个,NOW]}intersect 几何对象是否相交的空间运算。其转化为时空查询语言的形式是select city.region from city,river where intersect(river.line,,其中city.region) and =a and historytime(t)是判断选取出记录的historytime [T s ,T e 是否包含时间的时态]t 运算。

时空查询语言的设计与实现

2 在语言中用于进行时空分析的STSQL SELECT-FROM-语句是最重要也是经常被使用的。在整个语句中WHERE 子句表示属性的映射,子句表示给定关系下SELECT FROM 的笛卡尔积结果,子句表示根据某种条件进行的选WHERE 择操作。任何情况下,子句都需要最终定义一种中间FROM 关系,作为和子句执行的基础。图就是当WHERE SELECT 2前普遍采用的处理时空分析语句的SELECT-FROM-WHERE 过程。

通过图可以看出,以前的研究总是把大部分精力放在2如何通过和子句进行相应的子查询上。由SELECT WHERE 于在语言中扩充了大量的时空操作和运算,所以对STSQL 于比较复杂的时空查询,和子句会显得非SELECT WHERE 常繁琐、冗余,这在一定程度上造成了整个语句缺乏条理性和可读性。上述的问题可以通过重新构造子句分离时FROM 空条件约束的多层查询方式来解决。由子句子查询中FROM 的时空操作产生新的属性,将这些属性添加到源关系的笛卡尔积结果中通过非时空条件过滤形成中间结果。然后在此中间结果的基础上执行和子句,从而完成整SELECT WHERE 个处理过程。例如,对于图在当前时间下从表和表1city river 中选取出河流流经的所有城区并显示在对应城区内的流经a a 里程,约束条件是所选城区建区历史年以上且在该区内的5a 流经里程大于。传统的查询语句表示为:

20km STSQL select , length(intersect(river.line, city.region))from city, river

where duration(city.T s ,city.T e )>5 and =a and intersect(river.line,city.region)group by

having sum(length(intersect(river.line,city.region)))>20

其中的功能是判断出两个几何对象的相交部intersect 分,的功能是计算线对象的长度,的功能是计length duration 算对应记录的生命期,这些都属于基本的时空操作和运算。

相对于传统的查询语句格式,采用重新构造子句的方FROM 法上述查询可表示为:

select , sectionlen

from

(select , intersect(river.line,city.region) as section, length (section) as sectionlen

from city, river

where =a)

where section<>null and duration(city.T s ,city.T e )>5group by

having sum(sectionlen)>20

通过比较可以看出,子句中通过嵌套多层查询在FROM 源数据表基础上派生出新的属性,进而将这些新的属性应用到其他的子句中,达到简化语句表达的目的。显然STSQL 子句重构法更适合于比较复杂的时空查询分析,它使FROM 复杂查询分析的表达更加层次化、清晰化,方便用户使用。

由于时空数据的组织和存储普遍地采用大型商业关系数据库来实现,因而在语言设计的基础上需要提供一STSQL 种能在关系数据库中处理语句的方法。以上述查询STSQL 语句为例说明一般处理步骤:

首先将子句中的嵌套查询语句构造为不包含(1) FROM 时空运算的形式,提取与时空运算无关的查询条件,并且在查询项中增加参与时空运算的数据项。形式如下:

select , city.region, river.line from city, river where =a

将新生成的查询语句提交后台数据库执行,得到查(2) 询结果。

在查询结果的各项记录中完成指定的时空运算:(3) 和。将运算结果作为新增属性项添加到查询结intersect length 果的对应记录中,形成子句的中间关系结果。

FROM 根据子句的时空运算条件筛选中间关系结(4) WHERE 果,而后根据查询项和,组织并返回整个 sectionlen 时空数据查询的结果。

上述方案通过分离时空运算的方法,将的查询STSQL 语句转化为标准可处理的形式。在此基础上通过非时空SQL 条件和时空条件两次过滤得出最终结果。非时空过滤为下一步的时空过滤奠定了基础,节省了进行大规模时空运算耗费的时间,提高了系统的性能。

结束语

3 本文提出的时空数据查询的表示形式和子句重构FROM 法及其实现步骤解决了时空数据查询的设计与实现问题。为了达到在关系数据库中实现上述方法的目的,在处理步骤中需要进行一系列的数据转换,这势必增加系统的负担,降低系统的效率。如何进一步提高系统的性能是有待于进一步研究的问题。

参考文献

1 Paton N W, Fernandes A A A, Griffiths T. Spatio-temporal Databases:Contentions, Components and Consolidation[C]. Int. Workshop on Advanced Spatial Databases (ASDM), 11th DEXA Workshop. IEEE Press, 2000: 851-855

2 Bo Huang, Lin Hui. Design of a Query Language for Accessing Spatial Analysis in the Web Environment[J].Geoinfomatica, 1999,3(2): 165

李春葆许云涛一种面向对象的时空数据模型及其操作华3 , . [J]. 中理工大学学报

, 1999, 27(5): 23-25—99—

相关文档
最新文档