监测运动对象的方法和结构的制作方法

文档序号:6387305
专利名称:监测运动对象的方法和结构的制作方法
技术领域
本发明总体上涉及在移动环境中提供了解位置或者与位置相关的服务。更具体地,一种查询索引系统和方法允许本发明的用户定期地、增量式地定位在连续范围查询边界之内的所有运动对象。“增量式地”可以被定义为通过根据对于查询边界而言相对于最后位置的相对运动来过滤出一个运动对象子集,来跳过某些查询评估。
背景技术
最近已经有可能提供了解位置(location-aware)或者与位置相关(location-dependent)的服务并且正在出现这样的服务,这是由于移动计算和位置检测技术的进步,比如全球定位系统(GPS)。由于增加了对许多感兴趣的对象比如人、出租车、救护车、膝上型电脑、飞机、火车、货船等的位置的了解,这些服务可以提高生活质量。基本上,可以为任何运动的对象提供“位置意识”(定位)(locationawareness),对其监测。
对于提供了解位置的服务来说,其中一个最为基本的技术问题是进行监测,以对定位查询边界内的运动对象的连续范围查询提供迅速的回答。使用容易获得的连续范围查询的结果,可以提供各种了解位置的服务。例如,使用连续范围查询(比如“寻找当前离特定位置五个街区以内的所有出租车”)的结果,出租车公司可以将一辆出租车分派给在该特定位置的一个乘客。之所以将范围查询(range query)说成是“连续的”(continual),是因为在对象连续地四处运动的同时,对范围查询反复地进行评估,以提供最新的应答。每一个范围查询规定一个区域的边界。
为了监测对大量运动对象的连续范围查询,通常需要一种有效的索引方式。通常有两种不同的索引方法。一种是对运动对象进行索引,另一种是对范围查询进行索引。
为了对运动对象建立索引,已经进行了各种尝试。比如提出了以下方法-″Indexing moving objects,″by P.K.Agarwal et al.,inProceedings oJACM Symposium on Principles of Database Systems,2000;-″On indexing mobile objects,″by G.Kollios et al.,inProceedings oJACM Symposium on Principles of Database Systems,1999;-″Novel app roaches to the indexing of moving objecttrajectories,″by D.Pfoser et al.,in Proceedings of Very Large DataBases,2000;以及-″Indexing the positions of continuously moving objects,″by S.Saltenis et al.,in Proceedings oJACMSIGMOD,2000。
但是,因为对象可以以不可预期的速度和方向连续运动,非常难以对运动对象维护一个有效的索引。对象位置的变化要求对对象索引予以更新,这极大地降低了其性能。结果,通常对对象的运动速度或者方向进行某种约束,这极大地限制了对象索引的可应用性。
相反,对范围查询建立索引更为有效,这是因为连续范围查询的变化不那么频繁。使用查询索引,监测连续范围查询的问题就变成了这样给定一组范围查询和一组运动对象,连续地测定位于每一个范围查询的边界之内的对象的集合。
使用查询索引来快速地检索出覆盖给定对象的所有范围查询。通过识别每一个范围查询所覆盖的所有对象(将它们的最后位置考虑在内),定期重新评估所有的范围查询。为了使结果有用,两个相继的重新评估之间的时间段必须短。结果,进行查询重新评估的时间必须尽可能短。另外,重要的是,查询索引方法可以利用对象位置的增量式变化,因为某些对象可能自上次重新评估以来没有运动出某个查询的边界。本发明公开了一种用于监测对运动对象的连续范围查询的有效的查询索引系统和方法。
直到最近才开始在运动对象环境中使用查询索引。在″Queryindexing and velocity constrained indexingscalable techniques forcontinuous queries on moving objects,″IEEE Transactions onComputers,511124-1140,Oct.2002中,S.Prabhakar等人提出了一种使用R树的查询索引方法。但是,为了避免过多的位置更新,对每一个移动对象定义了一个安全区。可惜的是,确定安全区需要高强度的计算。另外,为了计算安全区,对运动对象的最大速率施加了约束。
在″Efficient evaluation of continuous range queries on movingobjects,″Proceedings of 13thInternational Conference on Database andExpert Systems Applications,2002中,D.V.Kalashnikov等人提出了一种基于网格单元(grid cell)的查询索引方法,其中表明了该方法胜过基于R树的查询索引。该方法中,监测区域被划分为互不重叠的网格单元。每一个单元包含两个列表完全的和部分的。完全列表保存完全覆盖该单元的查询的ID,而部分列表维护与该单元部分交叉的查询的ID。
但是,需要使用部分列表是一个重大缺陷。一个对象在一个单元内部的事实并不意味着它在保存在该单元的部分列表中的查询的边界之内。这迫使连续地比较对象位置与查询边界。结果,不能利用对象位置的增量式变化。即使对象没有运动到单元外面去,仍然需要对保存在部分列表中的所有查询进行边界比较。
结果,已经认识到需要一种更好的更有效的查询索引方法,这种方法应该(1)对对象的运动速度或者方向没有任何限制;并且(2)可以利用对象位置的增量式变化。
本领域的普通技术人员知道,对于判定匹配(predicate matching)(例如,E.Hanson et al.,″Selection predicate indexing for activedatabases using interval skip lists,″Information Systems,21(3)269-298,1996)以及公开/注册(pub/sub)(例如M.K.Aguileraet al.,″Matching events in a content-based subscription system,″Proceedings of Symposium on Principles of Distributed Computing,1999;F.Fabret et al,″Filtering algorithms and implementation forvery fast publish/subscribe systems,″Proceedings of the ACMSIGMOD,2001)上下文中的有效匹配事件,已经提出过各种查询索引方法。
但是,这些查询索引方法多数基于相等性判定(equalitypredicates),而不是范围判定(range predicate)。因此,它们不能一般地应用于对运动对象的连续范围查询的评估。
本领域普通技术人员还知道,尽管范围查询可以被当作空间对象比如矩形来处理,但是传统的空间索引方法,比如R树(例如A.Guttman,″R-treesA dynamic index structure for spatial searching,″Proceedings of ACM SIGMOD,1984;V.Gaede et al.,″Multidimensional access methods,″ACM Computing Surveys,30(2)170-231,1998),对于监测运动对象来说没有效,因为它们大多是基于盘形的(disk-based)索引方法。
它们通常太慢,因而不能有效地监测对大量的运动对象的连续范围查询。另外,当连续查询的范围开始相互重叠时,R树的性能就迅速退化(V.Gaede et al.,″Multidimensional access methods,″ACMComputing Surveys,30(2)170-231,1998;E.Hanson et al.,″Selectionpredicate indexing for active databases using interval skip lists,″Information Systems,21(3)269-298,1996)。

