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

上传人:无*** 文档编号:104131261 上传时间:2022-06-09 格式:DOC 页数:8 大小:119.50KB
收藏 版权申诉 举报 下载
在线地图的点聚合算法和现状_第1页
第1页 / 共8页
在线地图的点聚合算法和现状_第2页
第2页 / 共8页
在线地图的点聚合算法和现状_第3页
第3页 / 共8页
资源描述:

《在线地图的点聚合算法和现状》由会员分享,可在线阅读,更多相关《在线地图的点聚合算法和现状(8页珍藏版)》请在装配图网上搜索。

1、在线地图的点聚合算法及现状Viky2014目录一、概述21什么是地图综合?22什么是点聚合?23本文关注的重点2二、在线地图点聚合的算法3特点3必要性3运行方式3表现形式3算法31基于网格的点聚合算法Grid-based Clustering32基于距离的点聚合算法Distance-based Clustering53基于方格和距离结合的点聚合算法详细74基于距离和最少点数量限制的点聚合算法125其他的可用于在线地图点聚合的算法14三、在线地图点聚合功能的实现情况14Openlayers14Google Maps15百度地图16高德地图17ESRI18腾讯地图原搜索地图19天地图20四、小结2

2、0参考文献21一、 概述1) 什么是地图综合?地图综合所要解决的问题是把一个空间目标集合按照专题内容转换为一个最能代表该集合主要空间特征的更抽象的空间目标集合.并符号化该抽象后的空间目标集合.以最有效的方式传输地理空间知识。2) 什么是点聚合?点聚合point cluster.或又叫点聚类.是地图综合的其中一种方法.主要解决地图中点要素很多时候的表示困难的问题。点聚合可以用少量的点或图标来表示地图中的所有点.让地图显示更清晰明朗。如图 1所示。图 1 在线地图的点聚合示意图3) 本文关注的重点本文主要关注二维在线电子地图中点的聚合显示所用到的算法和目前的在线地图对点聚合显示的支持情况。电子地图

3、中.通常会遇到在某个地区包含成千上万个点要素的情况.若同时加载显示在电子地图中.会显得很乱、覆盖地图底图.也会占用大量系统资源.甚至引发浏览器的崩溃、卡顿.极大的影响用户体验.因此点聚合显示是电子地图十分需要的一项功能。目前的常见在线地图或其API是否支持点聚合?若支持点聚合的算法是什么?是一个值得关注的问题。本文尝试对这两个问题进行解答。二、 在线地图点聚合的算法特点a) 数据相对简单.只有点要素.点没有形状变化.因此没有形状对聚合影响。b) 没有评价聚合精确度的唯一指标.不考虑运行速度的情况下不同的算法不同的显示方式对用户体验影响并不会太大。c) 可能需考虑的方面:聚合点中包含的原始点要素

4、最大数量限制、聚合点间的距离限制、点要素的权重、部分缩放级别是否该显示聚合点等。d) 一般的点聚合聚类算法对在线地图点聚合虽适用如K均值法等.但需平衡运行效率和必要性.并且极少见这些复杂方法应用实际的在线地图中。必要性目前在线地图的点聚合算法已有较成熟的应用.不少在线地图均提供点聚合的功能及API。点聚合算法虽然相对简单.但却很实用.若缺少了.在线地图则无法对大数据量的点要素进行较好的显示。对于在线地图的二次开发者来说.这也是一个十分重要的功能.例如要在地图上显示同一个站点中的多个传感器等.若缺少点聚合功能的支持.则是几乎无法辨别清楚地图上的这些传感器点要素。运行方式点聚合的运算可以放在客户端

5、浏览器.也可以放在服务端运算如Google Maps的融合表完毕再传给客户端。表现形式在计算机上表现地点的点聚合方式多种多样.并无定论.聚合后的显示样式.不同缩放级别下是否显示不同图标或在以下列举几种常见的表现形式:l 多个点聚合后还是点要素.换不同图标显示.或在图标中同时显示该聚合点所包含的原始点要素的数量.点击聚合点后.地图视图会自动切换到该聚合点所包含的所有点的最小包围盒地图范围中。l 多个点聚合后还是点要素.换不同图标显示.或在图标中同时显示该聚合点所包含的原始点要素的数量.点击聚合点后.地图会弹出该聚合点的所聚合的所有点的位置信息.但并不缩放和移动地图。l 多个点聚合后是面要素.以颜

6、色或数字表示所聚合的点的数量.点开后若单位面积内若依然包含较多点则继续显示面要素.若点较少则显示原始的点要素。此种方法较少见.常见于上述两种方法。算法本文关注的重点是在线地图点聚合算法的大致情况.而不是每个算法详细的运行效率和优劣情况。因此.以下对可搜到的在线地图点聚合算法进行简要列举:1) 基于网格的点聚合算法Grid-based Clustering原理:将地图划分成指定尺寸的正方形每个缩放级别不同尺寸.然后将落在对应格子中的点聚合到该正方形中正方形的中心.最终一个正方形内只显示一个点.并且点上显示该聚合点所包含的原始点的数量。优点:运算速度较快.每个原始点只需计算一次.没有复杂的距离计算

7、。缺点:有时明明很相近的点.却仅仅因为网络的分界线而被逼分开在不同的聚合点中.此外.聚合点的位置采用的是该网格的中心.而非该网格的质心.这样聚合出来的点可能不能较精确反映原始点的信息。使用此算法的在线地图:缺。以下是Google给出的一个基于距离的点聚合示意图:图 2 基于网格的点聚合算法聚合前图 3 基于网格的点聚合算法聚合后2) 基于距离的点聚合算法Distance-based Clustering原理:根据点与点之间的距离进行聚合.对每个点进行迭代.若被迭代的点在某个已有聚合点的指定阈值的距离范围内.那么这个点就聚合到该点.否则则新建一个聚合点.如此循环.但聚合后的点的坐标依然是该聚合点

8、创建时的第一个点的坐标位置。优点:聚合点较精确的反映了所包含的原始点要素的位置信息。缺点:需要计算点与点之间的距离.计算相对复杂。使用此算法的在线地图:缺。以下是Google给出的一个基于距离的点聚合示意图:图 4 基于距离的点聚合算法原始点要素图 5 基于距离的点聚合算法聚合过程图 6 基于距离的点聚合算法聚合结果蓝1红2黄7、8绿3、4、6粉红5浅绿9表 1基于距离的点聚合算法聚合结果3) 基于方格和距离结合的点聚合算法详细原理:初始时没有任何已知聚合点.然后对每个点进行迭代.计算一个点的外包正方形.若此点的外包正方形与现有的聚合点的外包正方形不相交.则新建聚合点区别于前面基于直接距离的算

9、法.这里不是计算点与点间的距离.而是计算一个点的外包正方形.正方形的变长由用户指定或程序设置一个默认值.若相交.则把该点聚合到该聚合点中.若点与多个已知的聚合点的外包正方形相交.则计算该点到到聚合点的距离.聚合到距离最近的聚合点中.如此循环.直到所有点都遍历完毕。每个缩放级别都重新遍历所有原始点要素。此方法可以算是基于方格与基于距离的算法的一个结合算法。优点:运算速度相对较快.每个原始点只需计算一次.可能会有点与点距离计算.聚合点较精确的反映了所包含的原始点要素的位置信息。缺点:速度不如完全基于方格的速度快等。使用此算法的在线地图:Google Maps。以下是Google给出的一个基于方格距

10、离的点聚合示意图:步骤示例:a) 默认输入的数组的顺序是如图 7 基于方格距离的点聚合算法原始点要素所示的字母顺序。b) 初始计算.从A开始迭代.此时并没有任何聚合点.则在A的位置生成一个聚合点设为A1.A1的位置与A相同。c) 迭代到B.如图 8所示.由于B的外包正方形与已有聚合点A1的外包正方形相交.所以B应聚合到A1中.新聚合后的聚合点的位置依然保持在A1原来的位置这主要是因为若采用A与B的质心会花费客户端较大的计算量.这在原始点要素数量较大时影响较大。d) 迭代到C.由于C的外包正方形不与现有的聚合点A1相交目前只有A1一个聚合点.因此C需要新建一个新的聚合点设为C1。e) 迭代到D.

