掌桥专利:专业的专利平台
掌桥专利
首页

大规模轨迹数据时空伴随者查询方法和系统

文献发布时间:2023-06-19 18:29:06


大规模轨迹数据时空伴随者查询方法和系统

技术领域

本发明属于时空大数据处理与应用领域,具体涉及一种基于多级索引结构的大规模轨迹数据时空伴随者查询方法。

背景技术

高精度无线电导航的定位相关技术在轨迹数据采集领域冲云破雾,极大地丰富了时空数据的来源。这些数据包括点、线、多边形等各种几何类型,或者它们的混合。在现实生活中,万事万物都在相对运动中,对特定对象进行追踪,就可以获取到轨迹数据。对大规模轨迹数据的时空伴随查询具有非常广泛的应用前景,例如:在日常生活中进行需求推荐,在城市建设时进行道路规划等。但是在流行病预防的情况下,由于所获得的轨迹数据只考虑空间紧密性,并不符合时空伴随者的要求,所以需要考虑时间并发性,进行科学的动态表示。时空伴随者的应用可以拓展到更多细节,例如在打车时进行拼车,同伴检测和旅游推荐。

然而,由于时空数据具有以下的特点:第一,海量性,时空数据以极高的频率不间断产生,导致数据量庞大;第二,高维性,时间与空间分属两个维度,如何在处理空间信息的基础上处理时间信息需要进一步分析;第三,形状多样性:时空数据具有多种几何类型。综上,需要基于同时支持时间与空间的分布式框架进行研究。

利用大数据分析技术可以处理大规模时空数据,从中筛选出与输入轨迹时空重合的对象集。查询得到的“时空伴随者”,就是在尽可能短的时间找到风险人群,对采取必要防控措施的意义重大。另外由于轨迹数据具有非结构化、时效性强、规模庞大等特点,对传统轨迹数据处理系统的实时存储、实时查询的能力提出了挑战。时空伴随者是在疫情环境下催生的新概念,而时空伴随者查询对于疫情的控制具有重大意义,能及时阻断复杂的传播链。而对于轨迹查询的研究前人已经进行了许多,也是当下热门的研究领域,但是考虑时空累计因素的查询当前的工作并没有很多,尤其是具有轨迹时空伴随者查询功能并且可以基于内存的分布式轨迹处理系统很少。

