CN108509532B - 一种应用于地图的聚点方法和装置 - Google Patents

一种应用于地图的聚点方法和装置 Download PDF

Info

Publication number
CN108509532B
CN108509532B CN201810212546.1A CN201810212546A CN108509532B CN 108509532 B CN108509532 B CN 108509532B CN 201810212546 A CN201810212546 A CN 201810212546A CN 108509532 B CN108509532 B CN 108509532B
Authority
CN
China
Prior art keywords
cell
point
point elements
grid
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810212546.1A
Other languages
English (en)
Other versions
CN108509532A (zh
Inventor
张亦萍
叶智慧
刘杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN201810212546.1A priority Critical patent/CN108509532B/zh
Publication of CN108509532A publication Critical patent/CN108509532A/zh
Application granted granted Critical
Publication of CN108509532B publication Critical patent/CN108509532B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life

Abstract

本发明公开了一种应用于地图的聚点方法和装置,所述方法包括:建立覆盖地图的蜂窝单元网格;计算所述蜂窝单元网格的每个蜂窝单元中点要素的个数和点要素的密集度,其中,所述点要素为所述地图上的点要素;按照所述点要素的个数和所述点要素的密集度,对所述蜂窝单元网格的每个蜂窝单元进行排序,获得排序后的蜂窝单元排序列表;基于所述蜂窝单元排序列表,聚合所述蜂窝单元网格的每个蜂窝单元,获得一个或多个蜂窝单元聚簇,其中,每个蜂窝单元聚簇的坐标为其内部所有点要素的质心。这样可以更精确地反映原始点位置,也规避了由于迭代顺序对聚点结果的影响,支持点要素局部更新和聚合,并可充分利用分布式并行计算技术提升聚点方法的效果。

Description

一种应用于地图的聚点方法和装置
技术领域
本发明涉及地图点要素处理领域,尤其涉及一种应用于地图的聚点方法和装置。
背景技术
目前已有的地图点要素处理方法,基本上都是参考比例尺、注记等,例如以下两种方式。
方式一,直接网格法
原理:将地图范围划分成指定尺寸的正方形(每个缩放级别不同尺寸),然后将落在对应格子中的点聚合到该正方形中(正方形的中心),最终一个正方形内只显示一个中心点,并且点上显示该聚合点所包含的原始点的数量。如图1A所示,是采用直接网格法进行聚合,聚合前和聚合后的结果图。
方式二,直接距离法
原理:初始时没有任何已知聚合点,然后对每个点进行迭代,计算一个点的外包正方形,若此点的外包正方形与现有的聚合点的外包正方形不相交,则新建聚合点(这里不是计算点与点间的距离,而是计算一个点的外包正方形,正方形的变长由用户指定或程序设置一个默认值),若相交,则把该点聚合到该聚合点中,若点与多个已知的聚合点的外包正方形相交,则计算该点到到聚合点的距离,聚合到距离最近的聚合点中,如此循环,直到所有点都遍历完毕。每个缩放级别都重新遍历所有原始点要素。如图1B所示,是采用直接距离法进行聚合,聚合前和聚合后的结果图。
直接网格法的优点是运算速度较快,每个原始点只需计算一次,没有复杂的距离计算。而缺点也很明显:有时明明很相近的点,却仅仅因为网络的分界线而被逼分开在不同的聚合点中,此外,聚合点的位置采用的是该网格的中心,而非该网格的质心,这样聚合出来的点可能不能较精确反映原始点的信息。
直接距离法的优点是聚合点较精确的反映了所包含的原始点要素的位置信息,而缺点是速度不如完全基于网格的速度快等,此外各个点要素迭代顺序不同会导致最终结果不同。如图1C所示,是采用直接距离法进行迭代,各个点要素迭代顺序不同会导致最终结果不同的示意图。
可见,现有技术中至少存在如下技术问题:
在对地图点要素进行处理时,聚合出来的点有时不能较精确反映原始点的信息,且聚合点时的迭代顺序会影响最终的结果,在地图点要素发生变化时,迭代效率较低。
发明内容
本发明实施例通过提供一种应用于地图的聚点方法和装置,用于解决现有技术中在对地图点要素进行处理时,聚合出来的点有时不能较精确反映原始点的信息,且聚合点时的迭代顺序会影响最终的结果,在地图点要素发生变化时,迭代效率较低的技术问题。
第一方面,本发明一实施例提供了一种应用于地图的聚点方法,包括:
建立覆盖地图的蜂窝单元网格;
计算所述蜂窝单元网格的每个蜂窝单元中点要素的个数和点要素的密集度,其中,所述点要素为所述地图上的点要素;
按照所述点要素的个数和所述点要素的密集度,对所述蜂窝单元网格的每个蜂窝单元进行排序,获得排序后的蜂窝单元排序列表;
基于所述蜂窝单元排序列表,聚合所述蜂窝单元网格的每个蜂窝单元,获得一个或多个蜂窝单元聚簇,其中,所述一个或多个蜂窝单元聚簇中每个蜂窝单元聚簇的坐标为其内部所有点要素的质心,所述每个蜂窝单元聚簇包括至少一个蜂窝单元。
可选的,所述建立覆盖地图的蜂窝单元网格,包括:
根据地图的当前比例尺,确定蜂窝单元网格的边长,基于所述边长建立覆盖所述地图的蜂窝单元网格。
可选的,所述蜂窝单元网格的任一蜂窝单元的点要素的密集度的计算公式为:
Figure BDA0001597631410000031
Figure BDA0001597631410000032
其中,q为该任一蜂窝单元中点要素的密集度,
n为该任一蜂窝单元中点要素的个数,
pk是该任一蜂窝单元中第k个点要素,
pm是该任一蜂窝单元中n个点要素的质心,
distance(pk,pm)是所述第k个点要素与所述质心Pm的距离,
(Xk,Yk)是所述pk的坐标。
可选的,所述按照所述点要素的个数和所述点要素的密集度,对所述蜂窝单元网格的每个蜂窝单元进行排序,获得排序后的蜂窝单元排序列表,包括:
按照所述蜂窝单元网格的每个蜂窝单元中点要素的个数从高至低对所述每个蜂窝单元进行排序,获得第一蜂窝单元列表;
对所述第一蜂窝单元列表中点要素个数相同的蜂窝单元按照点要素的密集度从小往大进行排序,获得蜂窝单元排序列表。
可选的,所述基于所述蜂窝单元排序列表,聚合所述蜂窝单元网格的每个蜂窝单元,获得一个或多个蜂窝单元聚簇,包括:
依序遍历所述蜂窝单元排序列表中的每个蜂窝单元进行如下聚合处理:
确定当前蜂窝单元以及与所述当前蜂窝单元相邻的没有聚合的相邻蜂窝单元;
以所述当前蜂窝单元为中心,聚合所述当前蜂窝单元和所述相邻蜂窝单元,形成当前蜂窝单元聚簇;
在依序遍历所述蜂窝单元排序列表中的每个蜂窝单元后,获得一个或多个蜂窝单元聚簇。
可选的,在获得一个或多个蜂窝单元聚簇之后,所述方法还包括:
当所述蜂窝单元排序列表中的一蜂窝单元中的点要素发生变化时,点要素发生变化的蜂窝单元为变更蜂窝单元,获取所述变更蜂窝单元以及包括所述变更蜂窝单元的局部变更蜂窝单元集合,其中,所述局部变更蜂窝单元集合中的任一蜂窝单元,与所述蜂窝单元排序列表中除所述局部变更蜂窝单元集合的其余蜂窝单元没有相邻关系;
基于所述局部变更蜂窝单元集合,聚合点要素,获得局部变更聚点坐标集合;
利用所述局部变更聚点坐标集合更新所述点要素的聚点坐标集合。
第二方面,本发明一实施例提供了一种应用于地图的聚点装置,包括:
建立模块,用于建立覆盖地图的蜂窝单元网格;
计算模块,用于计算所述蜂窝单元网格的每个蜂窝单元中点要素的个数和点要素的密集度,其中,所述点要素为所述地图上的点要素;
排序模块,用于按照所述点要素的个数和所述点要素的密集度,对所述蜂窝单元网格的每个蜂窝单元进行排序,获得排序后的蜂窝单元排序列表;
聚合模块,用于基于所述蜂窝单元网格的每个蜂窝单元,获得一个或多个蜂窝单元聚簇,其中,所述一个或多个蜂窝单元聚簇中每个蜂窝单元聚簇的坐标为其内部所有点要素的质心,所述每个蜂窝单元聚簇包括至少一个蜂窝单元。
可选的,所述建立模块具体用于:
根据地图的当前比例尺,确定蜂窝单元网格的边长,基于所述边长建立覆盖所述地图的蜂窝单元网格。
可选的,所述蜂窝单元网格的任一蜂窝单元的点要素的密集度的计算公式为:
Figure BDA0001597631410000051
Figure BDA0001597631410000052
其中,q为该任一蜂窝单元中点要素的密集度,
n为该任一蜂窝单元中点要素的个数,
pk是该任一蜂窝单元中第k个点要素,
pm是该任一蜂窝单元中n个点要素的质心,
distance(pk,pm)是所述第k个点要素与所述质心Pm的距离,
(Xk,Yk)是所述pk的坐标。
可选的,所述排序模块包括:
第一排序子模块,用于按照所述蜂窝单元网格的每个蜂窝单元中点要素的个数从高至低对所述每个蜂窝单元进行排序,获得第一蜂窝单元列表;
第二排序子模块,用于对所述第一蜂窝单元列表中点要素个数相同的蜂窝单元按照点要素的密集度从小往大进行排序,获得蜂窝单元排序列表。
可选的,所述聚合模块具体用于:
依序遍历所述蜂窝单元排序列表中的每个蜂窝单元进行如下聚合处理:
确定当前蜂窝单元以及与所述当前蜂窝单元相邻的没有聚合的相邻蜂窝单元;
以所述当前蜂窝单元为中心,聚合所述当前蜂窝单元和所述相邻蜂窝单元,形成当前蜂窝单元聚簇;
在依序遍历所述蜂窝单元排序列表中的每个蜂窝单元后,获得一个或多个蜂窝单元聚簇。可选的,所述装置还包括:
获取模块,用于在获得一个或多个蜂窝单元聚簇之后,当所述蜂窝单元排序列表中的一蜂窝单元中的点要素发生变化时,点要素发生变化的蜂窝单元为变更蜂窝单元,获取所述变更蜂窝单元以及包括所述变更蜂窝单元的局部变更蜂窝单元集合,其中,所述局部变更蜂窝单元集合中的任一蜂窝单元,与所述蜂窝单元排序列表中除所述局部变更蜂窝单元集合的其余蜂窝单元没有相邻关系;
获得模块,用于基于所述局部变更蜂窝单元集合,聚合点要素,获得局部变更聚点坐标集合;
更新模块,用于利用所述局部变更聚点坐标集合更新所述点要素的聚点坐标集合。
第三方面,本发明一实施例提供了一种计算机装置,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如第一方面实施例所述方法的步骤。
第四方面,本发明一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面实施例所述方法的步骤。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
采用本发明实施例提供的技术方案,可以更精确地反映原始点位置,也规避了由于迭代顺序对聚点结果的影响,支持点要素局部更新和聚合,并可充分利用分布式并行计算技术提升聚点方法的效率。
附图说明
图1A为现有技术中采用直接网格法进行聚合,聚合前和聚合后的结果图;
图1B为现有技术中采用直接距离法进行聚合,聚合前和聚合后的结果图;
图1C为现有技术中采用直接距离法进行迭代,各个点要素迭代顺序不同会导致最终结果不同的示意图;
图2为本发明实施例提供的Point、Cell和Cluster的关联示意图;
图3为本发明实施例提供的应用于地图的聚点方法的流程图;
图4为本发明实施例提供的蜂窝网格定位的原理图;
图5为本发明实施例提供的应用于地图的聚点方法的详细流程图;
图6A为本发明实施例提供的构建蜂窝网格的示意图;
图6B为本发明实施例提供的经过计算后的每个蜂窝单元网格的点要素的个数n和点要素的密集度q的示意图;
图6C为本发明实施例提供的按照点要素的个数n和密集度q聚合的结果;
图7为本发明实施例提供的点要素变更处理流程示意图;
图8为本发明实施例提供的Cell A局部变更会影响的范围的示意图;
图9为本发明实施例提供的应用于地图的聚点装置的示意图。
具体实施方式
为了解决上述技术问题,本发明实施例中的技术方案的总体思路如下:一种应用于地图的聚点方法和装置,所述方法包括:建立覆盖地图的蜂窝单元网格;计算所述蜂窝单元网格的每个蜂窝单元中点要素的个数和点要素的密集度,其中,所述点要素为所述地图上的点要素;按照所述点要素的个数和所述点要素的密集度,对所述蜂窝单元网格的每个蜂窝单元进行排序,获得排序后的蜂窝单元排序列表;基于所述蜂窝单元排序列表,聚合所述蜂窝单元网格的每个蜂窝单元,获得一个或多个蜂窝单元聚簇,其中,所述一个或多个蜂窝单元聚簇中每个蜂窝单元聚簇的坐标为其内部所有点要素的质心,所述每个蜂窝单元聚簇包括至少一个蜂窝单元。
蜂窝单元网格中的每个蜂窝单元是六边形网格,六边形网格是最接近圆形并且可以平铺整个平面的规则网格。很多研究已经证明,将网格点排列成六角网格的形式是一种比较合理的排列,例如蜂窝、雪花等都属于自然界的鬼斧神工。本发明实施例采用六边形蜂窝网格作为参照基准来进行聚点,对比直接网格法,可以更精确地反映原始点位置;另外也规避了由于迭代顺序不同导致的结果不同,并可充分利用分布式并行计算技术提升聚点方法的效率。
本发明实施例中涉及的部分名词的含义如下:
Point:代表一个点要素;该点要素例如是地图上的一个点要素;
Cell:代表一个六边形的蜂窝单元;
Cluster:代表Cell的聚簇,其中包含个Cell。
如图2所示,为Point、Cell和Cluster的关联示意图。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
如图3所示,本发明实施例一提供了一种应用于地图的聚点方法,包括:
S101,建立覆盖地图的蜂窝单元网格;
S102,计算所述蜂窝单元网格的每个蜂窝单元中点要素的个数和点要素的密集度,其中,所述点要素为所述地图上的点要素;
S103,按照所述点要素的个数和所述点要素的密集度,对所述蜂窝单元网格的每个蜂窝单元进行排序,获得排序后的蜂窝单元排序列表;
S104,基于所述蜂窝单元排序列表,聚合所述蜂窝单元网格的每个蜂窝单元,获得一个或多个蜂窝单元聚簇,其中,所述一个或多个蜂窝单元聚簇中每个蜂窝单元聚簇的坐标为其内部所有点要素的质心,所述每个蜂窝单元聚簇包括至少一个蜂窝单元。
在步骤S101中,具体地,根据地图的当前比例尺,确定蜂窝单元网格的边长,基于所述边长建立覆盖所述地图的蜂窝单元网格。
例如,如图4所示,是蜂窝网格定位的原理图,根据地图比例尺,设定合适的蜂窝单元边长a,以整个地图范围的左上角为起点,建立蜂窝单元网格(注:蜂窝网格是一个虚拟的对象,它只是一套用于点定位的规则);同时,建立Cell List列表,列表的初始大小为0;Cell List是一个以每个蜂窝中心点坐标为Key的键值映射Map。
遍历点要素,判断离哪个Cell的中心点p0最近,判断该Cell是否已经存在于CellList,如果没有则创建一个Cell加入到Cell List,直至遍历所有点要素,创建Cell List。
在执行完步骤S101后,继续执行步骤S102,步骤S102具体包括:计算每个Cell包含的点要素的个数n及点要素的密集度q,其中,每个Cell包含的点要素的个数n可以通过统计获得,每个cell的点要素的密集度q的计算公式为:
Figure BDA0001597631410000091
Figure BDA0001597631410000092
其中,q为该任一蜂窝单元中点要素的密集度,
n为该任一蜂窝单元中点要素的个数,
pk是该任一蜂窝单元中第k个点要素,
pm是该任一蜂窝单元中n个点要素的质心,
distance(pk,pm)是所述第k个点要素与所述质心Pm的距离,
(Xk,Yk)是所述pk的坐标。
在执行完步骤S102之后,继续执行步骤S103,具体如下:
按照所述蜂窝单元网格的每个蜂窝单元中点要素的个数从高至低对所述每个cell进行排序,获得第一蜂窝单元列表;对所述第一蜂窝单元列表中点要素个数相同的cell按照点要素的密集度从小往大进行排序,获得蜂窝单元排序列表。具体地,可以是利用n,q对Cell List中的每个Cell进行排序,获得排序后的蜂窝单元排序列表。
在执行完步骤S103之后,继续执行步骤S104,具体如下:
依序遍历所述蜂窝单元排序列表中的每个蜂窝单元进行如下聚合处理:
确定当前蜂窝单元以及与所述当前蜂窝单元相邻的没有聚合的相邻蜂窝单元;
以所述当前蜂窝单元为中心,聚合所述当前蜂窝单元和所述相邻蜂窝单元,形成当前蜂窝单元聚簇;
在依序遍历所述蜂窝单元排序列表中的每个蜂窝单元后,获得一个或多个蜂窝单元聚簇。
例如,对于蜂窝单元排序列表中的第一个Cell,确定该Cell为当前Cell,以该当前Cell为中心,聚合该当前Cell和其相邻Cell(该相邻Cell是没有被其他Cluster聚合的Cell),形成当前Cluster。若一个Cell没有相邻Cell,该Cell单独构成一个Cluster。然后按照蜂窝单元排序列表中的排序,依序以下一个没有被聚合的Cell作为当前Cell,进行聚合,直至遍历所有Cell。
在遍历蜂窝单元排序列表中的每个Cell后,获得了一个或多个Cluster(通常为多个Cluster),每个Cluster的坐标是其内部所有点要素的质心。
在执行步骤S104之后,如果点要素发生变化,为了减少计算量,可以进行局部更新,即只更新点要素发生变化的蜂窝单元以及该蜂窝单元影响的蜂窝单元的数据,例如当所述蜂窝单元排序列表中的一蜂窝单元中的点要素发生变化时,点要素发生变化的蜂窝单元为变更蜂窝单元,获取所述变更蜂窝单元以及包括所述变更蜂窝单元的局部变更蜂窝单元集合,其中,所述局部变更蜂窝单元集合中的任一蜂窝单元,与所述蜂窝单元排序列表中除所述局部变更蜂窝单元集合的其余蜂窝单元没有相邻关系;基于所述局部变更蜂窝单元集合,聚合点要素,获得局部变更聚点坐标集合;利用所述局部变更聚点坐标集合更新所述点要素的聚点坐标集合。
为了更好的理解本发明,对该应用于地图的聚点方法做如下具体举例说明,如图5所示,是本发明实施例提供的应用于地图的聚点方法的详细流程图。详细流程如下:
S201,根据地图比例尺,建立蜂窝单元网格,建立蜂窝单元列表Cell List。其中,根据地图比例尺,设定合适的蜂窝单元边长a。Cell List列表的初始大小为0;Cell List是一个以每个蜂窝中心点坐标为Key的键值映射Map。如图6A所示,为构建蜂窝网格的示意图。
S202,遍历每个点要素,判断每个点要素落入哪个Cell。
具体地,判断离哪个Cell的中心点p0最近,判断该Cell是否已经存在于CellList,如果没有则创建一个Cell加入到Cell List,直至遍历所有点要素,创建Cell List。
S203,计算每个Cell包含的点要素的个数n及点要素的密集度q。如图6B所示,为经过计算后的每个蜂窝单元网格的点要素的个数n和点要素的密集度q的示意图。
具体地,遍历CellList,计算每个Cell包含的点个数n及密集度q
当n=1时,q=distance(p1,p0),p0是Cell的中心点,q是p1点到Cell中心点的距离;
当n>1时,先计算出所有Point的质心pm,
Figure BDA0001597631410000111
Figure BDA0001597631410000112
q是点要素到质心点的距离的平均,表征了一Cell中点要素的密集度;
q越小,说明点越密集;这样就完成了所有Cell的计算。
S204,以n,q对Cell List中的每个Cell进行排序,获得排序后的蜂窝单元排序列表。具体地,按照n从高至低对每个Cell进行排序,在n相同时,以q从小往大对n相同的Cell进行排序,获得蜂窝单元排序列表。通常情况下,对于Cell List中的每个Cell,q相同的概率很低,由于该概率很低,若出现q相同的情况,计算机按照一定规则自动排序即可。
S205,对于蜂窝单元排序列表中的cell,依序进行迭代聚合,具体地,从第一个Cell为中心开始聚合其相邻Cell,获得一Cluster,遍历所有Cell,获得一个或多个Cluster。
例如,对于蜂窝单元排序列表中的第一个Cell,确定该Cell为当前Cell,以该当前Cell为中心,聚合该当前Cell和其相邻Cell(该相邻Cell是没有被其他Cluster聚合的Cell),形成当前Cluster。若一个Cell没有相邻Cell,该Cell单独构成一个Cluster。然后按照蜂窝单元排序列表中的排序,依序以下一个没有被聚合的Cell作为当前Cell,进行聚合,直至遍历所有Cell。
在遍历蜂窝单元排序列表中的每个Cell后,所有Cluster(每个Cluster内的Cell个数不会超过7个)都已经聚集完成,获得了所有的Cluster(通常为多个Cluster),每个Cluster的坐标是其内部所有点要素的质心。
S206,对于每个Cluster,遍历所有Cell的所有Point,计算出质点坐标(x,y)。质点坐标作为最终的Cluster的聚点坐标。如图6C所示,是最终按照点要素的个数n和密集度q聚合的结果。
S207,判断是否达到地图的最小比例尺。在为否时,重新执行步骤S201,在为否时,结束。具体地,创建从L0~Lt的t级地图比例尺(比例尺从大到小),把前一比例尺地图下聚合的Cluster作为下一比例尺地图的Point,继续开始下一个聚合流程。
另外,当点要素层局部发生变化时,肯定不能再按同样的流程重新走一遍,不然计算量会非常大,特别是当点要素的数量达到海量级别时,所以本实施例中还提出一个增量更新的流程,具体步骤如下:
步骤1,增加或删除点要素,判断落入的是哪个蜂窝单元Cell;
步骤2,获取所有与该Cell邻近的Cell,以及递归获取再邻近的Cell,形成一个局部变更的Cell List。如图8所示,是Cell A局部变更会影响的范围的示意图,由于Cell A局部变更可能会影响的范围由加粗线框包围起来的11个有颜色的Cell组成;也就是说,对于点要素发生变更的Cell,该Cell相邻的Cell,以及相邻Cell的相邻Cell,如此递归,直至没有相邻Cell,形成局部变更的Cell List,直至该变更Cell以及包括该变更Cell的局部变更的Cell List与步骤S201中的全体Cell List中的其余Cell没有相邻关系。
步骤3,获取到该Cell List对应的原Cluster List;
步骤4,通过既有的聚合算法重新计算受影响的这部分Cell List对应的新Cluster List;
步骤5,用新的Cluster List局部替换Cluster List;
步骤6,以变更的这部分Cluster List为点要素,继续下一个地图比例尺的聚合运算。
具体地,点要素变更处理流程示意图,如图7所示,具体流程如下:
S301,变更点要素(增加或删除点要素),判断该变更落入哪个Cell。
S302,递归获取所有与该Cell邻近的Cell,形成一个变更Cell List,计算变更Cell List包含的点要素的个数n及点要素的密集度q。然后执行步骤S303和S306。
S303,以n,q对变更Cell List排序,获得排序后的变更蜂窝单元排序列表。简称变更列表。具体排序方法与前述步骤S204相同,在此不再赘述。
S304,对于变更列表,依序进行迭代聚合,具体地,从变更列表中第一个Cell为中心开始聚合其相邻Cell,获得一Cluster,遍历变更列表的所有Cell,获得一个或多个Cluster。
例如,从变更列表中第一个Cell开始,确定该Cell为当前Cell,以该当前Cell为中心,聚合该当前Cell和其相邻Cell(该相邻Cell是没有被其他Cluster聚合的Cell),形成当前Cluster。若一个Cell没有相邻Cell,该Cell单独构成一个Cluster。然后按照变更列表中的排序,依序以下一个没有被聚合的Cell作为当前Cell,进行聚合,直至遍历变更列表中所有Cell。
在遍历变更列表中的每个Cell后,所有新的Cluster(每个Cluster内的Cell个数不会超过7个)都已经聚集完成,每个新的Cluster的坐标是其内部所有点要素的质心。
S305,遍历每个新的Cluster中所有Cell的所有Point,计算出每个Cluster质点坐标(x,y),获得新的Cluster List。
S306,根据变更Cell List,获取受影响的Cell List。
S307,用新的Cluster List替换原来受影响的Cluster List。
S308,判断是否达到地图的最小比例尺。在为否时,重新执行步骤S301,在为否时,结束。具体地,以变更的这部分Cluster List为点要素,继续下一个地图比例尺的聚合运算。
如图9所示,本发明实施例二提供了一种应用于地图的聚点装置,包括:
建立模块401,用于建立覆盖地图的蜂窝单元网格;
计算模块402,用于计算所述蜂窝单元网格的每个蜂窝单元中点要素的个数和点要素的密集度,其中,所述点要素为所述地图上的点要素;
排序模块403,用于按照所述点要素的个数和所述点要素的密集度,对所述蜂窝单元网格的每个蜂窝单元进行排序,获得排序后的蜂窝单元排序列表;
聚合模块404,用于基于所述蜂窝单元排序列表,聚合所述蜂窝单元网格的每个蜂窝单元,获得一个或多个蜂窝单元聚簇,其中,所述一个或多个蜂窝单元聚簇中每个蜂窝单元聚簇的坐标为其内部所有点要素的质心,所述每个蜂窝单元聚簇包括至少一个蜂窝单元。
在该装置中,所述建立模块401具体用于:
根据地图的当前比例尺,确定蜂窝单元网格的边长,基于所述边长建立覆盖所述地图的蜂窝单元网格。
对于计算模块402,其计算的蜂窝单元网格的任一蜂窝单元的点要素的密集度的计算公式为:
Figure BDA0001597631410000141
Figure BDA0001597631410000142
其中,q为该任一蜂窝单元中点要素的密集度,
n为该任一蜂窝单元中点要素的个数,
pk是该任一蜂窝单元中第k个点要素,
pm是该任一蜂窝单元中n个点要素的质心,
distance(pk,pm)是所述第k个点要素与所述质心Pm的距离,
(Xk,Yk)是所述pk的坐标。
该装置的排序模块403具体包括:
第一排序子模块,用于按照所述蜂窝单元网格的每个蜂窝单元中点要素的个数从高至低对所述每个蜂窝单元进行排序,获得第一蜂窝单元列表;
第二排序子模块,用于对所述第一蜂窝单元列表中点要素个数相同的蜂窝单元按照点要素的密集度从小往大进行排序,获得蜂窝单元排序列表。
该装置的聚合模块404具体用于:
依序遍历所述蜂窝单元排序列表中的每个蜂窝单元进行如下聚合处理:
确定当前蜂窝单元以及与所述当前蜂窝单元相邻的没有聚合的相邻蜂窝单元;
以所述当前蜂窝单元为中心,聚合所述当前蜂窝单元和所述相邻蜂窝单元,形成当前蜂窝单元聚簇;
在依序遍历所述蜂窝单元排序列表中的每个蜂窝单元后,获得一个或多个蜂窝单元聚簇。
该装置还可以包括装置还包括:
获取模块,用于在获得一个或多个蜂窝单元聚簇之后,当所述蜂窝单元排序列表中的一蜂窝单元中的点要素发生变化时,点要素发生变化的蜂窝单元为变更蜂窝单元,获取所述变更蜂窝单元以及包括所述变更蜂窝单元的局部变更蜂窝单元集合,其中,所述局部变更蜂窝单元集合中的任一蜂窝单元,与所述蜂窝单元排序列表中除所述局部变更蜂窝单元集合的其余蜂窝单元没有相邻关系;
获得模块,用于基于所述局部变更蜂窝单元集合,聚合点要素,获得局部变更聚点坐标集合;
更新模块,用于利用所述局部变更聚点坐标集合更新所述点要素的聚点坐标集合。
该装置的工作流程中涉及名词解释以及工作原理的方法步骤与实施例一相同,在此不再赘述。
本发明实施例三提供了一种计算机装置,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如是实施例一中所述方法的步骤。
本发明实施例四提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如实施例一中所述方法的步骤。
上述本发明实施例中的技术方案,至少具有如下的技术效果或优点:
1、支持并行化策略;由于全量聚点流程的步骤S202和步骤S208与迭代顺序无关,所以支持并行化策略,可以有效利用Map Reduce等分布式计算的优势,提升聚点效率;
2、支持局部更新;在实际应用时,会将各个比例尺下的聚点层Cluster List缓存下来使用;当有新的要素增加或删除时,可以在原有计算结果的基础上实现快速的局部更新;
3、蜂窝六边形网格从形态上由于四边形网格;更加符合物理或自然规律;
4、在合适的蜂窝单元大小下可以有效规避聚点后标签重叠的问题;
5、不会由于各个点要素迭代顺序不同而导致最终结果不同。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1.一种应用于地图的聚点方法,其特征在于,包括:
建立覆盖地图的蜂窝单元网格;
计算所述蜂窝单元网格的每个蜂窝单元中点要素的个数和点要素的密集度,其中,所述点要素为所述地图上的点要素;
按照所述点要素的个数和所述点要素的密集度,对所述蜂窝单元网格的每个蜂窝单元进行排序,获得排序后的蜂窝单元排序列表;
基于所述蜂窝单元排序列表,聚合所述蜂窝单元网格的每个蜂窝单元,获得一个或多个蜂窝单元聚簇,其中,所述一个或多个蜂窝单元聚簇中每个蜂窝单元聚簇的坐标为其内部所有点要素的质心,所述每个蜂窝单元聚簇包括至少一个蜂窝单元;
其中,所述基于所述蜂窝单元排序列表,聚合所述蜂窝单元网格的每个蜂窝单元,获得一个或多个蜂窝单元聚簇,包括:
依序遍历所述蜂窝单元排序列表中的每个蜂窝单元进行如下聚合处理:
确定当前蜂窝单元以及与所述当前蜂窝单元相邻的没有聚合的相邻蜂窝单元;
以所述当前蜂窝单元为中心,聚合所述当前蜂窝单元和所述相邻蜂窝单元,形成当前蜂窝单元聚簇;
在依序遍历所述蜂窝单元排序列表中的每个蜂窝单元后,获得一个或多个蜂窝单元聚簇。
2.如权利要求1所述的方法,其特征在于,所述建立覆盖地图的蜂窝单元网格,包括:
根据地图的当前比例尺,确定蜂窝单元网格的边长,基于所述边长建立覆盖所述地图的蜂窝单元网格。
3.如权利要求1所述的方法,其特征在于,所述蜂窝单元网格的任一蜂窝单元的点要素的密集度的计算公式为:
Figure FDA0002524237240000021
Figure FDA0002524237240000022
其中,q为该任一蜂窝单元中点要素的密集度,
n为该任一蜂窝单元中点要素的个数,
pk是该任一蜂窝单元中第k个点要素,
pm是该任一蜂窝单元中n个点要素的质心,
distance(pk,pm)是所述第k个点要素与所述质心Pm的距离,
(Xk,Yk)是所述pk的坐标。
4.如权利要求1所述的方法,其特征在于,所述按照所述点要素的个数和所述点要素的密集度,对所述蜂窝单元网格的每个蜂窝单元进行排序,获得排序后的蜂窝单元排序列表,包括:
按照所述蜂窝单元网格的每个蜂窝单元中点要素的个数从高至低对所述每个蜂窝单元进行排序,获得第一蜂窝单元列表;
对所述第一蜂窝单元列表中点要素个数相同的蜂窝单元按照点要素的密集度从小往大进行排序,获得蜂窝单元排序列表。
5.如权利要求1-4任一项所述的方法,其特征在于,在获得一个或多个蜂窝单元聚簇之后,所述方法还包括:
当所述蜂窝单元排序列表中的一蜂窝单元中的点要素发生变化时,点要素发生变化的蜂窝单元为变更蜂窝单元,获取所述变更蜂窝单元以及包括所述变更蜂窝单元的局部变更蜂窝单元集合,其中,所述局部变更蜂窝单元集合中的任一蜂窝单元,与所述蜂窝单元排序列表中除所述局部变更蜂窝单元集合的其余蜂窝单元没有相邻关系;
基于所述局部变更蜂窝单元集合,聚合点要素,获得局部变更聚点坐标集合;
利用所述局部变更聚点坐标集合更新所述点要素的聚点坐标集合。
6.一种应用于地图的聚点装置,其特征在于,包括:
建立模块,用于建立覆盖地图的蜂窝单元网格;
计算模块,用于计算所述蜂窝单元网格的每个蜂窝单元中点要素的个数和点要素的密集度,其中,所述点要素为所述地图上的点要素;
排序模块,用于按照所述点要素的个数和所述点要素的密集度,对所述蜂窝单元网格的每个蜂窝单元进行排序,获得排序后的蜂窝单元排序列表;
聚合模块,用于基于所述蜂窝单元排序列表,聚合所述蜂窝单元网格的每个蜂窝单元,获得一个或多个蜂窝单元聚簇,其中,所述一个或多个蜂窝单元聚簇中每个蜂窝单元聚簇的坐标为其内部所有点要素的质心,所述每个蜂窝单元聚簇包括至少一个蜂窝单元;
其中,所述聚合模块具体用于:
依序遍历所述蜂窝单元排序列表中的每个蜂窝单元进行如下聚合处理:
确定当前蜂窝单元以及与所述当前蜂窝单元相邻的没有聚合的相邻蜂窝单元;
以所述当前蜂窝单元为中心,聚合所述当前蜂窝单元和所述相邻蜂窝单元,形成当前蜂窝单元聚簇;
在依序遍历所述蜂窝单元排序列表中的每个蜂窝单元后,获得一个或多个蜂窝单元聚簇。
7.如权利要求6所述的装置,其特征在于,所述建立模块具体用于:
根据地图的当前比例尺,确定蜂窝单元网格的边长,基于所述边长建立覆盖所述地图的蜂窝单元网格。
8.如权利要求6所述的装置,其特征在于,所述蜂窝单元网格的任一蜂窝单元的点要素的密集度的计算公式为:
Figure FDA0002524237240000031
Figure FDA0002524237240000032
其中,q为该任一蜂窝单元中点要素的密集度,
n为该任一蜂窝单元中点要素的个数,
pk是该任一蜂窝单元中第k个点要素,
pm是该任一蜂窝单元中n个点要素的质心,
distance(pk,pm)是所述第k个点要素与所述质心Pm的距离,
(Xk,Yk)是所述pk的坐标。
9.如权利要求6所述的装置,其特征在于,所述排序模块包括:
第一排序子模块,用于按照所述蜂窝单元网格的每个蜂窝单元中点要素的个数从高至低对所述每个蜂窝单元进行排序,获得第一蜂窝单元列表;
第二排序子模块,用于对所述第一蜂窝单元列表中点要素个数相同的蜂窝单元按照点要素的密集度从小往大进行排序,获得蜂窝单元排序列表。
10.如权利要求6-9任一项所述的装置,其特征在于,所述装置还包括:
获取模块,用于在获得一个或多个蜂窝单元聚簇之后,当所述蜂窝单元排序列表中的一蜂窝单元中的点要素发生变化时,点要素发生变化的蜂窝单元为变更蜂窝单元,获取所述变更蜂窝单元以及包括所述变更蜂窝单元的局部变更蜂窝单元集合,其中,所述局部变更蜂窝单元集合中的任一蜂窝单元,与所述蜂窝单元排序列表中除所述局部变更蜂窝单元集合的其余蜂窝单元没有相邻关系;
获得模块,用于基于所述局部变更蜂窝单元集合,聚合点要素,获得局部变更聚点坐标集合;
更新模块,用于利用所述局部变更聚点坐标集合更新所述点要素的聚点坐标集合。
11.一种计算机装置,其特征在于,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-5中任一项所述方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5中任一项所述方法的步骤。
CN201810212546.1A 2018-03-15 2018-03-15 一种应用于地图的聚点方法和装置 Active CN108509532B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810212546.1A CN108509532B (zh) 2018-03-15 2018-03-15 一种应用于地图的聚点方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810212546.1A CN108509532B (zh) 2018-03-15 2018-03-15 一种应用于地图的聚点方法和装置

Publications (2)

Publication Number Publication Date
CN108509532A CN108509532A (zh) 2018-09-07
CN108509532B true CN108509532B (zh) 2020-09-29

Family

ID=63375954

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810212546.1A Active CN108509532B (zh) 2018-03-15 2018-03-15 一种应用于地图的聚点方法和装置

Country Status (1)

Country Link
CN (1) CN108509532B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112395310B (zh) * 2020-12-02 2022-06-17 武汉光庭信息技术股份有限公司 一种电子地图背景点汇聚处理方法及系统
CN114322986A (zh) * 2021-12-24 2022-04-12 深圳依时货拉拉科技有限公司 一种基于订单热度的蜂窝热点地图绘制方法和计算机设备
CN115905451B (zh) * 2023-02-28 2023-05-12 菲特(天津)检测技术有限公司 一种地图聚合系统及聚合方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103926583A (zh) * 2014-05-04 2014-07-16 中国人民解放军空军预警学院监控系统工程研究所 一种岸基近程雷达自动跟踪处理方法及计算机
CN105070185A (zh) * 2015-08-26 2015-11-18 中科宇图天下科技有限公司 一种点要素群自动综合方法
CN105225519A (zh) * 2014-06-28 2016-01-06 大众汽车有限公司 定向停车可用信息的可视化系统
CN105335393A (zh) * 2014-07-11 2016-02-17 阿里巴巴集团控股有限公司 一种地图显示方法及装置
CN105824840A (zh) * 2015-01-07 2016-08-03 阿里巴巴集团控股有限公司 一种用于区域标签管理的方法及装置
CN107784017A (zh) * 2016-08-30 2018-03-09 杭州海康威视系统技术有限公司 地图资源点的聚合方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101594577B1 (ko) * 2009-11-19 2016-02-16 삼성전자주식회사 클러스터 질의를 이용한 데이터 스트림 처리 장치 및 방법
US10359295B2 (en) * 2016-09-08 2019-07-23 Here Global B.V. Method and apparatus for providing trajectory bundles for map data analysis

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103926583A (zh) * 2014-05-04 2014-07-16 中国人民解放军空军预警学院监控系统工程研究所 一种岸基近程雷达自动跟踪处理方法及计算机
CN105225519A (zh) * 2014-06-28 2016-01-06 大众汽车有限公司 定向停车可用信息的可视化系统
CN105335393A (zh) * 2014-07-11 2016-02-17 阿里巴巴集团控股有限公司 一种地图显示方法及装置
CN105824840A (zh) * 2015-01-07 2016-08-03 阿里巴巴集团控股有限公司 一种用于区域标签管理的方法及装置
CN105070185A (zh) * 2015-08-26 2015-11-18 中科宇图天下科技有限公司 一种点要素群自动综合方法
CN107784017A (zh) * 2016-08-30 2018-03-09 杭州海康威视系统技术有限公司 地图资源点的聚合方法和装置

Also Published As

Publication number Publication date
CN108509532A (zh) 2018-09-07

Similar Documents

Publication Publication Date Title
CN112669463B (zh) 三维点云的曲面重建方法、计算机设备和计算机可读存储介质
CN108509532B (zh) 一种应用于地图的聚点方法和装置
US9390556B2 (en) Systems and methods for generating a large scale polygonal mesh
TWI651515B (zh) 用於改善路線規劃計算裝置之裝置及方法
Blelloch et al. Efficient algorithms with asymmetric read and write costs
CN109656798B (zh) 基于顶点重排序的超级计算机大数据处理能力测试方法
CN104408055B (zh) 一种激光雷达点云数据的存储方法及装置
CN104699946B (zh) 一种游戏场景的管理方法及装置
EA013941B1 (ru) Способ и устройство для укрупнения слоев в геологическом моделировании
CN108805174A (zh) 聚类方法及装置
CN110737804A (zh) 一种基于活跃度布局的图处理访存优化方法及系统
CN110246095B (zh) 一种图像修复方法、装置、存储介质及终端设备
CN106709503A (zh) 一种基于密度的大型空间数据聚类算法k‑dbscan
CN109063194A (zh) 基于空间编码的数据检索方法及装置
CN109118586B (zh) 逻辑地图的数据处理方法、装置、电子设备及存储介质
CN114693505B (zh) 一种点云数据的存储处理方法和装置
CN106709969A (zh) 一种基于分区的Delaunay三角网生长算法
CN105701128A (zh) 一种查询语句的优化方法和装置
CN111599015B (zh) 一种约束条件下的空间多边形网格化填充方法和装置
US20150324499A1 (en) Hash Fast Marching Method for Simulation of Surface Evolution in Photoresist Etching Process
CN109684185B (zh) 基于启发式遍历的超级计算机大数据处理能力测试方法
Huang et al. A grid and density based fast spatial clustering algorithm
WO2021248937A1 (zh) 一种基于差分隐私的地理分布式图计算方法及系统
CN112989193A (zh) 数据处理方法、装置、电子设备及计算机存储介质
CN110737741A (zh) 基于道路流通能力的标准网格划分方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant