ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:22.86KB ,
资源ID:15817499      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15817499.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(在线地图的点聚合算法及现状Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

在线地图的点聚合算法及现状Word格式文档下载.docx

1、4) 基于距离和最少点数量限制的点聚合算法 125) 其他的可用于在线地图点聚合的算法 14三、 在线地图点聚合功能的实现情况 14Openlayers 14Google Maps 15XX地图 16高德地图 17ESRI 18腾讯地图(原 搜索地图) 19天地图 20四、 小结 20参考文献 21一、 概述地图综合所要解决的问题是把一个空间目标集合按照专题内容转换为一个最能代表该集合主要空间特征的更抽象的空间目标集合,并符号化该抽象后的空间目标集合,以最有效的方式传输地理空间知识。点聚合(point cluster),或又叫点聚类,是地图综合的其中一种方法,主要解决地图中点要素很多时候的表示

2、困难的问题。点聚合可以用少量的点或图标来表示地图中的所有点,让地图显示更清晰明朗。如图 1所示。图 1 在线地图的点聚合示意图3) 本文关注的重点本文主要关注二维在线电子地图中点的聚合显示所用到的算法和目前的在线地图对点聚合显示的支持情况。电子地图中,通常会遇到在某个地区包含成千上万个点要素的情况,若同时加载显示在电子地图中,会显得很乱、覆盖地图底图,也会占用大量系统资源,甚至引发浏览器的崩溃、卡顿,极大的影响用户体验,因此点聚合显示是电子地图十分需要的一项功能。目前的常见在线地图(或其API)是否支持点聚合?若支持点聚合的算法是什么?是一个值得关注的问题。本文尝试对这两个问题进行解答。二、

3、在线地图点聚合的算法特点a) 数据相对简单,只有点要素,点没有形状变化,因此没有形状对聚合影响。b) 没有评价聚合精确度的唯一指标,(不考虑运行速度的情况下)不同的算法不同的显示方式对用户体验影响并不会太大。c) 可能需考虑的方面:聚合点中包含的原始点要素最大数量限制、聚合点间的距离限制、点要素的权重、部分缩放级别是否该显示聚合点等。d) 一般的点聚合(聚类)算法对在线地图点聚合虽适用(如K均值法等),但需平衡运行效率和必要性,并且极少见这些复杂方法应用实际的在线地图中。必要性目前在线地图的点聚合算法已有较成熟的应用,不少在线地图均提供点聚合的功能及API。点聚合算法虽然相对简单,但却很实用,

4、若缺少了,在线地图则无法对大数据量的点要素进行较好的显示。对于在线地图的二次开发者来说,这也是一个十分重要的功能,例如要在地图上显示同一个站点中的多个传感器等,若缺少点聚合功能的支持,则是几乎无法辨别清楚地图上的这些传感器点要素。运行方式点聚合的运算可以放在客户端(浏览器),也可以放在服务端运算(如Google Maps的融合表)完毕再传给客户端。表现形式在计算机上表现地点的点聚合方式多种多样,并无定论,聚合后的显示样式,不同缩放级别下是否显示不同图标或在以下列举几种常见的表现形式: 多个点聚合后还是点要素,换不同图标显示,或在图标中同时显示该聚合点所包含的原始点要素的数量,点击聚合点后,地图

5、视图会自动切换到该聚合点所包含的所有点的最小包围盒地图范围中。 多个点聚合后还是点要素,换不同图标显示,或在图标中同时显示该聚合点所包含的原始点要素的数量,点击聚合点后,地图会弹出该聚合点的所聚合的所有点的位置信息,但并不缩放和移动地图。 多个点聚合后是面要素,以颜色或数字表示所聚合的点的数量,点开后若单位面积内若依然包含较多点则继续显示面要素,若点较少则显示原始的点要素。此种方法较少见,常见于上述两种方法。算法本文关注的重点是在线地图点聚合算法的大致情况,而不是每个算法详细的运行效率和优劣情况。因此,以下对可搜到的在线地图点聚合算法进行简要列举:1) 基于网格的点聚合算法(Grid-base

6、d Clustering)原理:将地图划分成指定尺寸的正方形(每个缩放级别不同尺寸),然后将落在对应格子中的点聚合到该正方形中(正方形的中心),最终一个正方形内只显示一个点,并且点上显示该聚合点所包含的原始点的数量。优点:运算速度较快,每个原始点只需计算一次,没有复杂的距离计算。缺点:有时明明很相近的点,却仅仅因为网络的分界线而被逼分开在不同的聚合点中,此外,聚合点的位置采用的是该网格的中心,而非该网格的质心,这样聚合出来的点可能不能较精确反映原始点的信息。使用此算法的在线地图:缺。以下是Google给出的一个基于距离的点聚合示意图:图 2 基于网格的点聚合算法(聚合前)图 3 基于网格的点聚

