3.1.1 Who查询——已知时间和空间条件或运动状态,查询运动目标 1) 时间点查询:[Qwho=(S,t)],其中[S]是一个空间查询条件,即一个空间窗口,查询[t]时刻与空间窗口相交的所有运动目标。 2) 时间段查询:[Qwho=(S,t1,t2)],如果[S]是[n]维空间的超立方体,[S]和时间区间[[t1,t2]]构成[n+1]维的超立方体。 3) 移动查询:[Qwho=(S1,S2,t1,t2)]是指运动目标的空间属性在[t1和t2]时刻分别满足[S1和S2],移动查询也称为时空隧道查询。 4) 最邻近查询:[QKNN=(D,t)],即查询最邻近的n个目标。这类查询也是非常有用的。 3.1.2 When查询——已知运动目标和空间条件,查询时间信息 When查询可以用[Qwhen=(Si,Oi)]表达,其中[Si]表示给定的空间条件,可以是通过空间谓词连接的空间对象,[Oi]是已知的运动目标。根据给定查询条件的不同,返回结果可能是(过去、现在或未来的)时间点或段。 3.1.3 Where查询——已知运动目标和时间条件,查询空间信息 Where查询可以用[Qwhere=(Ti,Oi)]表达,其中[Ti]表示给定的(过去、现在或未来)时间条件,可以是通过时间谓词连接的时间对象,[Oi]是已知的运动目标。根据给定的查询条件的不同,返回结果可能是目标对应的空间的位置、范围或某一段轨迹。 3.1.4 How查询——已知运动目标和时空条件,查询其运动信息 How查询可以用[Qhow=(Si,Ti,Oi)]表达,其中[Si]表示给定的空间条件,[Ti]表示给定的(过去、现在或未来)时间条件,可以是通过时间谓词连接的时间对象,[Oi]是已知的运动目标。 3.2 运动目标时空谓词扩展 运动目标时空数据的操作和分析是通过STQL语句(主要是指数据操纵语句)中时空谓词完成的。所以,运动目标时空谓词的扩展是实现运动目标时空数据库查询语言的核心任务。运动目标时空谓词主要包括数据库一致性、拓扑关系、投影、几何特征、距离和方向、集合和变化率等七类操作。 3.2.1 运动目标时空数据库一致性操作 主要是指检核运动目标时空数据的有效性和运动目标的类型变异,以保证运动目标时空数据库的一致性,如表1所示。 3.2.2 运动目标时空拓扑和其它关系谓词操作 主要是指关于给定空间条件和运动目标之间距离和拓扑关系的操作谓词,如表2所示。 表2 拓扑和其他关系谓词操作 [谓词名\&实现函数\&返回值\&说明\&f_within_distance\&f_within_distance_func(distance NUMBER, m_polygon REF Moving_Polygon,tolerance NUMBER, tp Timepoint)\&Boolean\&判断运动目标某一时刻是否在指定距离之内\&f_within_distance_func (distance NUMBER, m_polygon REF Moving_Polygon,tolerance NUMBER)\&Moving_Object\&查询在给定距离之内的运动目标\&f_relate\&f_relate_func (mask Varchar2, m_polygon REF Moving_Polygon, tolerance NUMBER, tp Timepoint)\&Boolean\&判断目标某时刻是否满足拓扑关系\&f_relate_func (mask Varchar2, m_polygon REF Moving_Polygon, tolerance NUMBER)\&Moving_Object\&查询满足拓扑关系的运动目标\&] 其中,f_relate操作谓词允许用户通过mask参数输入拓扑关系类型的关键词有:ANYINTERACT(相交)、CONTAINS(包含且不相切)、COVEREDBY(被包含且相切)、COVERS(包含且相切)、DISJOINT(不相交)、EQUAL(相等)、INSIDE(包含且不接触)、OVERLAPBDYDISJOINT(重叠且边界不相交)、OVERLAPBDYINTERSECT(重叠且边界至少一处相交)、TOUCH(相触且无内部公共点)。 另外,mask的值也可以是上述关键词的逻辑组合。如INSIDE+TOUCH根据情况的不同可以返回’INSIDE+ TOUCH’或FALSE。 总之,f_relate函数返回的结果包括以下三种情况: |