11、类似于B.D与A1聚合.聚合后依然为A1。f) 迭代到E.新的问题来了.E的外包正方形同时与A1和C1相交.这时需判断E到A1、C1的距离.并将E聚合到距离近的那个聚合点中.这里E到C1更近.于是E聚合到了C1中。g) 剩下的如此迭代.直至完毕。图 7 基于方格距离的点聚合算法原始点要素图 8 基于方格距离的点聚合算法聚合过程图 9 基于方格距离的点聚合算法聚合结果1A、B、D2C、E3F、G、J、I4H表 2基于方格距离的点聚合算法聚合结果图 10 基于方格距离的点聚合算法更高缩放级别的聚合结果图 11 基于方格距离的点聚合算法缩放到只有一个聚合点的聚合结果4) 基于距离和最少点数量限制的点

12、聚合算法原理:此算法相当于先执行完基于距离的点聚合算法.然后再进行一次聚合点的分解。每个聚合点成立的条件是所聚合的原始点要素的数量应大于程序默认或用户指定的最少数量限制.否则将解散这个聚合点。此方法甚至不能算是一个独立的算法.因为此算法的前后相互独立.类比的.其实也可以建议一种基于网格和最少点数量限制的点聚合算法。优点:聚合后的显示相对精确.对显示的控制更灵活。缺点:运算速度相对较慢.因为本身基于距离的点聚合算法就已经是相对较慢了.再加上后期根据最少数量限制的阈值进行点聚合分解.速度更慢。使用此算法的在线地图:OpenlayersOpenlayers是一个开源的Javascript库基于修改过

13、的BSD许可发布.用来在Web浏览器显示地图维基百科。以下是Openlayers官方Javascript源码的算法核心:cluster: function if & this.features var resolution = this.layer.map.getResolution; ifresolution != this.resolution | !this.clustersExist this.resolution = resolution; var clusters = ; var feature, clustered, cluster; forvar i=0; i feature

14、= this.featuresi; if clustered = false; for=0; -j cluster = clustersj; ifthis.shouldCluster this.addToCluster; clustered = true; break; if clusters.pushthis.createCluster; this.clustering = true; this.layer.removeAllFeatures; this.clustering = false; if 0 if 1 var clone = clusters.slice; clusters =

15、; var candidate; forvar i=0, len=clone.length; i candidate = clonei;ifcandidate.attributes.count Array.prototype.push.apply; else clusters.push; this.clustering = true; / A legitimate feature addition could occur during this / addFeatures call. For clustering to behave well, features / should be rem

16、oved from a layer before requesting a new batch. this.layer.addFeatures; this.clustering = false; this.clusters = clusters; ,shouldCluster: function var cc = cluster.geometry.getBounds.getCenterLonLat; var fc = feature.geometry.getBounds.getCenterLonLat; var distance = Math.sqrt Math.pow, 2 + Math.p

17、ow, 2 / this.resolution ; return distance ;,:5) 其他的可用于在线地图点聚合的算法一般的点聚合聚类算法对在线地图点聚合均适用如K均值法等.但考虑运行效率和必要性的问题.因此.这里在不作运行效率、应用的在线地图等的评价。普通的遥感和GIS的图像聚类方法其实也可以应用在在线地图的点聚合中.由于运行的效率不高、实现容易程度难和必要性的不充分等原因可能并不适合实际运行.这里仅列举一些常见的遥感和GIS聚类方法:a. 启发式的方法:k-平均值和k-中心点等b. 层次方法: 对给定数据对象集合进行层次的分解 c. 基于密度的方法:DBSCAN和OPTICS等d

18、. 基于模型的方法: 基于模型的方法为每个簇假定了一个模型, 寻找数据对给定模型的最佳拟合在日后的在线地图的发展中.不排除由于新的其他需求而重新在其中使用上述这些额外的复杂算法。三、 在线地图点聚合功能的实现情况目前来说.由于在线地图的点聚合算法在算法难度和实现难度上均不难.也基本能解决地图上大数据量点显示的问题.所以算法本身可能并不是大部分地图用户和地图开发者所关心的问题.他们最关心的可能是该地图是否支持点聚合显示功能.该地图的开放API是否可以调用点聚合功能等问题。因此.本文对目前一些常用在线地图的点聚合功能进行调查.并列举其中的情况。Openlayers类型:开源的Javascript库

