一种城市路网车辆出行轨迹的检索方法及系统
技术领域
本发明涉及大数据管理
技术领域
,特别是涉及一种城市路网车辆出行轨迹的检索方法及系统。背景技术
城市路网车辆出行轨迹数据是一种多维度数据,且数据量庞大,在轨迹数据的检索过程中,HBase数据库仅凭RowKey设计原则难以维持车辆轨迹数据检索的要求,存在数据存储分布不均、检索效率低的问题。对此,现有技术提出了以下几种方案:(1)将网络对象空间关系和Hilbert(希尔伯特)分层代码合并到多层网络,这种方法提高了空间检索效率,但是需预设空间范围,这会导致索引结构的不平衡,并且这种方法的检索对象仅适用于点对象。(2)利用Z曲线对数据进行聚类,然后基于聚类结果,将HBase数据库用作时空关联算法的整体检索结构。这种方法具有高实时性和高动态性,但索引效率低。(3)基于四叉树和3DR树构建双层结构的分布式时空索引,能持久化支持磁盘子树动态加载进而提高查询效率,但存储成本高。
因此,目前亟需一种存储分布均匀、检索效率高且存储成本低的数据检索技术。
发明内容
本发明的目的是提供一种城市路网车辆出行轨迹的检索方法及系统,具有存储分布均匀、检索效率高且存储成本低的优点。
为实现上述目的,本发明提供了如下方案:
一种城市路网车辆出行轨迹的检索方法,包括:
获取城市路网车辆出行轨迹数据,构建时空数据集;
根据所述时空数据集,构建并存储Hilbert-DR树;
输入检索条件,根据所述检索条件,遍历所述Hilbert-DR树,确定与所述检索条件对应的城市路网车辆出行轨迹数据集。
可选的,所述根据所述时空数据集,构建并存储Hilbert-DR树,具体包括:
按照时间段对所述时空数据集进行分片,得到多个分片数据集;
令i的数值为1;
分别将多个所述分片数据集作为多个第i级中间节点的对应簇集;
对每个所述第i级间节点的对应簇集采用k-means聚类算法进行聚类处理,获得每个第i级中间节点的多个包含簇集;
分别判断每个第i级中间节点的每个包含簇集是否满足叶子节点生成条件;所述叶子节点生成条件为所述包含簇集内的数据个数小于节点容量阈值;
将满足叶子节点生成条件的包含簇集作为满足叶子节点生成条件的所述包含簇集所在的第i级中间节点的叶子节点;
将不满足叶子节点生成条件的包含簇集作为不满足叶子节点生成条件的所述包含簇集所在的第i级中间节点下的第i+1级中间节点的对应簇集;
令i的数值增加1,返回步骤“对每个所述第i级间节点的对应簇集采用k-means聚类算法进行聚类处理,获得每个第i级中间节点的多个包含簇集”,直到每个包含簇集均满足叶子节点生成条件,得到Hilbert-DR树。
可选的,在按照时间段对所述时空数据集进行分片,得到多个分片数据集之后,还包括:
对各所述分片数据集内的数据均进行Hilbert编码,得到多个编码后的分片数据集。
可选的,所述对每个所述第i级间节点的对应簇集采用k-means聚类算法进行聚类处理,获得每个第i级中间节点的多个包含簇集,具体包括:
确定第n个第i级间节点的对应簇集的多个聚类中心;n=1,2,...,N;N为编码后的分片数据集的数量;
计算所述第n个第i级间节点的对应簇集内的数据分别与每个聚类中心的欧式距离;
根据所述欧式距离,将所述第n个所述第i级间节点的对应簇集内的数据分配到与最小欧式距离对应聚类中心对应的簇;
计算数据分配后每个簇的聚类中心改变量;
更新聚类中心改变量大于或者等于改变量阈值的簇的聚类中心,并返回步骤“计算所述第n个编码后的分片数据集内的数据分别与每个聚类中心的欧式距离”,直至所有所述聚类中心改变量均小于改变量阈值,得到多个包含簇集。
可选的,所述欧式距离的计算公式为:
式中,为第i个样本点ti到第j个聚类中心oj的欧式距离,ti为第i个样本点,oj为第j个聚类中心,m为样本点特征向量的维度,tiz为第i个样本点特征向量的第z个维度,ojz为第j个聚类中心特征向量的第z个维度。
可选的,所述聚类中心改变量的计算公式为:
式中,ωc为第c次迭代的聚类中心改变量,Tc,i为第c次迭代时的第i个簇,Tc-1,i为第c-1次迭代时的第i个簇,|Ti|为第i个簇中的数据个数,tj为第j个样本点。
一种城市路网车辆出行轨迹的检索系统,包括:
时空数据集构建模块,用于获取城市路网车辆出行轨迹数据,构建时空数据集;
Hilbert-DR树构建模块,用于根据所述时空数据集,构建并存储Hilbert-DR树;
检索模块,用于输入检索条件,根据所述检索条件,遍历所述Hilbert-DR树,确定与所述检索条件对应的城市路网车辆出行轨迹数据集。
可选的,所述Hilbert-DR树构建模块,具体包括:
分片数据集确定单元,用于按照时间段对所述时空数据集进行分片,得到多个分片数据集;
赋值单元,用于令i的数值为1;
对应簇集确定单元,用于分别将多个所述分片数据集作为多个第i级中间节点的对应簇集;
包含簇集确定单元,用于对每个所述第i级间节点的对应簇集采用k-means聚类算法进行聚类处理,获得每个第i级中间节点的多个包含簇集;
第一判断单元,用于分别判断每个第i级中间节点的每个包含簇集是否满足叶子节点生成条件;所述叶子节点生成条件为所述包含簇集内的数据个数小于节点容量阈值;
叶子节点生成单元,用于将满足叶子节点生成条件的包含簇集作为满足叶子节点生成条件的所述包含簇集所在的第i级中间节点的叶子节点;
中间节点生成单元,用于将不满足叶子节点生成条件的包含簇集作为不满足叶子节点生成条件的所述包含簇集所在的第i级中间节点下的第i+1级中间节点的对应簇集;
Hilbert-DR树确定单元,用于令i的数值增加1,返回步骤“对每个所述第i级间节点的对应簇集采用k-means聚类算法进行聚类处理,获得每个第i级中间节点的多个包含簇集”,直到每个包含簇集均满足叶子节点生成条件,得到Hilbert-DR树。
可选的,所述Hilbert-DR树构建模块,还包括:
Hilbert编码单元,用于对各所述分片数据集内的数据均进行Hilbert编码,得到多个编码后的分片数据集。
可选的,所述包含簇集确定单元,具体包括:
聚类中心确定子单元,用于确定第n个第i级间节点的对应簇集的多个聚类中心;n=1,2,...,N;N为编码后的分片数据集的数量;
欧式距离计算子单元,用于计算所述第n个第i级间节点的对应簇集内的数据分别与每个聚类中心的欧式距离;
数据分配子单元,用于根据所述欧式距离,将所述第n个所述第i级间节点的对应簇集内的数据分配到与最小欧式距离对应聚类中心对应的簇;
聚类中心改变量计算子单元,用于计算数据分配后每个簇的聚类中心改变量;
包含簇集确定子单元,用于更新聚类中心改变量大于或者等于改变量阈值的簇的聚类中心,并返回步骤“计算所述第n个编码后的分片数据集内的数据分别与每个聚类中心的欧式距离”,直至所有所述聚类中心改变量均小于改变量阈值,得到多个包含簇集。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明公开了一种城市路网车辆出行轨迹的检索方法及系统,方法包括:获取城市路网车辆出行轨迹数据,构建时空数据集;根据时空数据集,构建并存储Hilbert-DR树;输入检索条件,根据检索条件,遍历Hilbert-DR树,确定与检索条件对应的城市路网车辆出行轨迹数据集。本发明的目的是提供一种城市路网车辆出行轨迹的检索方法及系统,具有存储分布均匀、检索效率高且存储成本低的优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的城市路网车辆出行轨迹的检索方法流程图;
图2为本发明实施例所提供的城市路网车辆出行轨迹数据多维空间图;
图3为本发明实施例所提供1阶Hilbert编码图;
图4为本发明实施例所提供2阶Hilbert编码图;
图5为本发明实施例所提供3阶Hilbert编码图;
图6为本发明实施例所提供的城市路网车辆出行轨迹每日数据分布图;
图7为本发明实施例所提供的Hilbert-DR树结构示意图;
图8为本发明实施例所提供的城市路网车辆出行轨迹的检索系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种城市路网车辆出行轨迹的检索方法及系统,具有存储分布均匀、检索效率高且存储成本低的优点。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明实施例所提供的城市路网车辆出行轨迹的检索方法流程图,如图1所示,本发明提供了一种城市路网车辆出行轨迹的检索方法,包括:
步骤101:获取城市路网车辆出行轨迹数据,构建时空数据集;
步骤102:根据时空数据集,构建并存储Hilbert-DR树;
步骤103:输入检索条件,根据检索条件,遍历Hilbert-DR树,确定与检索条件对应的城市路网车辆出行轨迹数据集。
具体的,步骤102,具体包括:
按照时间段对时空数据集进行分片,得到多个分片数据集;
令i的数值为1;
分别将多个分片数据集作为多个第i级中间节点的对应簇集;
对每个第i级间节点的对应簇集采用k-means聚类算法进行聚类处理,获得每个第i级中间节点的多个包含簇集;
分别判断每个第i级中间节点的每个包含簇集是否满足叶子节点生成条件;叶子节点生成条件为包含簇集内的数据个数小于节点容量阈值;
将满足叶子节点生成条件的包含簇集作为满足叶子节点生成条件的包含簇集所在的第i级中间节点的叶子节点;
将不满足叶子节点生成条件的包含簇集作为不满足叶子节点生成条件的包含簇集所在的第i级中间节点下的第i+1级中间节点的对应簇集;
令i的数值增加1,返回步骤“对每个第i级间节点的对应簇集采用k-means聚类算法进行聚类处理,获得每个第i级中间节点的多个包含簇集”,直到每个包含簇集均满足叶子节点生成条件,得到Hilbert-DR树。
具体的,本发明在按照时间段对时空数据集进行分片,得到多个分片数据集之后,还包括:对各分片数据集内的数据均进行Hilbert编码,得到多个编码后的分片数据集。
此外,本发明中,对每个第i级间节点的对应簇集采用k-means聚类算法进行聚类处理,获得每个第i级中间节点的多个包含簇集,具体包括:
确定第n个第i级间节点的对应簇集的多个聚类中心;n=1,2,...,N;N为编码后的分片数据集的数量;
计算第n个第i级间节点的对应簇集内的数据分别与每个聚类中心的欧式距离;
根据欧式距离,将第n个第i级间节点的对应簇集内的数据分配到与最小欧式距离对应聚类中心对应的簇;
计算数据分配后每个簇的聚类中心改变量;
更新聚类中心改变量大于或者等于改变量阈值的簇的聚类中心,并返回步骤“计算第n个编码后的分片数据集内的数据分别与每个聚类中心的欧式距离”,直至所有聚类中心改变量均小于改变量阈值,得到多个包含簇集。
其中,欧式距离的计算公式为:
式中,为第i个样本点ti到第j个聚类中心oj的欧式距离,ti为第i个样本点,oj为第j个聚类中心,m为样本点特征向量的维度,tiz为第i个样本点特征向量的第z个维度,ojz为第j个聚类中心特征向量的第z个维度。
聚类中心改变量的计算公式为:
式中,ωc为第c次迭代的聚类中心改变量,Tc,i为第c次迭代时的第i个簇,Tc-1,i为第c-1次迭代时的第i个簇,|Ti|为第i个簇中的数据个数,tj为第j个样本点。
具体的,本发明提供的城市路网车辆出行轨迹的检索方法,具体包括如下步骤:
步骤1,搜集北方某市2018年10月-11月的浮动车GPS轨迹数据,轨迹数据仅包含车辆ID、时间、经纬度等参数,数据的采集时间间隔为10秒。
步骤2,将步骤1中的数据进行数据清理,删除掉原始数据中车辆ID、经纬度相同但时间不同的记录,以及不符合轨迹数据的连续性(单独轨迹点偏移过大)的数据。
步骤3:将时空数据结构划分为:按时间分片部分和通过聚类的空间部分。图6为本发明实施例所提供的城市路网车辆出行轨迹每日数据分布图,图中,横坐标表示时间段,纵坐标表示车辆轨迹数据量,如图6所示,00:00:00~07:59:59时段的道路通行车辆少,因此将这时段的数据单独分片,剩下的数据以每一小时进行一次分片,完成对数据时间上的划分。
步骤4,图2为本发明实施例所提供的城市路网车辆出行轨迹数据多维空间图;其中,t、x、x为空间的三个坐标,t1-t8为时间。如图2所示,步骤2中的轨迹数据具有时空特性,是三维的数据,由二维轨迹点(x,y)与一维时间(t)组成,而城市路网车辆出行轨迹数据的维数越高,检索效率就越低。因此,利用空间填充曲线将每一片中的高维空间数据转换到一维连续空间。
具体的,将城市路网车辆出行轨迹数据进行Hilbert编码,得到Hilbert曲线。Hilbert曲线是步骤3中提到的空间填充曲线的一种,图3为本发明实施例所提供1阶Hilbert编码图;图4为本发明实施例所提供2阶Hilbert编码图;图5为本发明实施例所提供3阶Hilbert编码图;如图3-5所示,Hilbert曲线,把一个正方形空间不断分成4个子空间,再把小正方形空间的中心点相连接,就得到了一维连续空间曲线,多阶的Hilbert曲线具备更优的空间聚类效果。
步骤5,由于R树在空间数据索引构件中,常常产生大量的重叠与死空间,于是考虑与聚类算法相结合,将步骤5中相邻的数据存储在同一子树下,从而减少空间数据存储的冗余以及I/O寻道时间。
具体的,使用k-means聚类算法,对分片后的数据分别进行聚类处理,完成对数据空间上的划分。
以单片数据为例,聚类算法如下:
1、初始簇的聚类中心,按欧氏距离原则将数据分配到到最邻近的簇内,得到多个簇。
为了减少聚类后的重叠问题,使其有更好的聚类效果,本文取绝对误差作为聚类的测度函数,其作用是在聚类划分的迭代中,直到聚类测度函数值收敛,此时就确定了聚类数k值。
2、分别计算迭代过程中新聚类中心点on(Ti)和原聚类中心点ol(Ti)所造成的绝对误差(聚类中心改变量)。
式中,ωc为第c次迭代的聚类中心改变量,Tc,i为第c次迭代时的第i个簇,Tc-1,i为第c-1次迭代时的第i个簇,|Ti|为第i个簇中的数据个数。
3、将小于改变量阈值的聚类中心改变量对应的簇中数据从样本集中去除。
大于或等于改变量阈值的聚类中心改变量对应的簇中,将新聚类中心点on(Ti)作为聚类中心并重复步骤1-3,直至该片数据全部分配到K个簇中。
步骤6,判断每个簇中的数据是否大于节点容量阈值M,
若否,则根据该簇位置生成Hilbert-DR树的叶子节点。
若是,则根据该簇位置生成中间节点,并将该簇数据作为新的聚类对象,调用动态聚类算法对该簇数据的Hilbert值进行聚类,在该中间节点下生成叶子结点或中间节点,直至产生的簇中的数据均小于M,生成Hilbert-DR树。Hilbert-DR树具有中间节点与叶节点两种节点结构,按HBase数据库的的存储方式对时空数据进行存储,形成一种分层分级索引机制,Hilbert-DR树具体结构如图7所示。图中,t1-tn为时间,m1-m9为叶子结点处储存的数据集。
采用HBase数据库对第一层的车辆轨迹数据集中唯一对应的时间值进行组织,访问对应数据集,最后将Hilbert-DR树的中间节点信息利用HBase进行组织,用于存放叶子节点处数据的最大Hilbert值,实现索引的存储结构,保存数据集的时间属性。
通过上述步骤将空间聚类与数据集的时间属性相结合,建立了Hilbert-DR树的分层分级索引架构,将此分层分级索引架构应用到车辆出行轨迹的检索中。先通过时间索引查找时间分片,确定该时间片空间聚类信息,随后利用高效Hilbert-DR树定位到目标对象。
本发明提供的城市路网车辆出行轨迹的检索方法,分片是对数据时间上的分类,聚类是基于二维坐标(空间上)的聚类,目的是将相邻的点归在一簇上,对这些簇进行Hilbert编码,用MBR(最小外包矩形,Minimum Bounding Rectangle)近似地表示跟各个簇,并将MBR升序排序,对编码后的簇再进行聚类,使得二维坐标相邻数据也存储在相近的位置,使得数据存储分布均匀,提高了检索效率;同时减少了节点数量,降低了存储成本。
图8为本发明实施例所提供的城市路网车辆出行轨迹的检索系统的结构示意图,如图8所示,本发明提供了一种城市路网车辆出行轨迹的检索系统,包括:
时空数据集构建模块801,用于获取城市路网车辆出行轨迹数据,构建时空数据集;
Hilbert-DR树构建模块802,用于根据时空数据集,构建并存储Hilbert-DR树;
检索模块803,用于输入检索条件,根据检索条件,遍历Hilbert-DR树,确定与检索条件对应的城市路网车辆出行轨迹数据集。
Hilbert-DR树构建模块802,具体包括:
分片数据集确定单元,用于按照时间段对时空数据集进行分片,得到多个分片数据集;
赋值单元,用于令i的数值为1;
对应簇集确定单元,用于分别将多个分片数据集作为多个第i级中间节点的对应簇集;
包含簇集确定单元,用于对每个第i级间节点的对应簇集采用k-means聚类算法进行聚类处理,获得每个第i级中间节点的多个包含簇集;
第一判断单元,用于分别判断每个第i级中间节点的每个包含簇集是否满足叶子节点生成条件;叶子节点生成条件为包含簇集内的数据个数小于节点容量阈值;
叶子节点生成单元,用于将满足叶子节点生成条件的包含簇集作为满足叶子节点生成条件的包含簇集所在的第i级中间节点的叶子节点;
中间节点生成单元,用于将不满足叶子节点生成条件的包含簇集作为不满足叶子节点生成条件的包含簇集所在的第i级中间节点下的第i+1级中间节点的对应簇集;
Hilbert-DR树确定单元,用于令i的数值增加1,返回步骤“对每个第i级间节点的对应簇集采用k-means聚类算法进行聚类处理,获得每个第i级中间节点的多个包含簇集”,直到每个包含簇集均满足叶子节点生成条件,得到Hilbert-DR树。
Hilbert-DR树构建模块,还包括:Hilbert编码单元,用于对各分片数据集内的数据均进行Hilbert编码,得到多个编码后的分片数据集。
其中,包含簇集确定单元,具体包括:
聚类中心确定子单元,用于确定第n个第i级间节点的对应簇集的多个聚类中心;n=1,2,...,N;N为编码后的分片数据集的数量;
欧式距离计算子单元,用于计算第n个第i级间节点的对应簇集内的数据分别与每个聚类中心的欧式距离;
数据分配子单元,用于根据欧式距离,将第n个第i级间节点的对应簇集内的数据分配到与最小欧式距离对应聚类中心对应的簇;
聚类中心改变量计算子单元,用于计算数据分配后每个簇的聚类中心改变量;
包含簇集确定子单元,用于更新聚类中心改变量大于或者等于改变量阈值的簇的聚类中心,并返回步骤“计算第n个编码后的分片数据集内的数据分别与每个聚类中心的欧式距离”,直至所有聚类中心改变量均小于改变量阈值,得到多个包含簇集。
具体的,欧式距离的计算公式为:
式中,为第i个样本点ti到第j个聚类中心oj的欧式距离,ti为第i个样本点,oj为第j个聚类中心,m为样本点特征向量的维度,tiz为第i个样本点特征向量的第z个维度,ojz为第j个聚类中心特征向量的第z个维度。
聚类中心改变量的计算公式为:
式中,ωc为第c次迭代的聚类中心改变量,Tc,i为第c次迭代时的第i个簇,Tc-1,i为第c-1次迭代时的第i个簇,|Ti|为第i个簇中的数据个数,tj为第j个样本点。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。