7、合算法(聚合后)2) 基于距离的点聚合算法(Distance-based Clustering)根据点与点之间的距离进行聚合,对每个点进行迭代,若被迭代的点在某个已有聚合点的指定阈值的距离范围内,那么这个点就聚合到该点,否则则新建一个聚合点,如此循环,但聚合后的点的坐标依然是该聚合点创建时的第一个点的坐标位置。聚合点较精确的反映了所包含的原始点要素的位置信息。需要计算点与点之间的距离,计算相对复杂。图 4 基于距离的点聚合算法(原始点要素)图 5 基于距离的点聚合算法(聚合过程)图 6 基于距离的点聚合算法(聚合结果)蓝1红2黄7、8绿3、4、6粉红5浅绿9表 1基于距离的点聚合算法(聚合结果

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

9、计算一次,可能会有点与点距离计算,聚合点较精确的反映了所包含的原始点要素的位置信息。速度不如完全基于方格的速度快等。Google Maps。以下是Google给出的一个基于方格距离的点聚合示意图:步骤示例:a) 默认输入的数组的顺序是如图 7 基于方格距离的点聚合算法(原始点要素)所示的字母顺序。b) 初始计算,从A开始迭代,此时并没有任何聚合点,则在A的位置生成一个聚合点(设为A1),A1的位置与A相同。c) 迭代到B,如图 8所示,由于B的外包正方形与已有聚合点A1的外包正方形相交,所以B应聚合到A1中,新聚合后的聚合点的位置依然保持在A1原来的位置(这主要是因为若采用A与B的质心会花费客

10、户端较大的计算量,这在原始点要素数量较大时影响较大)。d) 迭代到C,由于C的外包正方形不与现有的聚合点A1相交(目前只有A1一个聚合点),因此C需要新建一个新的聚合点(设为C1)。e) 迭代到D,类似于B,D与A1聚合,聚合后依然为A1。f) 迭代到E,新的问题来了,E的外包正方形同时与A1和C1相交,这时需判断E到A1、C1的距离,并将E聚合到距离近的那个聚合点中,这里E到C1更近,于是E聚合到了C1中。g) 剩下的如此迭代,直至完毕。图 7 基于方格距离的点聚合算法(原始点要素)图 8 基于方格距离的点聚合算法(聚合过程)图 9 基于方格距离的点聚合算法(聚合结果)A、B、DC、E3F、

11、G、J、I4H表 2基于方格距离的点聚合算法(聚合结果)图 10 基于方格距离的点聚合算法(更高缩放级别的聚合结果)图 11 基于方格距离的点聚合算法(缩放到只有一个聚合点的聚合结果)4) 基于距离和最少点数量限制的点聚合算法此算法相当于先执行完基于距离的点聚合算法,然后再进行一次聚合点的分解。每个聚合点成立的条件是所聚合的原始点要素的数量应大于程序默认或用户指定的最少数量限制,否则将解散这个聚合点。此方法甚至不能算是一个独立的算法,因为此算法的前后相互独立,类比的,其实也可以建议一种“基于网格和最少点数量限制”的点聚合算法。聚合后的显示相对精确,对显示的控制更灵活。运算速度相对较慢,因为本身

12、基于距离的点聚合算法就已经是相对较慢了,再加上后期根据最少数量限制的阈值进行点聚合分解,速度更慢。Openlayers(Openlayers是一个开源的Javascript库(基于修改过的BSD许可发布),用来在Web浏览器显示地图【维基百科】)。以下是Openlayers官方Javascript源码的算法核心:cluster: function(event) if(!event | event.zoomChanged) & this.features) if(resolution != this.resolution | !this.clustersExist() this.resoluti

13、on = resolution; var clusters = ; var feature, clustered, cluster; feature = this.featuresi; if(feature.geometry) clustered = false; for(var j=clusters.length-1; j=0; -j) cluster = clustersj; if(this.shouldCluster(cluster, feature) this.addToCluster(cluster, feature); clustered = true; break; if(!cl

14、ustered) clusters.push(this.createCluster(this.featuresi); this.clustering = true; this.clustering = false; if(clusters.length 0) if(this.threshold 1) var clone = clusters.slice(); clusters = ; var candidate; for(var i=0, len=clone.length; ilen; +i) candidate = clonei; else clusters.push(candidate);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1