在线地图的点聚合算法及现状

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在线地图的点聚合算法及现状

Viky

2014 目录

一、概述

1)什么是地图综合?

地图综合所要解决的问题是把一个空间目标集合按照专题内容转换为一个最能代表该集合主要空间特征的更抽象的空间目标集合,并符号化该抽象后的空间目标集合,以最有效的方式传输地理空间知识。

2)什么是点聚合?

点聚合(point cluster),或又叫点聚类,是地图综合的其中一种方法,主要解决地图中点要素很多时候的表示困难的问题。点聚合可以用少量的点或图标来表示地图中的所有点,让地图显示更清晰明朗。如所示。

图1 –在线地图的点聚合示意图

3)本文关注的重点

本文主要关注二维在线电子地图中点的聚合显示所用到的算法和目前的在线地图对点聚合显示的支持情况。

电子地图中,通常会遇到在某个地区包含成千上万个点要素的情况,若同时加载显示在电子地图中,会显得很乱、覆盖地图底图,也会占用大量系统资源,甚至引发浏览器的崩溃、卡顿,极大的影响用户体验,因此点聚合显示是电子地图十分需要的一项功能。

目前的常见在线地图(或其API)是否支持点聚合?若支持点聚合的算法是什么?是一个值得关注的问题。本文尝试对这两个问题进行解答。

二、在线地图点聚合的算法

特点

a)数据相对简单,只有点要素,点没有形状变化,因此没有形状对聚合影响。

b)没有评价聚合精确度的唯一指标,(不考虑运行速度的情况下)不同的算法不同的显示

方式对用户体验影响并不会太大。

c)可能需考虑的方面:聚合点中包含的原始点要素最大数量限制、聚合点间的距离限制、

点要素的权重、部分缩放级别是否该显示聚合点等。

d)一般的点聚合(聚类)算法对在线地图点聚合虽适用(如K均值法等),但需平衡运

行效率和必要性,并且极少见这些复杂方法应用实际的在线地图中。

必要性

目前在线地图的点聚合算法已有较成熟的应用,不少在线地图均提供点聚合的功能及API。点聚合算法虽然相对简单,但却很实用,若缺少了,在线地图则无法对大数据量的点要素进行较好的显示。对于在线地图的二次开发者来说,这也是一个十分重要的功能,例如要在地图上

显示同一个站点中的多个传感器等,若缺少点聚合功能的支持,则是几乎无法辨别清楚地图上的这些传感器点要素。

运行方式

点聚合的运算可以放在客户端(浏览器),也可以放在服务端运算(如Google Maps的融合表)完毕再传给客户端。

表现形式

在计算机上表现地点的点聚合方式多种多样,并无定论,聚合后的显示样式,不同缩放级别下是否显示不同图标或在以下列举几种常见的表现形式:

●多个点聚合后还是点要素,换不同图标显示,或在图标中同时显示该聚合点所包含的

原始点要素的数量,点击聚合点后,地图视图会自动切换到该聚合点所包含的所有点的最小包围盒地图范围中。

●多个点聚合后还是点要素,换不同图标显示,或在图标中同时显示该聚合点所包含的

原始点要素的数量,点击聚合点后,地图会弹出该聚合点的所聚合的所有点的位置信息,但并不缩放和移动地图。

●多个点聚合后是面要素,以颜色或数字表示所聚合的点的数量,点开后若单位面积内

若依然包含较多点则继续显示面要素,若点较少则显示原始的点要素。此种方法较少见,常见于上述两种方法。

算法

本文关注的重点是在线地图点聚合算法的大致情况,而不是每个算法详细的运行效率和优劣情况。因此,以下对可搜到的在线地图点聚合算法进行简要列举:

1)基于网格的点聚合算法(Grid-based Clustering)

原理:将地图划分成指定尺寸的正方形(每个缩放级别不同尺寸),然后将落在对应格子中的点聚合到该正方形中(正方形的中心),最终一个正方形内只显示一个点,并且点上显示该聚合点所包含的原始点的数量。

优点:运算速度较快,每个原始点只需计算一次,没有复杂的距离计算。

缺点:有时明明很相近的点,却仅仅因为网络的分界线而被逼分开在不同的聚合点中,此外,聚合点的位置采用的是该网格的中心,而非该网格的质心,这样聚合出来的点可能不能较精确反映原始点的信息。

使用此算法的在线地图:缺。

以下是Google给出的一个基于距离的点聚合示意图:

图2 –基于网格的点聚合算法(聚合前)

图3 –基于网格的点聚合算法(聚合后)

2)基于距离的点聚合算法(Distance-based Clustering)

原理:根据点与点之间的距离进行聚合,对每个点进行迭代,若被迭代的点在某个已有聚合点的指定阈值的距离范围内,那么这个点就聚合到该点,否则则新建一个聚合点,如此循环,但聚合后的点的坐标依然是该聚合点创建时的第一个点的坐标位置。

优点:聚合点较精确的反映了所包含的原始点要素的位置信息。

缺点:需要计算点与点之间的距离,计算相对复杂。

使用此算法的在线地图:缺。

以下是Google给出的一个基于距离的点聚合示意图:

图4 –基于距离的点聚合算法(原始点要素)

图5 –基于距离的点聚合算法(聚合过程)

图6 –基于距离的点聚合算法(聚合结果)

表1基于距离的点聚合算法(聚合结果)

3)基于方格和距离结合的点聚合算法(详细)

原理:初始时没有任何已知聚合点,然后对每个点进行迭代,计算一个点的外包正方形,若此点的外包正方形与现有的聚合点的外包正方形不相交,则新建聚合点(区别于前面基于直接距离的算法,这里不是计算点与点间的距离,而是计算一个点的外包正方形,正方形的变长由用户指定或程序设置一个默认值),若相交,则把该点聚合到该聚合点中,若点与多个已知的聚合点的外包正方形相交,则计算该点到到聚合点的距离,聚合到距离最近的聚合点中,如此循环,直到所有点都遍历完毕。每个缩放级别都重新遍历所有原始点要素。

此方法可以算是基于方格与基于距离的算法的一个结合算法。

优点:运算速度相对较快,每个原始点只需计算一次,可能会有点与点距离计算,聚合点较精确的反映了所包含的原始点要素的位置信息。

缺点:速度不如完全基于方格的速度快等。

使用此算法的在线地图:Google Maps。

以下是Google给出的一个基于方格距离的点聚合示意图:

相关文档
最新文档