当前位置: 首页 > 专利查询>长安大学专利>正文

一种基于路段密度的地图网格划分方法技术

技术编号:21771661 阅读:35 留言:0更新日期:2019-08-03 21:33
本发明专利技术涉及地图匹配领域,具体涉及一种基于路段密度来划分地图网格的方法,该方法在道路密度不同的地区划分不同大小的网格,保证每个网格内的路段数量有一定的上限,使得每个网格内的路段数量相接近,每个网格内路段数据与全部网格中路段数据的均值相差较小,全部网格中路段数据的方差较小,在大规模路段数据进行搜索时,有很好的负载均衡。本发明专利技术基于路段密度划分网格,路段密集的地方网格划分的多且小,路段稀疏的地方网格划分的少且大,网格内路段数量有上限,遍历一个网格内的路段数据更加快捷。适用于采用网格法构建数字地图的软件设计,在地图匹配领域有重要的应用价值。

A Method of Map Mesh Generation Based on Section Density

【技术实现步骤摘要】
一种基于路段密度的地图网格划分方法
本专利技术涉及地图匹配领域,具体涉及一种基于路段密度来划分地图网格的方法。
技术介绍
数字地图基于网格的划分,就是将大比例尺的地图,根据不同的地理环境、城市属性用更小的网格来划分。现有的数字地图网格划分方法通常是以等面积的网格来划分的,即每个网格的长、宽相同,这种网格的长、宽划分通常是根据数字地图的制作人员的经验来划分的,这种划分方法划分出来的网格里面的路段数量差异非常大,对于那些路段稀疏的地区,网格里面包含的路段数量非常少,甚至有的网格里面没有路段数据,而对于路段密集的地区,网格里面包含的路段数量非常多。对于在那些路段密集的网格内进行复杂的操作时会极大的降低处理的效率。
技术实现思路
针对现有技术中存在的均匀划分网格使得网格内路段数量有极大的差异,从而导致地图匹配时处理效率低下的问题,本专利技术提供了一种基于路段密度来划分地图网格的方法,采用以下技术方案实现:一种基于路段密度划分地图网格的方法,包括如下步骤:步骤1:获得所有路段的路段数据,在地图上得到能包含所有路段数据的外包矩形,将能包含所有路段数据的外包矩形设置为根节点,所述根节点为最大的网格;步骤2:设置所划分网格中的路段数目最大值MaxNumber,将步骤1中所有的路段数据分别作为节点,逐个插入根节点中,对于插入的每个路段数据有如下判断:若插入当前的路段数据后,该路段数据所属网格中的路段数目不大于MaxNumber,则继续插入下一路段数据;若插入当前的路段数据后,该路段数据所属网格中的路段数目大于MaxNumber,则对所属网格利用网格分割方法进行分割,使得分割后的每个网格都满足网格中的路段数目不大于MaxNumber,然后继续插入下一路段数据;步骤3:判断步骤1中所有路段数据是否全部使用完毕,若全部使用完毕则网格构建完毕,若还有路段数据剩余则继续执行步骤2。进一步的,所述节点包含以下属性:外包矩形左下角坐标、外包矩形右上角坐标、父亲节点、孩子节点序列、原始路段数据、是否包含原始路段数据的标签Flag,其中,当Flag的值为“True”时表示该节点只包含原始路段数据,当Flag的值为“Flase”时表示该节点包含网格且网格内包含原始路段数据。更进一步的,所述步骤2包括如下子步骤:步骤2.1:从步骤1中所有的路段数据中随机抽取一条路段数据,以这条路段数据创建节点Node1,根据Node1的原始路段数据得到该路段两个端点,以这两个端点构建线段line1,并创建存储Node型数据的列表List;步骤2.2:创建节点CurrentNode,将根节点赋值给CurrentNode,判断CurrentNode节点的外包矩形与步骤2.1中Node1的外包矩形是否相交,若相交则进一步判断CurrentNode节点的Flag值,若Flag值为True,则将CurrentNode节点添加进所述List中,并执行步骤2.3;若Flag值为Flase,将CurrentNode节点的孩子节点依次赋值给CurrentNode,并返回执行步骤2.2;步骤2.3:判断List列表是否为空,若List列表为空则执行步骤2.1,若List列表不为空,则从步骤2.1构建的List中取出第一个元素记为Node2,并将List中的第一个元素删除,计算Node2构成的矩形和line1相交部分记为线段line2,将line2插入到Node2的孩子节点序列中,执行步骤2.4;步骤2.4:判断Node2的孩子节点数量是否大于MaxNumber,所述Node2的孩子节点序列的孩子数量等于Node2所对应网格的路段数量,若不大于MaxNumber则继续执行步骤2.3,若是大于MaxNumber则利用网格分割方法进行分割,直至插入最后一个路段数据。更进一步的,步骤2.4中Node2的孩子节点数量若是大于MaxNumber,则所述网格分割方法包括如下步骤:步骤2.4.1:将Node2的所有孩子节点利用计算Hausdorff距离的方式进行分配,直到Node2的所有孩子节点都分配到新构建的两个列表List1和List2中;步骤2.4.2:分别计算两个列表内所有节点的外包矩形,然后依次遍历两个列表中所有的外包矩形的左下角端点和右上角端点的经纬度坐标,分别向坐标轴作垂线,获得能将List1中的所有元素和List2中的所有元素分别列在两侧且与外包矩形中的路段数据的相交次数最少的垂线,将该垂线存入List3;步骤2.4.3:根据List3中存入的垂线将Node2的外包矩形沿垂线进行分割,保存Node2的所有孩子节点所代表的路段数据,将Node2中的孩子节点列表清空,新建节点Node3,令此时Node2的外包矩形为原外包矩形分割后的一半和Node3的外包矩形为原外包矩形分割后的另一半,将Node2的所有孩子节点所代表的路段数据分别存入Node2和Node3中,若Node2的父亲节点不为空,则将Node3插入到Node2的父亲节点的孩子节点序列中,若为空,则直接执行步骤2.4.4;步骤2.4.4:判断Node2是否是根节点,若Node2是根节点,判断Node3是否为空,若Node3不为空,则新建节点Node4,将Node4的Flag设置为’False’,将最大外包矩形的左下角坐标和右上角坐标设置为Node4的属性,将Node2和Node3插入到Node4节点的孩子列表中,将Node4节点赋值给根节点,若Node3为空则执行步骤3;若Node2不是根节点,判断Node3是否为空,若不为空,判断Node2的父亲节点中孩子数量是否大于MaxNumber,若是大于MaxNumber,则将Node2的父亲节点赋值给Node2,执行步骤2.4.1;若是不大于MaxNumber,则将Node2节点的父亲节点赋值给Node2节点,Node3赋值为空,返回执行步骤2.4.4;更进一步的,步骤2.4.1包括如下子步骤:根据Node2的所有孩子节点的原始路段数据,获得每个孩子节点包含路段的两个端点,分别以每条路段的两个端点构建线段,依次计算任意两条线段之间的Hausdorff距离,令Hausdorff距离最大的两个孩子节点分别作为新构建的列表List1和List2的首元素,然后依次遍历其他的孩子节点所对应的线段与两个首元素的Hausdorff距离,若距离List1的首元素Hausdorff距离更大,则将当前孩子节点插入到List2的列表中,反之则插入List1的列表中,直到将所有的孩子节点都分配到两个列表中为止;更进一步的,步骤2.4.2包括如下子步骤:首先分别获得两个列表内所有元素的外包矩形,首先从所有外包矩形中左下角端点经度坐标最小的开始,以该端点的经度坐标向经度坐标轴做垂线,判断List1中的所有元素和List2中的所有元素的路段数据是否分别列在垂线的两侧,若不是则依次遍历所有外包矩形的左下角端点和右上角端点的经度坐标,直到一条垂线能将List1中的所有元素和List2中的所有元素分别列在垂线的两侧,此时计算这条垂线与外包矩形中的路段数据的相交次数;然后从所有外包矩形中左下角端点纬度坐标最小的开始,以该端点的纬度坐标向纬度坐标轴做垂线,判断List1中的所有元素和List2中的所有元素是否分别列本文档来自技高网...