目前可用于大型时空数据的解决方案多数支持使用R树进行时空分区和索引。因此,这些系统支持时空过滤和连接操作。但时间和空间的维度并不相同。划分的分区完全基于空间进行,查询的时间部分用于排除不符合时间约束的数据对象。本质上,时间维度被认为是另一个可查询维度,但是如果时间约束非常有选择性,则不能用于数据的剪枝。ST-Hadoop(Louai A, Mohamed F M.A Demonstration of ST-Hadoop:A MapReduceFramework for Big Spatio-temporal Data[J].Proceedings of the VLDB Endowment,2017,10(12):1961-1964)是Hadoop的开源 MapReduce的扩展,适用于时空数据处理。对时空索引的支持是ST-Hadoop的核心特性。这是通过空间索引的多级时间层次结构实现的。每个级别对应一个特定的时间分辨率(例如,日期、月份等)。然而,在每个级别,整个数据集都只会根据特定的时间分辨率级别进行复制和时空分区。并且ST-Hadoop仅支持时空范围查询、聚合和时空连接。Li等人(Li R,Wang R,Liu J,et al.Distributed Spatio-Temporalk Nearest Neighbors Join[C].Sigspatial'21:29th International Conference onAdvances in Geographic Information Systems,Beijing,China,2021:435-445.)发明了一种有效地支持多种几何类型的ST-kNN连接的分布式系统。执行ST-kNN连接时虽然通过分区中的参数调整完成了对轨迹数据时间并发的筛查,但并不能实现轨迹时间戳的累计,即同一轨迹中各个采样时间点上轨迹点的网格重叠范围内的时空伴随查询。并且ST-kNN对轨迹点间的间距大小缺少考虑,在对局部结果进行洗牌之前,选取出来的时空参考点并不能有效地代表时空信息参加划分分区中重复数据的去除与备选轨迹集筛选。因此,做到对时空分区的特定选择并采取及时有效的应对措施,实现轨迹时空伴随者等重要功能是如今科研领域中值得被关注的热点问题。

发明内容

为了解决上述提出的准确进行大规模轨迹数据时空伴随查询的问题,本发明在第一方面方面上,根据本申请一些实施例的一种大规模轨迹数据时空伴随者查询方法,包括

获取输入轨迹;

根据所述输入数据查询所述时空伴随者的轨迹;

根据所述时空伴随者的轨迹确定时空伴随者。

根据本申请一些实施例的一种大规模轨迹数据时空伴随者查询方法,根据所述输入数据查询所述时空伴随者的轨迹,包括

将轨迹数据集中的轨迹进行分区,获取轨迹数据集各轨迹的时间分区和空间分区;

根据所述输入轨迹,获取输入轨迹所在时间范围;

根据所述时间范围,获取与所述时间范围相交的轨迹数据集各轨迹的时间分区以及该时间分区所对应轨迹;

根据所述输入轨迹,获取所述输入轨迹的轨迹点在所述对应轨迹的空间分区的最近邻轨迹点;

获取所述输入轨迹的最近邻轨迹,所述最近邻轨迹点所在轨迹数据集的轨迹是所述输入轨迹的最近邻轨迹;

根据所述最近邻轨迹中的所述最近邻轨迹点在时间分区的划分,获取所述最近邻轨迹的时间累计,时空伴随者的轨迹是累计时间超过时间阈值的所述最近邻轨迹;

根据本申请一些实施例的一种大规模轨迹数据时空伴随者查询方法,所述轨迹数据集各轨迹的空间分区的轨迹包括开始时间与结束时间,按照匀速运动为所述轨迹的轨迹线上每一个轨迹点创建时间戳,所述轨迹数据集各轨迹的空间分区的轨迹点的信息包括所轨迹点所在轨迹的标识符。

根据本申请一些实施例的一种大规模轨迹数据时空伴随者查询方法,每条轨迹中每个轨迹点为定义的元组。

根据本申请一些实施例的一种大规模轨迹数据时空伴随者查询方法,所述获取所述输入轨迹的轨迹点在所述对应轨迹的空间分区的最近邻轨迹点,包括

将所述输入轨迹的轨迹点在所述轨迹数据集各轨迹的空间分区进行两轮局部kNN搜索,将两轮局部kNN搜索结果生成全局结果,根据所述全局结果获取输入轨迹的轨迹点到所述轨迹数据集各轨迹的空间分区的轨迹点的空间距离;

根据所述空间距离确定所述输入轨迹的轨迹点的最近邻轨迹点排序的优先级,根据所述优先级,获得输入轨迹点对应的所述轨迹数据集各轨迹的空间分区的轨迹点的排序结果;

输入轨迹的轨迹点的最近邻筛选的全局结果中的前k个所述轨迹数据集对应轨迹的空间分区的轨迹点是所述输入轨迹的轨迹点的所述最近邻轨迹点。

根据本申请一些实施例的一种大规模轨迹数据时空伴随者查询方法,获取所述最近邻轨迹的方法包括通过根据所述邻轨迹的所述标识符,通过全局索引获取所述输入轨迹的轨迹点的最近邻轨迹点所在轨迹数据集的轨迹是所述输入轨迹的最近邻轨迹。

根据本申请一些实施例的一种大规模轨迹数据时空伴随者查询方法,所述最近邻轨迹的轨迹点包括最近邻轨迹点和非最近邻轨迹点,所述最近邻轨迹点包括在同一时间分区的最近邻轨迹点和不在同一时间分区的轨迹点,所述根据所述最近邻轨迹中的所述最近邻轨迹点在时间分区的划分,获取所述最近邻轨迹的时间累计,包括如下方法:

对任一最近邻轨迹的不在同一分区的最近邻轨迹点,将所述任一最近邻轨迹上两相邻两个最近邻轨迹点的时间戳相减获取一个时间段,将各所述时间段相加累计,得到所述任一最近邻轨迹上的第一时空伴随累计时间;

对所述任一最近邻轨迹的在同一分区的最近邻轨迹点,计算在同一分区的最近邻轨迹点的中心点,将各在同一分区的最近邻轨迹点与所述中心点的时间戳相减获取一个时间段,将各所述时间段相加累计,得到所述任一最近邻轨迹的第二时空伴随累计时间;

所述任一最近邻轨迹的累计时间包括第一时空伴随累计时间和第二时空伴随累计时间。

根据本申请一些实施例的一种大规模轨迹数据时空伴随者查询方法,所述计算在同一分区的最近邻轨迹点的中心点,由如下公式表示:

其中:

n表示所述任一最近邻轨迹中有连续的n个在同一时间分区的最近邻轨迹点;

x

y

t

根据本申请一些实施例的一种大规模轨迹数据时空伴随者查询方法,还包括根据所述最近邻轨迹累计时间确定排序的优先级,根据所述优先级,获得输入轨迹对应的所述轨迹数据集中所述最近邻轨迹的排序结果;

排序结果的前k个所述轨迹数据集中所述最近邻轨迹是所述输入轨迹的时空伴随者的轨迹。

在第二方面上,本发明实施例的一种大规模轨迹数据时空伴随者查询系统,包括:一个或多个处理器,存储器,以及,一个或多个程序;其中,所述一个或多个程序被存储在所述存储器中,所述一个或多个程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行所述方法。

有益效果:

在第一方面上,本发明根据所述输入轨迹,获取输入轨迹所在时间范围;根据所述时间范围,获取与所述时间范围相交的轨迹数据集各轨迹的时间分区以及该时间分区所对应轨迹,从而在的空间分区的最近邻轨迹点获取中,其空间索引范围是时间范围有相交的轨迹的空间分区,能够降低最近邻查询的数据量,提高索引效率。

在第二方面上,本发明提出通过所述轨迹数据集各轨迹的空间分区的轨迹点的信息包括所轨迹点所在轨迹的标识符,获取最近邻轨迹点的最近邻轨迹,通过对最近邻轨迹的最近邻轨迹点的时间累计,能够获取最近邻轨迹的的累计时间,从而通过时间限值确定输入轨迹的时空伴随轨迹。由此可知,假设输入轨迹包括N个轨迹点,每个轨迹点对应N

在第三方面上,本发明提出一种新的最近邻轨迹的累计时间计算方法,区分最近邻轨迹点在时间分区上的聚集性,在不同情况下分方法确定累计时间,能够提高累计时间计算的准确性。

在第四方面上,本发明在同一分区的最近邻轨迹点的累计时间计算方法上提出一种新的方式,通过使用中心店计算,能够能提高系统的处理效率和精确度。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

图1为本发明的索引筛选方法图。

具体实施方法

下面通过参考附图详细描述本申请的实施例,所述实施例的示例在附图中示出,本申请提供一种大规模轨迹数据时空伴随者查询方法及系统,用以解决准确进行大规模轨迹数据时空伴随查询的问题。其中,方法和系统是基于同一技术构思的,由于方法及系统解决问题的原理相似,因此系统与方法的实施可以相互参见,重复之处不再赘述。

实施例1:一种大规模轨迹数据时空伴随者查询方法,通过这一方法,即使在轨迹数据集规模很庞大的情况下也可以对轨迹数据进行时空分区的划分,高效完成轨迹时空伴随者查询等功能。本方法可以具体实现于Spark平台上,建立起基于内存计算的分布式轨迹数据处理系统来实现轨迹时空伴随者查询等功能。本方法分为索引建立阶段和轨迹时空伴随者查询阶段。对输入轨迹进行划分,对每一个时间分区中的点执行kNN搜索,再进行时间的累加,最终输出时空伴随者查询结果。

针对当前每个新的连接请求都要执行数据分区和索引构造。为进一步提高效率,可以缓存一些中间结果,以避免从头重建所有的分区和索引。通过建立两个优先队列,以及动态网格范围计数索引(DGRC索引)和三维R树索引,实现对数据的局部连接。

时空伴随者的判断要求两者在同一区域共同存在的时间超过一定时间。因此在搜索时空伴随者的时候,需要限制一定的时间范围。对于待筛选轨迹集S的处理,对每条轨迹构建索引,并且需要对其上的每个点分配该轨迹的标识符,然后按照扫描线算法划分为α个时间分区,基于四叉树算法划分为β个空间分区,将S中所有的点划分到这α×β个分区中。对输入轨迹R 上的轨迹点进行查询,找到所在的时空分区后,使用时间阈值δ进行拓展,在与其相交的时空分区中进行最近邻搜索,生成局部结果,设置优先队列输出k个全局结果。对筛选出的结果对应的轨迹进行时间的累积,设置优先队列输出累计时间大于14小时的轨迹,即完成时空伴随者的查询。在进行时空伴随者查询时,考虑累计时间。由于时空伴随者不仅需要考虑两人在同一区域的共存时间,还需要考虑到两条轨迹在其他地方的重叠。本文设置了一个以累计时间为优先级的优先队列,对于输入轨迹R上的每个点都进行最近邻搜索,对结果进行时间的累加,直到处理完轨迹上最后一个点,输出累计时间超过14小时的对象,即优先队列中的前几个。

由于ST-kNN针对的是轨迹点的查询,而本方法采用数据集中使用的是轨迹线,因此需要对输入轨迹进行处理。对于数据集中的轨迹,由于每条轨迹所包括的轨迹点数并不相同,并且只包含起止时间,为了能进行并行处理,需要进行统一化处理,因此本文使用均匀划分的方式为每个轨迹点明确了时间。轨迹点数多的轨迹上的相邻两个点之间的时间间隔较小,可以认为是采样频率较大,并且对多个点进行了取中心点的操作,对累计时间并不会有较大的误差。

对通过全局索引-动态网格范围计数索引-三维R树索引的多级索引结构可以实现对查询轨迹进行两次局部kNN连接筛选的操作,可以有效地减少备选轨迹集中轨迹的数量。基于样本数据构造一个全局索引,全局索引由时间分区的排序数组和空间分区的多个四叉树组成。DGRC 索引可以提供一个更精确的下界,从而帮助对象更容易地找到包含它们的kNN的时空分区,减少了数据的复制。更精确的下限也提高了命中率。

具体来说,本方法遵循两轮连接框架。在第一轮连接中,首先根据时空分布对对象进行划分,然后找到每个对象的距离界限,使得满足空间邻近性和时间并发性的最近邻居必须位于特定区域内。在第二轮连接中,首先执行一个局部连接来获得局部结果,然后将它们合并成一个全局结果。对于待筛选集中的轨迹都构建索引,使得进行查询时能对索引进行累计时间,减少存储空间,进而提高查询效率。图1为本发明的索引筛选方法图。

为了达到上述目的,一种基于多级索引结构的大规模轨迹数据时空伴随者查询方法,包括:

对包含GPS信息的大规模轨迹数据集进行轨迹数据预处理,对于预处理操作后得到的轨迹数据集按照负载均衡进行时空分区的划分。进行分区主要包括四步:采样,时间划分,空间划分和重新分配。在采样这一步中,从数据集中取一组随机样本,采样率为1%。使用四叉树算法将全局空间域划分为最多β个空间分区。之后,最多得到α×β个时空分区。每个时空分区被绑定到一个时间范围和一个MBR。如果轨迹的时间范围和几何区域都与一个时空分区的时间范围和几何区域相交,该时空分区的标识符将被绑定到该条轨迹。之后,数据集根据有界标识符重新分区;

构建一个全局索引,其中时间范围被组织为一个排序数组,MBR被组织为一个四叉树。全局索引被广播到S的所有部分;构建两个局部索引,查找输入轨迹的拓展时空范围,在每个时空分区中构建一个DGRC索引,对于每个轨迹对象,使用全局索引找到一组与轨迹的拓展时间范围相交的时间分区,每个时间分区中,使用全局索引和DGRC索引找到待筛选集中至少有k个满足条件的对象(即时间范围与轨迹的拓展时间范围相交)的距离的最近的空间分区,选择其中最近的一个,并把它的标识符赋予轨迹,然后根据有界标识符重新分区。将轨迹赋给在待筛选集中至少有k个满足的对象的时空分区,可以保证在这个时空分区中计算距离界限,使得轨迹与任意kNN连接的距离小于界限;

在相交的时空分区中进行局部kNN搜索。在每个时空分区中,首先构建局部三维R树索引,其中时间信息被认为是第三维。对于每条轨迹,使用构建的局部三维R树索引,在这个划分中执行局部kNN搜索,生成一个按它们到输入轨迹的距离排序的局部结果,并将结果缓存起来。在第二轮局部连接这个步骤中,对于每条轨迹,需要检查所有可能产生kNN的时空分区,并生成局部结果。与第一轮局部连接不同的是,利用距离界限可以进一步优化搜索过程,即当轨迹和三维R树节点之间的距离大于界限时,可以立即终止kNN搜索;

将多个局部kNN结果合并为一个全局结果。为了减少网络传输开销,本方法在重新分区之前重新移除重复数据。在两轮局部连接之后,考虑在第一轮局部连接中产生的局部结果,在每个时空分区中获得轨迹的一个单独的局部kNN结果。洗牌局部结果,其中相同的结果被重新分区到同一个新的分区;使用多路合并算法将它们合并成全局结果;删除重复,因为一个对象可以被分配到多个时空分区,所以在不同的局部结果中可能有的重复组合;将第一个有k个对象的组合作为最终的结果;

建立一个优先队列,以到输入轨迹的距离远近为优先级,仅计算空间距离,距离近的优先级越高,最后以优先队列中的前k个作为输入轨迹的最近邻筛选的全局结果参与时空伴随者的查询(距离查询结果)。对于同一条轨迹,使用索引代表,每条轨迹对应一个全局唯一的标识符,在进行数据处理时,使用索引而非原数据。同时累计数据需要开辟一片新的区域进行计数,设置优先队列,按照累计时间的长短进行排序,输出满足条件的前几个,实现时空伴随者查询的系统优化。

进一步地,所述时空分区的划分,包括:

每一个三维立方体即为一个时空分区,将待筛选集进行时空分区。其中不同分区中的对象数目几乎相同,以实现良好的负载平衡,对于实现分布式并行操作也是必要的;

由于时间划分使用扫描线算法,所以保证每个时空范围的轨迹点基本保持数量相同,即每一层的轨迹点数基本相同。基于四叉树算法划分空间分区,保证每一条立方体中轨迹点数基本相同。由于轨迹按照时间顺序延伸,所以从空间上看,每条轨迹上的轨迹点在时间轴方向逐渐向上发展;

针对所查询的输入轨迹,首先将其划分为若干个轨迹点,对每一个轨迹点所在的时空分区,使用kNN搜索最近邻,但最近邻与该点并不一定在同一时空分区,即不一定在同一立方体中。搜索到最近邻后,使用索引查询该轨迹点所在的轨迹,对该轨迹累计时间,时间为该最近邻所在时空分区的时间,直到处理完最后一个轨迹点;

参与时空伴随者查询的轨迹线仅有开始时间与结束时间,为了实现查询,按照匀速运动为轨迹线上每一个轨迹点创建时间戳,使得每条轨迹中每个轨迹点为定义的元组。但为了进行累计时间,需要对每个轨迹点分配与其原轨迹相同的标识符。由此可将每一条轨迹划分为诸多轨迹点,从而进行kNN处理;

对于输入轨迹集,将其划分为若干轨迹点后,由于时空分区按照待筛选集的负载均衡划分,所以可能导致一个时空分区中存在同属于一条轨迹的若干点。此时,需要筛选时空伴随者;

其中计算代替整个时空分区的多个轨迹点的多点的中心点的公式如下:

其中:

一条轨迹中有连续的n个轨迹点;

x

这样做的原因是轨迹集中的每条轨迹所包含的点数是不同的,对于点数较多的轨迹,相对来讲两点之间的时间间隔更小,即轨迹点数多的轨迹与轨迹点数少的轨迹在同等时间间隔中的点数相差较大。

在一种进一步的方式中:

将一个时空分区由一个三维立方体表示,不同时空分区中的轨迹点数量基本相同;

使用扫描线算法进行时间分区划分,每个时空分区的轨迹点数量基本相同,根据时间范围对表示时间分区的三维立方体进行分层,每个时空分区的三维立方体的每一层的轨迹点数量基本相同;使用四叉树算法进行空间分区划分,每个时空分区的三维立方体中轨迹点数量基本相同,空间上时间分区中的每条轨迹上的轨迹点在时间轴方向逐渐向上发展;效果:

将输入轨迹划分为若干个轨迹点,将待检索集的任一轨迹也划分为若干个轨迹点,划分方法:定义轨迹中每个轨迹点为元组,对每个轨迹点分配该轨迹点所在的轨迹的标识符。由此可将每一条轨迹划分为诸多轨迹点,目的是方便进行kNN处理;

对任一轨迹点,在轨迹点所在的空间分区,使用kNN搜索所述轨迹点的最近邻的轨迹点,所述最近邻的轨迹点与所述轨迹点不一定在同一时空分区,。

最近邻的轨迹点所在各自的轨迹,(轨迹间相对独立),所述轨迹包括所述最近邻轨迹点以及与所述输入轨迹的轨迹点非近邻的轨迹点。

所述在一个最近邻轨迹上的最近邻轨迹点,包括在同一时间分区的最近邻轨迹点和不在同一分区的最近邻轨迹点。

其中,最近邻的轨迹点所在轨迹获取方式是:使用全局索引查询所述最近邻轨迹点所在的轨迹。

对任一最近邻轨迹的不在同一分区的最近邻轨迹点,将该轨迹上相邻两个最近邻轨迹点的时间戳相减获取一个时间段,将各所述时间段相加累计,得到该轨迹的第一时空伴随的累计时间,直到处理完输入轨迹的最后一个轨迹点;

对任一最近邻轨迹的在同一分区的最近邻轨迹点,要先计算出这几个最近邻轨迹点的中心点,并将各最近邻轨迹点与所述中心点的时间戳相减获取一个时间段,将各所述时间段相加累计,得到该轨迹的第二时空伴随的累计时间,直到处理完输入轨迹的最后一个轨迹点;

对于输入轨迹集,将其划分为若干轨迹点后,由于时空分区按照待筛选集的负载均衡划分,所以可能导致一个时间分区中存在同属于一条输入轨迹的若干轨迹点,如果大量聚集在一个时间分区,会导致计算量非常大,但累计时间是微量的。此时,需要筛选时空伴随者;

其中计算代替整个时空分区的多个轨迹点的多点的中心点的公式如下:

其中:

一条最近邻轨迹中有连续的n个在同一时间分区的最近邻轨迹点;

x

这样做的原因是轨迹集中的每条轨迹所包含的点数是不同的,对于点数较多的轨迹,相对来讲两点之间的时间间隔更小,即轨迹点数多的轨迹与轨迹点数少的轨迹在同等时间间隔中的点数相差较大。

进一步地,所述的DGRC索引和三维R树索引的建立方法具体为:

在每个时空分区中,首先构建局部三维R树索引,其中时间信息被认为是第三维。3D空间中的邻近对象在相同节点或邻近兄弟节点中聚集在一起。此外,它的树形层次结构使得从整体到局部的快速转换变得容易,这可以加速完整的3D空间查询。插入是R树生成的关键步骤,将新对象插入到R树中,形成R树的合理结构。插入包括两个重要的子操作:节点选择和节点分割。为了将一个对象插入到R树中,从根开始判断子树,直到叶节点为止。当新的对象需要插入叶节点,但此时造成节点溢出时,此节点必须进行分裂;

DGRC索引的目的是有效的获得交叉网格范围的最小数量,给定伴随分区中的一组对象,索引要尽量小,因为会广播到所有分区。在构造过程中使用总容器数进行辅助。总容器数提供了网络开销和结果精度之间的平衡。更大的意味着更高的下限,但是需要更多的网络数据传输。动态网格范围计数索引返回查询轨迹所属于的空间网格子集;

计算重叠时完整的面积不会是完整的粗粒度网格,需要累计细粒度网格,由于地理空间维度是连续的,使用等长的离散不相交的细粒度格子来近似表示空间信息,扩展网格边长即增加格子数目。对给定空间范围使用一个空间阈值进行扩展。进行数据分区时,需要找到与其拓展空间范围相交的时空分区,此时阈值的取值对查找过程起到重要作用。随着阈值的增加,查询系统的执行时间平滑地变大。

基于多级索引结构的大规模轨迹数据时空伴随者查询方法的具体方案为,首先对待筛选轨迹进行处理,对每条轨迹都需要构建索引,使用全局唯一的标识符映射此条轨迹,将该轨迹线划分为若干带有时间戳的轨迹点,每个轨迹点都带有原轨迹的标识符。对这些轨迹点,首先按照扫描线算法划分为α个时间分区,基于四叉树算法划分为β个空间分区,一共可以得到α×β个时空分区。然后将R中轨迹线划分为轨迹点,寻找该轨迹点所在的时空分区,进行第一轮局部连接,找到该轨迹点的拓展时空范围,时空范围是轨迹点的时空范围,该轨迹点及其最近邻的轨迹点的共同时空范围,是拓展时空范围(用时间分区和空间分区表示)。针对此拓展范围,所有与该轨迹点的时空分区有重叠的待检索数据集的轨迹的轨迹点的时空分区都是可能产生局部kNN结果的分区,为了细粒度的遍历待筛选的轨迹集,提高查询准确性。在这些有重叠的分区中执行局部kNN操作,每个分区都能得到输入轨迹的k个最近邻轨迹点(每个分区得到输入轨迹的至少一个最近邻轨迹点)。

设置一个优先队列,以所述轨迹到输入轨迹的距离远近为优先级,仅计算空间距离,距离近的优先级越高,最后以优先队列中的前k个作为r的最近邻筛选的全局结果参与时空伴随者的查询。

本发明考虑了轨迹数据集中轨迹数据分别在不同定位地点重叠网格中时间的累计情况,对所有待确定的数据分区,在这个步骤中,要将对象集分割成几个时空分区,其中不同分区中的对象数目几乎相同,以实现良好的负载平衡。进行第一轮局部连接。在这个步骤中,对于每个时空分区,需要构建两个局部索引,即动态网格范围计数索引和三维R树索引。本发明使用这两个索引,对于位于区中的每个轨迹,确定一个驻留满足其时空限制的区域。进行第二轮局部连接:检查所有与前一步中计算的面积重叠的时空分区。在每个满足条件的分区中(与该轨迹点的时空分区有重叠的待检索数据集的轨迹的轨迹点的时空分区),执行kNN搜索,生成一组局部结果。得到的这一组局部结果,即多个分区中的局部结果,将每条轨迹到输入轨迹的距离最近的k个kNN组合作为全局结果,进行输出。查询到距离该点最近的k个最近邻的轨迹点后,记录这些最近邻轨迹点所在的轨迹,并累加该时空分区的时间。当所有轨迹点查询完成后,输出累计时间超过时间阈值的若干轨迹作为输入轨迹的时空伴随者,即优先队列中的前几条轨迹。对输入轨迹中的每一条轨迹进行处理,使得每一条轨迹有一个在全局范围内唯一的标识符,同时对输入轨迹线进行处理,从中划分出的每一个点都具有与原轨迹相同的标识符,即对输入轨迹构建索引。并且通过该标识符,可以找到该轨迹点所在的轨迹线。在进行时空伴随者查询时,对所找到的最近邻,直接对其标识符进行时间累计。而在累计时间的优先队列中,每个元素包括两个指标,分别是轨迹的标识符与累计时间。当对轨迹中的每个轨迹点进行kNN 搜索完成后,对累计时间的优先队列进行处理。优先队列按照累计时间由长到短依次排列,输出累计时间超过14小时的标识符对应的轨迹,即为最终的时空伴随者查询结果。在时空伴随者查询中,需要向系统输入查询轨迹和待筛选轨迹。实验说明了系统的查询性能较好,证明了所设计的时空伴随者查询系统能满足查询需求。为确定最终的输出,需要设置两个优先队列,分别以搜索出查询轨迹的最近邻的距离与的累计时间为优先级。返回符合条件的索引,输出对应的轨迹作为系统的查询结果,完成时空伴随者查询操作。

本方法区别于已有方法的特色在于:

(1)本发明对轨迹数据进行分区划分,对数据进行时空分区时,使用扫描线算法,将所有的轨迹点划分为α个时间分区。α是一个实验中预设的参数,时空分区的划分对kNN的搜索有重要影响。首先,为了直观地减少数据的复制,时间分区的时间跨度不应该太小。第二,在进行局部连接的过程中将利用时间分区过滤掉不相关的对象。因此,为了确保良好的过滤能力,时间分区的时间跨度应该尽可能的小。第三,为了避免在接下来的连接过程中出现输入轨迹的复制,时间分区的时间跨度应该大于输入轨迹的扩展时间跨度。因此对于α的设置需要通过实验找到一个使系统效率最高的值。

(2)本发明在全局索引表示法的基础上建立了动态网格范围计数索引-三维R树索引二级索引机制,可以实现对轨迹数据的高效管理,提高数据的检索效率。对通过索引结构可以实现对查询轨迹进行两次局部连接筛选的操作,可以有效地减少备选轨迹集中轨迹的数量。基于样本数据构造一个全局索引,全局索引由时间分区的排序数组和空间分区的多个四叉树组成。具体来说,本发明遵循两轮连接框架。在第一轮连接中根据时空分布对对象进行划分,然后找到每个对象的距离界限,使得满足空间邻近性和时间并发性的最近邻居必须位于特定区域内。在第二轮连接中,首先执行一个局部连接来获得局部结果,然后将它们合并成一个全局结果。对于待筛选集中的轨迹都构建索引,使得进行查询时能对索引进行累计时间,减少存储空间,进而提高查询效率。

(3)本发明首次建立优先队列,以每个标识符的累计时间为优先级,初始化均为0。对这k个轨迹点进行处理,每个轨迹点所在的时空分区的时间作为增加的累计时间,对该轨迹点的标识符的累计时间进行修改,此时对该轨迹点的kNN搜索完成,之后对轨迹上的轨迹点依次进行同样的操作,直到轨迹线的最后一个点。同时要注意对于在同一时空分区的多个轨迹中的轨迹点,要使用中心点参与计算,以避免多次重复累计时间。基于四叉树算法将全局空间域划分为最多β个空间分区。和α一样,β也是一个系统参数。使用四叉树算法递归地将全局空间域划分为四个等大小的子区域。如果每个子区域对象超过最大值,则进一步分割。如果限制空间分区的最大数量β,则需确定一个合适的最大值。其被定义为空间划分中的平均样本数与至少其中一个子区域拥有超过k个满足的对象的样本数的最大值。如果轨迹的MBR相交多个子区域,它将被复制到所有相交的子区域。当对此条轨迹线上的每一个点都处理完成后,在以累计时间为优先级的队列中,累计时间超过14小时的标识符所对应的轨迹线即为所查询得到的时空伴随者,本发明使用索引输出对应的轨迹线作为最终的查询结果进行输出。系统成功运行后会输出成功文件以及整个系统运行所消耗的时间,作为系统性能评估指标。

与当前的轨迹数据处理系统相比,本发明的有益效果为:

(1)合理的设置分区的大小和操作分区,随着β的增加,时空分区变小,导致对象更容易与更多的时空分区相交,从而使数据的复制放大次数变多,进而导致执行时间增加。并且更小的时空分区也会导致轨迹数据中分配给同一时空分区的对象更少。这进一步导致了对象在第一轮连接中很难找到它们的最近邻,导致较低的命中率和轨迹较多的拷贝放大。通过实验调整分区的策略和相应的计算规则,从而减少计算开销,提高轨迹数据时空伴随者查询的效率。

(2)基于总容器数目的设置建立DGRC索引-三维R树索引二级索引,总容器数提供了网络开销和结果精度之间的平衡。更多的容器数意味着更高的下限,但是需要更多的网络数据传输。可以更好地对分布式系统架构进行数据管理,提高系统对轨迹数据的分析和管理能力。

(3)在搜索时空最近邻时,如果对在同一时空分区的多个点都进行搜索,则会累计多次时间。实际情况可能只是该轨迹线在这段时间里记录的轨迹点较多,但既然在同一时空分区说明相距的时间间隔较短。如果多次累计时间会造成误差较大,对时空伴随者查询的精确度影响较大。使用中心点代替该时空分区的所有点不仅算法设计更为简单,能提高系统的处理效率,同时在理论上会提高时空伴随者查询的精确度。

实施例2:在疫情背景下,对涉疫人员的轨迹进行排查,筛选出其的“时空伴随者”,从而进行分级分类的监测,可以降低疫情进一步扩散的风险,时空伴随者查询的需求也应运而生。在疫情防控中所谓的时空伴随者,通常指本人的电话号码与确诊号码在范围是800M*800M的同一时空网格共同停留时间超过10分钟,且最近14天任一方号码累计停留时长超过30小时以上,查出的号码为时空伴随号码。在大数据分析的范围下,汇总各类信息资源,“时空伴随”综合利用大数据,根据确诊病例的活动轨迹进行精准排查,全面梳理与确诊病例有轨迹重叠的人员,从而排查得出“时空伴随者”,进而对这些时空伴随者进行及时管控。

本实施例提供一种在基于上述场景的大规模轨迹数据时空伴随查询方法,属于基于多级索引结构的大规模轨迹数据相似性查询方法,可以具体实施为搭建在基于Spark平台上的轨迹数据处理系统。为更好地完成实施,本系统部署在具有三个节点的微型分布式集群上,使用的实验数据集是西安部分区域内专车和快车的原始轨迹数据。利用搭建后的分布式处理系统,完成大规模轨迹数据时空伴随者查询方法。在轨迹时空伴随者查询过程中分为索引建立阶段和轨迹时空伴随者查询阶段。

DGRC索引可以提供一个更精确的下界,从而帮助对象更容易地找到包含它们的kNN的时空分区,减少了数据的复制,更精确的下限也提高了命中率。对给定网格范围使用一个网格边长阈值进行扩展。对轨迹进行数据分区时,需要找到与其拓展网格范围相交的时空分区,此时阈值的取值对查找过程起到重要作用。直接决定与轨迹相交的时空分区数。轨迹的拓展时空范围增大使得与其有相交的时空分区数增多,进而使得在各分区进行局部KNN搜索的时间增加。并且当轨迹的命中率降低时,在进行第二轮局部连接时消耗的时间增加。在进行局部KNN搜索,以及将局部结果合并为全局结果时均需要使用参数k。随着k的增加,所有组合的执行时间都会线性增加。从理论上分析,k增加导致了对象在查找KNN时消耗更多的时间,在进行局部结果的合并时也会多消耗一些时间,并且也会导致较低的命中率和数据较多的拷贝放大。

一种基于多级索引结构的大规模轨迹数据时空伴随者查询方法,包括:

对包含GPS信息的大规模轨迹数据集进行轨迹数据预处理,对于预处理操作后得到的轨迹数据集按照负载均衡进行时空分区的划分,进行分区主要包括四步:采样,时间划分,空间划分和重新分配。在采样这一步中,从数据集中取一组随机样本,采样率为1%。使用四叉树算法将全局空间域划分为最多β个空间分区。之后,最多得到α×β个时空分区。每个时空分区被绑定到一个时间范围和一个MBR。如果轨迹的时间范围和几何区域都与一个时空分区的时间范围和几何区域相交,该时空分区的标识符将被绑定到该条轨迹。之后,数据集根据有界标识符重新分区。

构建一个全局索引,其中时间范围被组织为一个排序数组,MBR被组织为一个四叉树。全局索引被广播到S的所有部分;构建两个局部索引,查找输入轨迹的拓展时空范围,在每个时空分区中构建一个DGRC索引,对于任一输入轨迹,使用全局索引找到一组与轨迹的拓展时间范围相交的时间分区,每个时间分区中,使用全局索引和DGRC索引找到待筛选集中的第一空间分区,所述空间分区是至少有k个满足条件的最近邻对象的空间分区,把所述第一空间分区它的标识符赋予所述第一空间分区中的轨迹,然后将所述第一空间分区的标识符形成有界标识符,根据有界标识符重新分区。将具有所述第一空间分区标识符的所述轨迹赋给在待筛选集中至少有k个满足条件的最近邻对象的第二时空分区,可以保证在这个第二时空分区中轨迹与任意kNN连接的距离小于界限;

在相交的所述第二时空分区中进行局部kNN搜索:在每个第二时空分区中,首先构建局部三维R树索引,其中时间信息被认为是第三维。对于第二时空分区中的每条轨迹,使用构建的局部三维R树索引,生成一个按第二时空分区中的每条轨迹到输入轨迹的距离排序的局部结果,并将结果缓存起来。

对于第二时空分区中的每条轨迹,使用构建的局部三维R树索引,生成一个按第二时空分区中的每条轨迹到输入轨迹的距离排序的局部结果,并将结果缓存起来,但是,当轨迹和三维R树节点之间的距离大于界限时,立即终止kNN搜索。

在第二轮局部连接这个步骤中,对于每条轨迹,需要检查所有可能产生kNN的时空分区,并生成局部结果。与第一轮局部连接不同的是,利用距离界限可以进一步优化搜索过程,即当轨迹和三维R树节点之间的距离大于界限时,可以立即终止kNN搜索;

将多个局部kNN结果合并为一个全局结果。为了减少网络传输开销,本方法在重新分区之前重新移除重复数据。在两轮局部连接之后,考虑在第一轮局部连接中产生的局部结果,在每个时空分区中获得轨迹的一个单独的局部kNN结果。洗牌局部结果,其中相同的局部结果被重新分区到同一个新的第二时空分区;删除重复,因为一个对象可以被分配到多个时空分区,所以在不同的局部结果中可能有重复kNN组合,删除不同的局部结果中重复的kNN组合;使用多路合并算法将局部结果合并成全局结果;删除重复,因为一个对象可以被分配到多个时空分区,所以在不同的局部结果中可能有的重复组合。在查询的时候将第一个kNN组合作为最终的查询结果。

根据上述实施例记载,得到累计时间,建立一个优先队列,输出累计时间超过时间阈值的若干轨迹作为输入轨迹的时空伴随者。

以所述全局结果的轨迹点建立一个优先队列,以所述轨迹点到输入轨迹的轨迹点的距离远近为优先级,仅计算空间距离,距离近的优先级越高,最后以输入轨迹点最近邻筛选的全局结果的前k个轨迹点作为优先队列中的在空间分区最近邻轨迹点。

对于轨迹使用索引代表,每条轨迹对应一个全局唯一的标识符。

在进行数据处理时,使用索引而非原数据。同时累计数据需要开辟一片新的区域进行计数,设置优先队列,按照累计时间的长短进行排序,输出满足条件的前几个,实现时空伴随者查询的系统优化。

系统建立索引的具体实施,包括:

对包含GPS信息的大规模轨迹数据集进行轨迹数据预处理,对于预处理操作后得到的轨迹数据集按照负载均衡进行时空分区的划分。进行分区主要包括四步:采样,时间划分,空间划分和重新分配。在采样这一步中,从数据集中取一组随机样本。使用四叉树算法将全局空间域划分为最多β个空间分区。每个时空分区被绑定到一个时间范围和一个MBR;

系统根据步骤1中返回的有界标识符重新分区。如果轨迹的时间范围和几何区域都与一个时空分区的时间范围和几何区域相交,该时空分区的标识符将被绑定到该条轨迹,划分分区的具体方法为:

每一个三维立方体即为一个时空分区,将待筛选集进行时空分区。其中不同分区中的对象数目几乎相同,以实现良好的负载平衡,对于实现分布式并行操作也是必要的;

由于时间划分使用扫描线算法,所以保证每个时空范围的轨迹点基本保持数量相同,即每一层的轨迹点数基本相同。基于四叉树算法划分空间分区,保证每一条立方体中轨迹点数基本相同。由于轨迹按照时间顺序延伸,所以从空间上看,每条轨迹上的轨迹点在时间轴方向逐渐向上发展;

针对所查询的输入轨迹,首先将其划分为若干个轨迹点,对每一个轨迹点所在的时空分区,使用kNN搜索最近邻,但最近邻与该点并不一定在同一时空分区,即不一定在同一立方体中。搜索到最近邻后,使用索引查询该轨迹点所在的轨迹,对该轨迹累计时间,时间为该最近邻所在时空分区的时间,直到处理完最后一个轨迹点;

参与时空伴随者查询的轨迹线仅有开始时间与结束时间,为了实现查询,按照匀速运动为轨迹线上每一个轨迹点创建时间戳,使得每条轨迹中每个轨迹点为定义的元组。但为了进行累计时间,需要对每个轨迹点分配与其原轨迹相同的标识符。由此可将每一条轨迹划分为诸多轨迹点,从而进行kNN处理;

对于输入轨迹集,将其划分为若干轨迹点后,由于时空分区按照待筛选集的负载均衡划分,所以可能导致一个时空分区中存在同属于一条轨迹的若干点。此时,需要筛选时空伴随者;

其中计算代替整个时空分区的多个轨迹点的多点的中心点的公式如下:

其中:

一条轨迹中有连续的n个轨迹点;

x

构建一个全局索引,其中时间范围被组织为一个排序数组,MBR被组织为一个四叉树。全局索引被广播到S的所有部分;构建两个局部索引,查找输入轨迹的拓展时空范围,在每个时空分区中构建一个DGRC索引,对于每个轨迹对象,使用全局索引找到一组与轨迹的拓展时间范围相交的时间分区,每个时间分区中,使用全局索引和DGRC索引找到待筛选集中至少有k个满足条件的对象(即时间范围与轨迹的拓展时间范围相交)的距离的最近的空间分区,选择其中最近的一个,并把它的标识符赋予轨迹,然后根据有界标识符重新分区。

在轨迹时空伴随者阶段,系统会根据输入的查询轨迹,返回符合条件的相时空伴随者查询结果,具体实施包括:

向系统输入查询轨迹,查询轨迹的格式为一系列具有GPS点的轨迹数据。通过给定查询轨迹,系统使用离线建立的多级索引结构对轨迹数据集进行筛选。

系统对时空伴随者的判断要求两者在同一区域共同存在的时间超过14小时。因此在搜索时空伴随者的时候,需要限制一定的时间范围。对于待筛选轨迹集S的处理,对每条轨迹构建索引,并且需要对其上的每个点分配该轨迹的标识符,然后按照扫描线算法划分为α个时间分区,基于四叉树算法划分为β个空间分区,将所有S中的点划分到这α×β个分区中。

对输入轨迹上的轨迹点进行查询,找到所在的时空分区后,使用时间阈值δ进行拓展,在与其相交的时空分区中进行最近邻搜索,生成局部结果,设置优先队列输出k个全局结果。对筛选出的结果对应的轨迹进行时间的累积,设置优先队列输出累计时间大于14小时的轨迹。

对于步骤3中得到的备选轨迹集,系统会返回完整轨迹,将轨迹赋给在待筛选集中至少有 k个满足的对象的时空分区,可以保证在这个时空分区中计算距离界限,使得轨迹与任意kNN连接的距离小于界限,即完成时空伴随者的查询。返回符合查询条件的轨迹数据。同时系统也会返回整个时空伴随者查询过程的时间,作为性能比较的依据。

通过本发明的实施方案,对百万条轨迹数据进行的轨迹时空伴随者查询操作,系统花费的查询时间为10~15ms,相比于其他现有的时空伴随者查询方法,所用时间更短、效率更高。对系统参数进行了大量实验,确定参数对实验性能的影响,并分析了产生变化的原因。实验结果表明,通过本方法建立的全局索引-动态网格范围计数索引-三维R树索引的多级索引结构实现对轨迹数据时空累计范围筛选,可以有效地提高筛选的性能,大大减少轨迹时空伴随分区计算带来的时间开销,从而达到提高轨迹时空伴随者查询的效率。

本发明上述方案具有如下效果:

(1)合理的设置分区的大小和操作分区,随着β的增加,时空分区变小,导致对象更容易与更多的时空分区相交,从而使数据的复制放大次数变多,进而导致执行时间增加。并且更小的时空分区也会导致轨迹数据中分配给同一时空分区的对象更少。这进一步导致了对象在第一轮连接中很难找到它们的最近邻,导致较低的命中率和轨迹较多的拷贝放大。通过实验调整分区的策略和相应的计算规则,从而减少计算开销,提高轨迹数据时空伴随者查询的效率。

(2)基于总容器数目的设置建立DGRC索引-三维R树索引二级索引,总容器数提供了网络开销和结果精度之间的平衡。更多的容器数意味着更高的下限,但是需要更多的网络数据传输。可以更好地对分布式系统架构进行数据管理,提高系统对轨迹数据的分析和管理能力。

(3)在搜索时空最近邻时,如果对在同一时空分区的多个点都进行搜索,则会累计多次时间。实际情况可能只是该轨迹线在这段时间里记录的轨迹点较多,但既然在同一时空分区说明相距的时间间隔较短。如果多次累计时间会造成误差较大,对时空伴随者查询的精确度影响较大。使用中心点代替该时空分区的所有点不仅算法设计更为简单,能提高系统的处理效率,同时在理论上会提高时空伴随者查询的精确度。

基于以上实施例,本申请实施例还提供了一种计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行以上实施例提供的共享数据分发方法。

基于以上实施例,本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有计算机程序,所述计算机程序被计算机执行时,使得计算机执行以上实施例提供的共享数据分发方法。

其中、存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。

基于以上实施例,本申请实施例还提供了一种芯片,所述芯片用于读取存储器中存储的计算机程序,实现以上实施例提供的共享数据分发方法。

基于以上实施例,本申请实施例提供了一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,实现以上实施例提供的共享数据分发方法。

本领域内的技术人员应明白,本申请的实施例可提供为方法,系统,或计算机程序产品。因此,本申请可采用完全硬件实施例,完全软件实施例,或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法,设备,和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框,以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

相关技术
  • 大规模轨迹数据模拟流感时空传播过程的方法及系统
  • 基于大规模轨迹数据的通用伴随模式分布式挖掘方法
技术分类

06120115585777