18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 时空查询语言(数据库)

时空查询语言(数据库)

时间:2022-11-10 16:30:01 | 来源:信息时代

时间:2022-11-10 16:30:01 来源:信息时代

    时空查询语言 : 时空数据库管理系统提供的一种查询语言,用以有效地管理和处理时空信息。在时空数据模型基础上,时空查询语言可以根据时空对象的时间、空间以及时空属性(传统信息)进行查询和处理,应当能够组合时间维、空间维的各隐式属性和显式属性,并考虑时空互相依赖、互为存在条件以及时空的连续性等特点。支持对时空对象的时空拓扑分析操作和时空索引是时空查询语言的基本功能。
与传统关系数据库的查询语言不同,时空查询包含时间和空间两种信息。例如“按照当前车速与方向,5分钟后,距离我最近的2个加油站在哪里? ”这种查询的结果依赖于数据库当前的状态并且随查询点的位置改变需要持续进行更新。因时空查询中包含大量有关空间、时空拓扑分析与处理的查询,传统的SQL语言已无法进行处理。
到目前为止共有三大类不同类型的时空查询,分别为即时查询,返回当前数据状态;连续查询,查询一段时间内的数据状态; 持续查询,查询将在未来一段时间内持续有效,不断返回结果。这些新的查询对数据库管理系统提出了新的功能要求,即连续返回查询结果,而不是运行一次就结束。
由于ISO把SQL作为数据库查询语言的标准,目前对时空数据库的查询语言研究主要仍采用扩充SQL语言的方法,即采用SQL结构,扩充时空操作谓词和空间操作谓词,使得查询语言能够处理传统数据、空间数据和时空数据,尤其是能够支持时空拓扑分析操作。
基于时空抽象数据类型和时空谓词,已经提出了一种类SQL的时空查询语言STQL,用于对随时间连续变化的移动空间对象的查询,同时将时空查询分类为时态选择查询、时空聚集查询、时空投影查询以及时空状态演化查询。Wolfson等人分析了连续运动点与区域之间的不同时空关系,将查询分为点查询(point query)和时空范围查询(spatiotemporal range query)两大类,引入时空查询操作符如when_at,where_at,sometimes_possibly_in,always_definitely_in等。并在其提出的时空数据模型MOST基础上,设计了FTL查询语言,提出了eventually、always等一些时态操作符,引入must和may文法,表示不同的查询语义。设计查询语言的关键在于是否有效支持各种时空操作,因为最终执行的动作都是时空操作。
时空数据库处理的信息主要是移动空间对象,但本质上是随时间变化的空间数据。目前对移动空间对象的空间分析操作研究主要是针对某些应用提出相应的操作。如查询“某飞机(移动点)航行时经过哪几个省? ”,需要转换为求移动点落在哪几个区域中的操作,该操作类似于空间数据库中的判断一个点是否在一个区域中的操作。而对查询“正在航行的某飞机的航速”和“该飞机的最大航速”,则需用到移动点(飞机)的坐标信息和时间信息。
1. 时空查询操作
对时空查询语言,至少应有如下几类操作:
(1)移动对象间拓扑关系的操作:如求一个移动点mp是否在另一个移动的区域mr中MpMr_inside(mp,mr)。
(2)移动对象与空间对象间拓扑关系的操作:如求一个移动点mp是否处于另一个固定的区域r内Mpr_inside(mp,r)。
(3)返回移动对象的操作: 如求两个移动区域mr1和mr2的交集MrMr intesect(mr1,mr2)等。
(4)返回单个数值的操作: 如求一个移动点mp的速度velocity(mp)。
(5)返回多个数值的操作:如求两个移动点mp1和mp2间的距离distance(mp1,mp2)、指定移动点mp1到一条固定线12间的距离distance(mp1,12)等。
(6)返回空间对象的操作:如求移动点mp的轨迹trajectory(mp)、一个移动点或一个区域在某一特定时间的空间点或空间区域。
(7)在移动对象集合上的操作:如在一些移动区域上进行FUSION操作。
2. 时空拓扑分析操作
时空拓扑操作的种类及语义仍处在研究中,目前提出的时空拓扑操作已达70多个,其拓扑操作算法是时空数据库的研究难点之一。以下给出一些典型的时空拓扑分析操作(注:[ ]表示可选项,缺省状态取整个生命期。[,t1,t2]表示时间段,t1、t2表示时刻)。
移动空间对象与空间对象间拓扑关系的操作:
(1) Mpl_on (mp,1[,t]/[,t1,t2]): 判断移动点mp是否在固定线1之上。
(2) Mpr_inside (mp,r[,t]/[,t1,t2]): 判断移动点mp是否在固定区域r内部。
(3) Mpr_on_border_of(mp,r[,t]/[,t1,t2]):判断mp是否在r边界上。
(4) Mrr_inside (mr,r[,t]/[,t1,t2]): 判断移动区域mr是否在固定区域r中。
移动对象之间拓扑关系的操作:
(5) MpMp_equal (mp1,mp2[,t]/[,t1,t2]):判断两个移动点mp1与mp2是否相等。
(6) MpMr_on_border_of (mp,mr[,t]/[,t1,t2])判断移动点mp是否在移动区域mr边界上。
(7) MrMr_intersects (mr,mr[,t]/[,t1,t2]):判断两个移动区域是否相交。
(8) MrMr_meets (mr,mr[,t]/[,t1,t2]): 判断两个移动区域是否相遇。
(9) MrMr_adjacent (mr,mr[,t]/[,t1,t2]):判断两个移动区域是否相邻接。
返回数值的操作:
(10) DetermineMpVelocity (mp[,t]):求一个移动点的速度。
(11) DetermineMrExpanddegree (ml[,t]): 求移动区域的面积增长速度。
(12) DeterminePerimeter(mr[,t]): 求移动区域的周长。
(13) DistanceMpMp(mp1,mp2): 求两个移动点间的距离。
(14) DistanceMpMr(mp,mr):求一个移动点与一移动区域间的距离。
返回空间对象的操作:
(15) Mp_position(mp[,t]):某一时刻求一移动点的空间位置。
(16) Mr_position (mr[,t]): 某一时刻求一移动区域的空间位置。
(17) Ml_interior(ml[,t]):求由移动线轮廓所形成的区域集对象。
(18) Mp_trajectory((mp[,t1,t2]):求移动点轨迹所形成的线集对象。
返回移动空间对象的操作:
(19) Mrr_intersection(mr,r[,t]/[,t1,t2]):求移动区域与固定区域的交集。
(20) MrMr_intersection(mr,mr[,t]/[,t1,t2]):求两个移动区域的交集。
如下为时空对象查询的实例。比如要查询国航CA300航班飞机在中国境内的航行距离是多少?则有:
SELECT length(intersection(C.territory,
Mp_trajectory(F.route)))
FROM flight F,country C
WHERE F.airline=“Airchina” AND
F.no=“CA300” AND C.name=“China”;
其中,length()求空间对象线的长度,C.territory存储国家的领土区域。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