发明内容
鉴于传统系统的前述问题和缺陷,本发明的一个典型特征是提供一种查询索引结构(和方法),允许本发明的用户定期地和增量式地定位在连续范围查询的边界之内的所有运动对象。在这里的上下文中,“增量式地”的意思是,根据相对于查询边界来说自上次位置以来的相对运动,过滤出运动对象的一个子集,从而跳过某些查询评估。
因此,本发明的一个典型目的是提供一种用于查询索引结构(和方法)的结构和方法,允许本发明的用户定期地和增量式地定位在连续范围查询的边界之内的所有运动对象。
因此,在本发明的第一方面,在这里描述了一种监测对运动对象的连续查询的方法和结构。标识一个数字格式的查询区域。用至少一个瓦片区严格覆盖每一个查询区域,使得每一个查询区域被所述至少一个瓦片区完全覆盖,任何所述至少一个瓦片区没有任何部分在所述查询区域之外。
在本发明的第二方面,在这里描述了一种基于监测对运动对象的连续查询的服务,包括至少下述之一使用上述方法针对连续查询提供对运动对象的监测;提供使用所述方法的所述监测的结果;以及利用使用所述方法的所述监测的结果。
在本发明的第三方面,在这里描述了一种信号承载介质,其有形地实现可由数字处理设备执行的机器可读指令的程序,该程序执行监测对运动对象的连续查询的上述方法。