19、.用来在Web浏览器显示地图。是否支持点聚合显示:支持是否支持点聚合API调用:支持点聚合所用算法:基于距离和最少点数量的点聚合算法点聚合官方地址:点聚合功能实例:http:/openlayers.org/dev/examples/strategy-cluster-threshold.html图示:图 12 Openlayers点聚合示例Google Maps类型:在线地图是否支持点聚合显示:支持是否支持点聚合API调用:支持点聚合所用算法:基于方格和距离结合的点聚合算法。算法开源。点聚合官方地址:点聚合功能实例:图示:图 13 Google Maps点聚合示例特殊功能:Google Maps

20、支持服务端的点聚合功能将点聚合的算法运算转移到服务器端.运行完毕后再将聚合后的结果传到客户端中.Google通过FusionTablesLayer融合表.链接和KmlLayer两种服务端的方式。基于融合表的一个在线示例:。百度地图类型:在线地图是否支持点聚合显示:支持是否支持点聚合API调用:支持点聚合所用算法:基于方格和距离结合的点聚合算法.支持是否将聚合点的位置放置在被聚合的点的质心或第一个被聚合的点中.支持指定在何种级别才显示点或聚合点.支持限制最少聚合点数量。算法开源。点聚合官方地址:点聚合功能实例:图示:图 14 百度地图点聚合示例高德地图类型:在线地图是否支持点聚合显示:支持是否支

21、持点聚合API调用:支持点聚合所用算法:与百度地图基本一致。点聚合官方地址:点聚合功能实例:图示:图 15 高德地图点聚合示例ESRI类型:地图API如Javascript、Flex、Silverlight等是否支持点聚合显示:支持是否支持点聚合API调用:支持点聚合所用算法:同时支持基于网格的和基于点权重.等。点聚合官方地址:FlexFlex点聚合功能实例:图示:图 16 ESRI的FLex API地图点聚合示例腾讯地图原 搜搜地图类型:在线地图是否支持点聚合显示:不支持是否支持点聚合API调用:不支持关于不支持的相关地址和说明:腾讯论坛官方回答:暂时没有.需求已记下.对于大量Marker显

22、示的性能问题.确实是有这个聚合必要的.感谢!天地图类型:在线地图是否支持点聚合显示:不支持是否支持点聚合API调用:不支持关于不支持的相关地址和说明:无。综上所述l 天地图和腾讯地图虽然有地图API.但均不支持点聚合显示功能.若进行在线地图二次开发时若需要同时显示的点较多.那么应考虑选用其他地图。l 大部分地图或工具对点聚合显示均有较好支持。l 百度地图、高德地图、ESRI API等对点聚合的支持选项更多。l Google Maps、百度地图、Openlayers均对点聚合算法开源。四、 小结本文简单介绍了地图综合中在线地图的点聚合功能的常用算法和在线地图对点聚合功能的支持现状.为在线地图的二

23、次开发者提供了关于点聚合显示方面的一些参考和建议。在线地图的点聚合功能虽然简单.却十分有用.对于地图使用者来说.可以看到美观和突出显示的地图.对于二次开发者来说.节省了大量的开发时间和程序性能资源。本文存在偏颇、不妥和错误, 仅供讨论和参考.并敬请指正。参考文献1 郭庆胜.任晓燕等.智能化地理信息处理.MXX:XX大学出版社.2003.2 郭庆胜.黄远林等.空间推理与渐进式地图综合.MXX:XX大学出版社.2007.3 Habibullayevich, Gayratjon Kholmuradov, Xian Chen, and Hyoseop Shin. Efficient Filtering and Clustering Mechanism for Google Maps. J Journal of Advanced Management Science 1.1. 2013.4 Google. Too Many Markers!. .2014.01.06.5 正文中列举的所有链接地址。8 / 8

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!