【技术保护点】
1.一种基于路段密度划分地图网格的方法,其特征在于,包括如下步骤:步骤1:获得所有路段的路段数据,在地图上得到能包含所有路段数据的外包矩形,将能包含所有路段数据的外包矩形设置为根节点,所述根节点为最大的网格;步骤2:设置所划分网格中的路段数目最大值MaxNumber,将步骤1中所有的路段数据分别作为节点,逐个插入根节点中,对于插入的每个路段数据有如下判断:若插入当前的路段数据后,该路段数据所属网格中的路段数目不大于MaxNumber,则继续插入下一路段数据;若插入当前的路段数据后,该路段数据所属网格中的路段数目大于MaxNumber,则对所属网格利用网格分割方法进行分割,使得分割后的每个网格都满足网格中的路段数目不大于MaxNumber,然后继续插入下一路段数据;步骤3:判断步骤1中所有路段数据是否全部使用完毕,若全部使用完毕则网格构建完毕,若还有路段数据剩余则继续执行步骤2。

【技术特征摘要】
1.一种基于路段密度划分地图网格的方法,其特征在于,包括如下步骤:步骤1:获得所有路段的路段数据,在地图上得到能包含所有路段数据的外包矩形,将能包含所有路段数据的外包矩形设置为根节点,所述根节点为最大的网格;步骤2:设置所划分网格中的路段数目最大值MaxNumber,将步骤1中所有的路段数据分别作为节点,逐个插入根节点中,对于插入的每个路段数据有如下判断:若插入当前的路段数据后,该路段数据所属网格中的路段数目不大于MaxNumber,则继续插入下一路段数据;若插入当前的路段数据后,该路段数据所属网格中的路段数目大于MaxNumber,则对所属网格利用网格分割方法进行分割,使得分割后的每个网格都满足网格中的路段数目不大于MaxNumber,然后继续插入下一路段数据;步骤3:判断步骤1中所有路段数据是否全部使用完毕,若全部使用完毕则网格构建完毕,若还有路段数据剩余则继续执行步骤2。2.如权利要求1所述的基于路段密度划分地图网格的方法,其特征在于,所述节点包含以下属性:外包矩形左下角坐标、外包矩形右上角坐标、父亲节点、孩子节点序列、原始路段数据、是否包含原始路段数据的标签Flag,其中,当Flag的值为“True”时表示该节点只包含原始路段数据,当Flag的值为“Flase”时表示该节点包含网格且网格内包含原始路段数据。3.如权利要求2所述的基于路段密度划分地图网格的方法,其特征在于,所述步骤2包括如下子步骤:步骤2.1:从步骤1中所有的路段数据中随机抽取一条路段数据,以这条路段数据创建节点Node1,根据Node1的原始路段数据得到该路段两个端点,以这两个端点构建线段line1,并创建存储Node型数据的列表List;步骤2.2:创建节点CurrentNode,将根节点赋值给CurrentNode,判断CurrentNode节点的外包矩形与步骤2.1中Node1的外包矩形是否相交,若相交则进一步判断CurrentNode节点的Flag值,若Flag值为True,则将CurrentNode节点添加进所述List中,并执行步骤2.3;若Flag值为Flase,将CurrentNode节点的孩子节点依次赋值给CurrentNode,并返回执行步骤2.2;步骤2.3:判断List列表是否为空,若List列表为空则执行步骤2.1,若List列表不为空,则从步骤2.1构建的List中取出第一个元素记为Node2,并将List中的第一个元素删除,计算Node2构成的矩形和line1相交部分记为线段line2,将line2插入到Node2的孩子节点序列中,执行步骤2.4;步骤2.4:判断Node2的孩子节点数量是否大于MaxNumber,所述Node2的孩子节点序列的孩子数量等于Node2所对应网格的路段数量,若不大于MaxNumber则继续执行步骤2.3,若是大于MaxNumber则利用网格分割方法进行分割,直至插入最后一个路段数据。4.如权利要求3所述的基于路段密度划分地图网格的方法,其特征在于,步骤2.4中Node2的孩子节点数量若是大于MaxNumber,则所述网格分割方法包括如下步骤:步骤2.4.1:将Node2的所有孩子节点利用计算Hausdorff距离的方式进行分配,直到Node2的所有孩子节点都分配到新构建的两个列表List1和List2中;步骤2.4.2:分别计算两个列表内所有节点的外包矩形,然后依次遍历两个列表中所有的外包矩形的左下角端点和右上角端点的经纬度坐标,分别向坐标轴作垂线,获得能将List1中的所有元素和List2中的所有元素分别列在两侧且与外包矩形中的路段数据的相交次数最少的垂线,将该垂线存入List3;步骤2.4.3:根据List3中存入的垂线将Node2的外包矩形沿垂线进行分割,保存Node2的所有孩子节点所代表的路段数据,将Node2中的孩子节点列表清空,新建节点Node3,令此时Node2的外包矩形为原外包矩形分割后的一半和Node3的外包矩形为原外包矩形分割后的另一半,将Node2的所有孩子节点所代表的路段数据分别存入Node2和Node3中,若Node2的父亲节点不为空,则将Node3插入到Node2的父亲节点的孩子节点序列中,若为空,则直接执行步骤2.4.4;步骤2.4.4:判断Node2是否是根节点,若Node2是根...

【专利技术属性】
技术研发人员:康军李宜修段宗涛张凡许卫强行本贝黄山
申请(专利权)人:长安大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1