从下面结合附图对本发明的优选实施例的详细说明,可以更好地理解前述以及其它典型特征和优点。
图1图示了一种移动环境100的系统框图,其中,可以对大量的运动对象监测多个连续范围查询;图2图示了本发明的典型的优选实施例的概要流程图200;图3图示了根据本发明用于查询索引的虚拟瓦片区的概念300;图4图示了严格覆盖401和松散覆盖402斜线区的概念400;图5和图6使用矩形条和一个或者多个虚拟瓦片区503-504、602-604(它们当中的一些是相互重叠的)的概念图示了覆盖一个范围查询501的例子500;图7图示了基于瓦片区的查询索引的一个例子700;
图8图示了寻找用于任意对象定位的覆盖瓦片区的一个例子800;图9图示了对于一个对象位置列举所有覆盖瓦片区的一个举例的算法的流程图900;图10图示了一个对象运动到一个新位置时,增量式查询评估的一个例子1000;图11图示了通过跳过某些计算来增量式评估查询的算法的流程图1100;图12图解了包括了本发明的举例的硬件/信息处理系统1200;图13图解了用于存储本发明的方法的程序步骤的信号承载介质1300(例如存储介质)。
具体实施例方式
现在看附图,尤其是图1,来描述本发明的一个优选实施例。图1图示了移动环境的一个举例的系统框图100,其中,可以对大量运动对象,比如举例的对象120-128,监测多个连续范围查询110-114。卫星101可以用来向地面的接收器130、131中继和广播数据。在地面,有许多移动对象120-128,以及区域计算机服务器150、151,这些服务器装备有无线接收器130、131。
在此举例的优选实施方式中,所述范围查询110-114被图示为在二维空间中的矩形。但是,本领域的普通技术人员知道,它们也可以是其它形状,比如二维空间中的圆形,三维空间中的立方体或者球形。
这些连续范围查询110-114指定要被监测的区域。查询结果是位于各查询区域之内的所有对象。这些范围查询的边界由一台或者多台区域性计算机服务器150、151维护。这些区域服务器通过通信网络140连接起来。
所述运动对象120-128装备有定位设备,比如全球定位系统(GPS)设备。运动对象120-128的位置也由一台或者多台区域计算机服务器150、151维护。对象位置的变化由运动对象120-128报告给计算机服务器150、151,一般是通过无线链路130、131。
图2图示了这里所公开的用于有效地监测对大量的运动对象的许多连续范围查询的、举例的基于瓦片区的查询索引(SQI)的概要格式200。一个瓦片区(shingle)是一个瓦片式的对象(不一定是矩形),瓦片一般按重叠的列布置,以覆盖一个区域。在本发明的上下文中,一个瓦片区可以定义为铺起来以覆盖一个区域(例如地理区域)的数字表达的瓦片式对象的数字表达,而不一定是按照重叠的列平铺。
本发明的核心思想是使用一个或者多个瓦片区来覆盖每一个范围查询。与所述单元(cell)不同,本发明的瓦片区可以相互重叠,这就类似于盖房顶的瓦片。使用SQI,如果一个点落入覆盖一个查询的瓦片区之一之内,则对于该点是否被该查询覆盖来说没有二义性。因此,就可以容易地采用增量式重新评估方法。??对于那些自上一次重新评估以来没有运动到一个瓦片区之外的对象来说,可以节约计算量。由于一个对象可能被多个瓦片区覆盖,首先提供了一种确定覆盖一个对象的瓦片区的集合的作为举例的有效算法。利用新位置的覆盖瓦片区和旧位置的覆盖瓦片区的集合之间的差异来完成增量式重新评估。
为了实现SQI,预先定义了一组虚拟瓦片区。每一个虚拟瓦片区具有独有的左下角(a,b)、宽度和高度。一个瓦片区直到它用来覆盖一个范围查询之前都是虚拟的。在用来覆盖范围查询时,该瓦片区就被视为已经被激活。
在步骤201和202,当要插入一个范围查询时,首先找到覆盖该范围查询的一组虚拟瓦片区。然后,在步骤203,将查询ID插入与覆盖瓦片区相关的每一个ID列表。有许多方法可以用来用瓦片区来覆盖一个查询。
在一个优选实施例中,提供了一种简单但是系统的方法。首先,画一个从查询矩形的底部起高k的矩形条,并向上移动。对于最后一个矩形条,允许该矩形条的底部与前一个矩形条重叠。对于每一个矩形条,用虚拟瓦片区来从左侧开始覆盖它,向右侧移动。对于最后一个瓦片区,将右侧对齐,允许该瓦片区的左侧与前一个覆盖瓦片区重叠。
为了搜索覆盖给定对象的所有查询,首先计算该对象的覆盖瓦片区,然后,从这些覆盖瓦片区,计算覆盖该对象的所有查询。下面说明一种对于任何给定对象位置列举所有覆盖瓦片区的一种有效的算法举例。该列举算法的实现系借助于两个重要的特征恒定大小,以及相同间隔模式。对于所有对象位置,覆盖瓦片区的数量是一样的。如果按照升序排列覆盖瓦片区的ID,则对于任意两个位置来说,匹配位置的任意两个瓦片区之间的间隔是相同的。
完全的查询重新评估如下进行。对于每一个对象,找到其覆盖瓦片区,然后找到覆盖这些瓦片区的所有查询。然后将该对象ID保存到与这些查询相关的对象列表中。在最后,如步骤204所示,对象列表就是查询结果。
但是,如下所述,提出了一种增量式重新评估以节约计算量。对于增量式重新评估,首先计算新位置和旧位置的覆盖瓦片区。对于属于新位置但是不属于旧位置的所有覆盖瓦片区,将对象的一个实例插入覆盖这些瓦片区的查询所指的对象列表中。这解决了对象已经移动到这些瓦片区中的情况。
对于属于旧位置但是不属于新位置的所有覆盖瓦片区,从覆盖这些瓦片区的查询所指的对象列表中删除对象的一个实例。这解决了对象已经移出这些瓦片区的对象的情况。对于既属于新位置又属于老位置的覆盖瓦片区,不需要做任何事情。这解决了对象仍然留在这些瓦片区的边界之内的情况。
监测对运动对象的连续范围查询的系统和方法主要由一种有效的查询索引方法构成。对于这种查询索引,定期地用每一个新的对象位置来寻找覆盖它的所有查询。对象ID然后被保存到与每一个覆盖查询相关的对象列表(OL)中。
在所有的对象位置被处理之后,就得到一个完整的新的查询结果集合。换句话说,对象列表OL(q)包含当前位于查询q的边界之内的所有对象。用于查询索引及其相关操作的数据结构作为计算机可执行的程序被保存在图1中的一台或者多台区域服务器150、151中。这些连续范围查询的结果可以被用来提供各种定位服务。
本发明的查询索引系基于虚拟瓦片区。图3举例地图示了虚拟瓦片区301-305的概念300。虚拟瓦片区是覆盖瓦片区。虚拟瓦片区可以相互重叠。使用重叠的瓦片区,对于存储量和性能来说取得了折衷。直到这些瓦片区被用来覆盖一个范围查询之前,这些瓦片区都保持为虚拟的。在被用来覆盖范围查询时,它们被激活。注意,示于图3的每一个瓦片区301-305是4×4,在举例的优选实施例中,该瓦片区大小保持恒定。
另外,每一个虚拟瓦片区301-305具有如下所述能够系统计算的独有ID。假设监测区域是由Rx和Ry限定的矩形,则,作为举例,可以如下计算左下角位于坐标(a,b)的虚拟瓦片区的标识(ID)s(a,b)=bRx+a。
这样,在图3中,由于监测区域306的大小是Rx=16且Ry=12,对于左下角在坐标(8,8)的虚拟瓦片区304来说,其ID为s(8,8)=8×16+8=136。类似地,瓦片区305的ID为s(12,8)=8×16+12=140。
在一个范围查询可以被插入到查询索引中之前,首先找到一个或者多个虚拟瓦片区,以便该范围查询被严格覆盖。这里,“严格覆盖”的意思是整个查询区域被一个或者多个虚拟瓦片区完全覆盖,并且这些覆盖瓦片区中没有一个在该查询的边界之外。
图4图解了“严格覆盖”401与“松散覆盖”402的概念400。差别在于是否有覆盖瓦片区超出查询边界。也就是,在示于图中上部401的严格覆盖的情况下,覆盖瓦片区404、405完全覆盖查询边界并且仍然在查询区域内,在图中,查询区域就是斜线覆盖的区域403。相反,在松散覆盖的情况下,如图中下部402所示,对于覆盖区域403的瓦片区406和407来说,至少有一个瓦片区(例如407)超出查询边界(例如区域408)。
严格覆盖有一个重要特性,那就是,被瓦片区覆盖的任何点保证被该查询所覆盖。如果不是严格覆盖,则不存在该特性。例如,在图4中,被瓦片区407覆盖的区域408中的点就不一定被该查询覆盖。但是,任何被瓦片区404或者405覆盖的点都在查询的范围内。
有许多种可能的方式实现用虚拟瓦片区严格覆盖一个查询。在这里的实施例中,一种可能的简单而又系统的方法如图5和图6所示。
这两个附图500和600图示了用一个或者多个虚拟瓦片区覆盖一个范围查询501的一个例子,其中,某些瓦片区可以相互重叠。对于该优选实施例的描述,假设虚拟瓦片区是大小都是k×k(例如4×4)的方形。显然,虚拟瓦片区可以有不同于图示的各种大小和形状,比如矩形。
另外,假设这样选择k,使得其小于或者等于最小的范围查询的大小。也就是,所有的范围查询可以由一个或者多个虚拟瓦片区完全覆盖。这样,在图5和图6中,作为例子,k被选择为4。
首先,为了覆盖一个给定的范围查询501(例如斜线所覆盖的区域),如图5所示,从该查询矩形501的左下角开始生成高度等于虚拟瓦片区(例如瓦片区503)的高度的矩形条502。该矩形条502可以被标识为(3,3,11,4),其中,矩形条的符号标识(a,b,c,d)的含义如下(a,b)是该矩形条的左下角的坐标,c是该矩形条的长,d是该矩形条的高。
然后,如图6所示,矩形条的生成向上移动,成为矩形条601,它的标识应当是(3,5,11,4)。对于最后一个矩形条(在本例子中就是矩形条601),该矩形条601的底部可以与前一个矩形条502重叠。显然,矩形条的重叠实现了对范围查询501的严格覆盖。
接下来,对于每一个矩形条502、601,用虚拟瓦片区(例如503-505以及602-604)来覆盖所述矩形条,例如从左侧开始向右侧移动。对于每一个矩形条中的最后一个瓦片区(例如瓦片区505、604),矩形条和瓦片区的右缘对齐,因此允许最后一个瓦片区的左侧与前一个覆盖瓦片区重叠,从而实现对矩形条的严格覆盖。
这样,在图5中,用三个虚拟瓦片区503-505来覆盖画在范围查询501的下部的第一矩形条502。类似地,在图6中,用三个虚拟瓦片区602-604来覆盖画在查询501的上部的第二矩形条601。本领域的普通技术人员知道,有许多种其它的方法来用一个或者多个瓦片区完全覆盖一个范围查询。显然,矩形条502、601的重叠和最终瓦片区505、604的重叠实现了对范围查询501的严格覆盖。
在找到所有的覆盖瓦片区之后,将一个查询ID插入与所有覆盖瓦片区相关的ID列表中。图7图示了一种可能的基于瓦片区的查询索引方案700。主要地,查询索引维护一个从每一个虚拟瓦片区sk到查询qi的ID的一个列表702的映射。也就是,列表702是一个到查询703、704的指针阵列。令QL(s)表示与虚拟瓦片区s相关的查询ID的集合。它包含s覆盖的所有查询。因此,如果一个虚拟瓦片区没有用来覆盖任何范围查询,则相应的ID列表为空。例如,在图7中,查询q1-q4被各种虚拟瓦片区完全覆盖。部分瓦片区相互重叠。查询ID被保存在相应的ID列表中,从而,例如,指针703、704分别指向瓦片区Si的查询q2和瓦片区Sj的查询q3。
为了搜索覆盖一个对象位置的所有查询,首先必须找到所有虚拟覆盖瓦片区。令CSV(o)表示对象o(例如图7中的对象O1、O2)的虚拟覆盖瓦片区的集合。从这些虚拟覆盖瓦片区,对于每一个s∈CSV(o)必须找到保存在相应QL(s)(例如703、704)中的所有查询。
图8图示了对于位置在(x,y)的对象寻找所有覆盖瓦片区的举例的方法800,其中a<x<a+1,b<y<b+1。从图8可以系统地如下列举所有覆盖瓦片区它们的左下角位于阴影区801中。该阴影区801由右上角分别在(a,b)和(a+1,b+1)的两个瓦片区802、803的交限定。如图8所示,总共有16个这样的可能覆盖瓦片区(例如,如果阴影区801中的每一个点有一个相关瓦片区的话)。这些覆盖瓦片区的最小ID为s(a+1-k,b+1-k),其在图8中被标记为瓦片区803。最大的ID是s(a,b),其在图8中被标记为瓦片区804。
图9是对于位置在(x,y)(其中,a<x<a+1,b<y<b+1)的对象o系统地列举覆盖瓦片区的集合CSV(o)的举例的流程图900。首先,在步骤901,覆盖瓦片区集合被初始化为空集,J被初始化为b+1-k。然后,在步骤902,检查(J>b)是否为真。如果是,则在步骤909,例程结束,返回CSV(o)。
如果不是,则在步骤903,还检查(J>=0)是否为真。如果不是,则在步骤910将J增一。否则在步骤904,I被初始化为a+1-k。在步骤905,检查(I>a)是否为真。如果是,则在步骤910对J加1。如果不是,则在步骤906进一步检查(I>=0)是否为真。如果是,则在步骤907,将瓦片区s(I,J)加到CSV(o)。在步骤908,对I加1。在步骤906,如果(I<0),例程跳到步骤908。在I在步骤908增一以后,例程返回步骤905。
本领域的普通技术人员可以理解,只要对象位置不在边界区域中,任何对象位置的覆盖瓦片区集合的大小是恒定的。边界区域由0≤x<k,Rx-k≤x<Rx,0≤y<k,或者Ry-k≤x<Ry限定。在图8中四处移动对象就很容易验证这一点。覆盖瓦片区的相对位置可以变化,但是阴影区801的大小保持不变。
图8中阴影区801图解的概念可以用于确定当移动对象时涉及哪些瓦片区。也就是,给出了对于一个对象位置列举所有覆盖瓦片区的举例的过程,图10图解了举例的增量式查询重新评估。该示了当一个对象从一个位置移到另一个位置(图中的例子是从位置L1到位置L2)时,节省某些查询评估的例子。一般,当对象移动时,新位置CSVnew(o)的覆盖瓦片区的集合和旧位置CSVold(o)的覆盖瓦片区集合可能重叠。也就是,有一些瓦片区同时属于两个集合。
对于那些同时属于两个集合的覆盖瓦片区,不需要进行计算。这是因为运动对象没有运动到这些覆盖瓦片区的边界的外部。但是,对于那些属于CSVnew(o)但是不属于CSVold(o)的瓦片区,对象ID需要插入到这些瓦片区所覆盖的相关查询中。另一方面,对于那些属于CSVold(o)但是不属于CSVnew(o)的瓦片区,对象ID需要从这些瓦片区所覆盖的相应查询中删除。
图10图示了在图8所示的环境下,当对象从位置L1到L2时的相关区域。也就是,在图10中,位置L1对应于图8中的位置(x,y)。图10中的新位置L2大致离开了一个单元。
因此,可以直观地看到,图8中的4×4阴影区801现在会按照新位置L2移动。该4×4阴影区的该位置移动图示于图10中,只不过该4×4区域现在可能被分解为三个区域。
在第一区域1001中,3×3方块由图8所示的4×4区域801和对应于新位置L2的新的4×4区域共用。在该3×3方块1001中,表示了对于对象标识列表不需要进行操作的所有覆盖瓦片区。
区域1002是4×4阴影区801的已经因为位置移到L2而腾空的部分。该区域1001表示需要对对象标识列表进行删除操作的那些覆盖瓦片区。
最后,图10中的区域1003标识该4×4方块中的新加入的部分。也就是,在区域1003中,表示了需要在对象标识列表中进行插入的那些覆盖瓦片区。
因此,基于图10所示的概念,在图11中图示了一个举例的例程的流程图1100,该例程用于通过过滤出某些计算来进行查询的增量式重新评估。对于作为所有运动对象的集合的O中的每一个对象,进行查询重新评估。当每一个对象都被检查过(例如步骤1101、1102和1107)之后,例程在步骤1103停止。
首先,对于每一个对象,在步骤1104,首先计算新位置和旧位置的覆盖瓦片区的集合CSVnew(o)和CSVold(o)。然后,在步骤1105,o的一个实例,sk∈CSVnew(o)-CSVold(o),被插入OL(q),q∈QL(Sk)。之后,在步骤1106,o的一个实例,sj∈CSVnew(o)-CSVold(o),从OL(q)中被删除,q∈QL(Sj)。注意,对于s∈CSVnew(o)∩CSVold(o),不需要采取动作。
本领域的普通技术人员可以理解,类似于对象,范围查询可以到处移动。在这种情况下,首先,旧的范围查询从查询索引中被移除,然后插入新的范围查询。然后,类似地使用对象来寻找所有覆盖范围查询,以定期地重新评估查询结果。
显然,基于在本发明中所公开的系统和方法,可以提供各种服务。作为第一个例子,可以为出租车公司提供服务,向请求租车服务的乘客分配出租车。服务提供商将出租车作为运动对象来加以监测,将它们的位置定期报告给服务提供商。
一个或者多个出租车站,比如宾馆或者饭店,以及围绕这些车站的范围,都可以代表本发明的范围查询。服务提供商可以使用本发明公开的系统方法反复地维护当前在所述范围查询内的出租车。这样的查询结果可以被提供给出租车公司,以便合适地向从一个所述车站呼叫出租车的乘客分派出租车。
作为另一个例子,可以向一个或者多个商店提供基于本发明的系统和方法的一种服务,以便允许这些商店能够向当前正在走近这些商店的带有移动电话或者PDA的顾客动态地发送电子优惠券。在这个例子中,商店以及它们所希望的范围是所述查询。带有移动电话或者PDA的顾客是运动对象。服务提供商可以相对于所述商店及其范围查询监测这些运动对象。希望向当前在商店周围的顾客发送电子优惠券的商店店主可以利用这样的服务。
但是,显然,上述例子指示本发明的两种可能的应用,不能用于从任何方面来限制本发明。本发明提供了一种监测运动对象的计算技术,并且,回到图1的框图,示于图1的任何层次的用户和设施都可能对之感兴趣。这样,本发明的用户可以被视为被表示为用本发明的技术被跟踪的运动对象120-128的最终用户,或者使用查询结果的服务(例如出租车公司)或者商店(例如进行电子优惠券分发的商店)的运营者,或者直接执行本发明(或者为了自己使用或者为了转发给客户比如出租车公司)的服务提供商150、151。在某些条件下,对象跟踪系统(例如,被图示为卫星101)的拥有者/运营者、无线接收设施130、131甚至计算机网络140可以被视为本发明的用户。
举例的硬件实施方式图12图示了根据本发明的信息处理/计算机系统1200的典型硬件配置,它最好具有至少一个处理器或者中央处理器(CPU)1211。
CPU1211通过系统总线1212被互连到随机存取存储器(RAM)1214、只读存储器(ROM)1216、输入输出(I/O)适配器1218(用于将外围设备比如磁盘单元1221和磁带设备1240连接到总线1212)、用户接口适配器1222(用于将键盘1224、鼠标1226、扬声器1228、麦克风1232以及/或者其它用户接口设备连接到总线1212)、用于将信息处理系统连接到数据处理网络、因特网、内联网、个人区域网络(PAN,personal area network)等的通信适配器1234以及用于将总线1212连接到显示设备1238和/或打印机1239(例如数字打印机等)的显示适配器1236。
除了上述硬件/软件环境之外,本发明的另外的方面包括用于实现上述方法的计算机实现的方法。例如,该方法可以在上述特定环境中实现。
例如,这样的方法可以通过操作一台计算机来实现,该计算机被实现为一个数字数据处理设备来执行一个机器可读指令序列。这些指令可以驻留于各种类型的信号承载介质中。
因此,本发明的这一方面是一种被编程的产品,它由信号承载介质构成,其中有形地实现可由包括CPU1211和上述硬件的数字数据处理器执行的机器可读指令的程序,以执行本发明的方法。
所述信号承载介质例如可以包括被包含在所述CPU1211中的RAM,例如可以快速存取存储器为代表。或者,所述指令可以被包含在另一种信号承载介质中,比如可由CPU1211直接或者间接访问的磁数据存储盘1300(图13)。
无论是在磁盘1300中、计算机/CPU1211中或者别处,指令都可以被存储在各种机器可读数据存储介质上,比如DASD存储器(例如传统的硬盘驱动器或者RAID阵列)、磁带、电子只读存储器(例如ROM、EPROM或者EEPROM)、光存储设备(例如CD-ROM,WORM,DVD,数字光盘等)、纸质穿孔卡,或者其它合适的信号承载介质,包括传输介质,比如数字或者模拟通信链路和无线链路。在本发明的一个说明性实施例中,所述机器可读指令可以包括软件目标代码。
尽管前面针对一个优选实施例对本发明进行了描述,本领域的普通技术人员知道,可以在所附权利要求的实质范围内稍加修改来实现本发明。
另外还应注意,申请人的意图是将所有权利要求要素的等效方案包括进来,即使在以后的申请过程中权利要求可能被修改。
权利要求
1.一种监测对运动对象的连续查询的方法,包括标识一个数字格式的查询区域;以及用至少一个瓦片区严格覆盖所述查询区域,使得所述查询区域被所述至少一个瓦片区完全覆盖,任何所述至少一个瓦片区没有任何部分在所述查询区域之外。
2.如权利要求1所述的方法,其中,当严格覆盖一个查询区域的所述至少一个瓦片区包括多个瓦片区时,所述多个瓦片区中的瓦片区允许交迭。
3.如权利要求1所述的方法,还包括对每一个被监测的对象建立一个对象标识列表,所述对象标识列表指明哪些瓦片区覆盖一个对象以及哪些查询区域包括这些瓦片区。
4.如权利要求1所述的方法,其中,每一个所述瓦片区具有一个预定的形状。
5.如权利要求1所述的方法,其中,多个查询区域包括地球表面的预定地理区域,所述瓦片区包括多个二维形状和多个三维形状中的至少一个。
6.如权利要求1所述的方法,还包括对于一个查询区域,确定用于该查询区域的最佳瓦片区大小。
7.如权利要求6所述的方法,其中,严格覆盖所述查询区域的步骤包括基于所述最佳瓦片区大小形成第一矩形条,所述第一矩形条在第一维度沿着所述查询区域的一个边缘。
8.如权利要求7所述的方法,其中,所述第一矩形条不严格覆盖所述查询区域,该方法还包括对于第二维度,基于所述最佳瓦片区大小形成第二矩形条。
9.如权利要求8所述的方法,其中,所述最佳瓦片区大小允许所述第二矩形条严格覆盖所述查询区域。
10.如权利要求9所述的方法,其中,所述第一矩形条和所述第二矩形条相互重叠以实现所述严格覆盖。
11.如权利要求8所述的方法,其中,所述最佳瓦片区大小不允许所述第二矩形条严格覆盖所述查询区域,该方法还包括在所述第二维度,基于所述最佳瓦片区大小反复形成一个矩形条,直到所述查询区域被多个矩形条完全覆盖,其中,最后的矩形条允许与前一个矩形条重叠,以实现所述严格覆盖。
12.如权利要求7所述的方法,还包括在所述第一矩形条中形成多个瓦片区,每个所述瓦片区基于所述最佳瓦片区大小,从而严格覆盖所述第一矩形条。
13.如权利要求12所述的方法,其中,严格覆盖所述第一矩形条是这样实现的允许所述第一矩形条中的最后瓦片区与前一个设置的瓦片区重叠。
14.如权利要求8所述的方法,还包括对于形成的每一个矩形条,以严格覆盖所述矩形条的方式在所述矩形条中形成多个瓦片区。
15.如权利要求3所述的方法,还包括识别哪些瓦片区覆盖每一个相关对象;以及根据哪些瓦片区覆盖相关对象,维护一个位于每一个查询区域中的对象的查询索引。
16.如权利要求15所述的方法,其中,通过将所述相关对象的没有从先前覆盖对象的瓦片区移动的一个子集过滤出来,来跳过特定的查询评估。
17.一种监测对运动对象的连续查询的系统,包括用至少一个覆盖瓦片区严格覆盖每一个查询的模块,每一个所述查询是用数字格式表示的一个区域,其中,所述严格覆盖功能包括用至少一个所述覆盖瓦片区完全覆盖一个查询,其中,严格覆盖所述查询的所述瓦片区中没有任何瓦片区延伸到所述查询之外,严格覆盖所述查询的每一个所述瓦片区允许与严格覆盖所述查询的另一个瓦片区重叠。
18.如权利要求17所述的系统,还包括通过使用所述严格覆盖瓦片区过滤出所述运动对象的一个子集来跳过特定查询评估的计算器。
19.如权利要求18所述的系统,其中,所述计算机还基于所述覆盖瓦片区构建一个查询索引,运动对象的子集的所述过滤基于所述查询索引。
20.如权利要求18所述的系统,其中,所述运动对象的子集的所述过滤基于对相对于瓦片区边界自上一个位置以来的相对运动的确定。
21.如权利要求19所述的系统,其中,运动对象的子集的所述过滤基于构建一个查询索引,所述计算器还预定义一组瓦片区;用一个或者多个所述瓦片区覆盖一个范围查询;并且用所述多个覆盖瓦片区维护所述范围查询的ID。
22.如权利要求18所述的系统,其中,对所述运动对象的子集的所述过滤还包括计算老对象位置的覆盖瓦片区;计算新对象位置的覆盖瓦片区;从与被老位置的覆盖瓦片区覆盖但是不被新位置的覆盖瓦片区覆盖的查询相关的对象列表中删除对象ID实例;以及向与被所述新位置的覆盖瓦片区覆盖但是不被新位置的覆盖瓦片区覆盖的查询相关的对象列表中插入对象ID实例。
23.如权利要求18所述的系统,其中,对运动图像的一个子集的所述过滤还包括计算老对象位置的覆盖瓦片区;计算新对象位置的覆盖瓦片区;以及对于同时被新位置和老位置的覆盖瓦片区覆盖的查询,不采取任何动作。
24.一种基于监测对运动对象的连续查询的服务,包括至少下述之一针对连续查询提供对运动对象的监测,每一个所述查询是用数字格式表示的一个区域,该监测使用包括用至少一个瓦片区严格覆盖每一个所述查询区域的方法,其中,所述严格覆盖功能包括用所述至少一个所述覆盖瓦片区完全覆盖一个查询区域,任何所述至少一个瓦片区中没有任何部分在所述查询区域之外;提供使用所述方法的所述监测的结果;以及利用使用所述方法的所述监测的结果。
25.一种信号承载介质,其有形地实现可由数字处理设备执行的机器可读指令的程序,该程序执行一个监测对运动对象的连续查询的方法,该方法包括用至少一个瓦片区严格覆盖每一个查询区域,其中,所述严格覆盖功能包括用至少一个瓦片区完全覆盖所述查询区域,任何所述至少一个瓦片区没有任何部分在所述查询区域之外。
全文摘要
本发明涉及监测运动对象的方法和结构,具体地是监测对运动对象的连续查询的方法和结构,包括标识一个数字格式的查询区域;用至少一个瓦片区严格覆盖每一个查询区域,使得每一个查询区域被所述至少一个瓦片区完全覆盖,任何所述至少一个瓦片区没有任何部分在所述查询区域之外。
文档编号G06Q30/00GK1603749SQ200410011830
公开日2005年4月6日 申请日期2004年9月22日 优先权日2003年9月29日
发明者陈世魁, 吴坤龙, 俞士纶 申请人:国际商业机器公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1