地图 点聚合
2015-03-25 16:08
507 查看
基于方格和距离结合的点聚合算法(详细)
原理:初始时没有任何已知聚合点,然后对每个点进行迭代,计算一个点的外包正方形,若此点的外包正方形与现有的聚合点的外包正方形不相交,则新建聚合点(区别于前面基于直接距离的算法,这里不是计算点与点间的距离,而是计算一个点的外包正方形,正方形的变长由用户指定或程序设置一个默认值), 若相交,则把该点聚合到该聚合点中,若点与多个已知的聚合点的外包正方形相交,则计算该点到到聚合点的距离,聚合到距离最近的聚合点中,如此循环,直到所有点都遍历完毕。每个缩放级别都重新遍历所有原始点要素。
此方法可以算是基于方格与基于距离的算法的一个结合算法。
优点:运算速度相对较快,每个原始点只需计算一次,可能会有点与点距离计算,聚合点较精确的反映了所包含的原始点要素的位置信息。
缺点:速度不如完全基于方格的速度快等。
使用此算法的在线地图:Google Maps。以下是Google给出的一个基于方格距离的点聚合示意图
步骤示例:
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,类似于B,D与A1聚合,聚合后依然为A1。
f)迭代到E,新的问题来了,E的外包正方形同时与A1和C1相交,这时需判断E到A1、C1的距离,并将E聚合到距离近的那个聚合点中,这里E到C1更近,于是E聚合到了C1中。
g)剩下的如此迭代,直至完毕。
http://wenku.baidu.com/link?url=vO7a7TQXUC_LWqpTJEhoM5SjpZHSCp9tNtDYn6tMhYOlUQ3emILq9Rev9UwPrX8lgbj9FJL9oqaX6FfwWhpY70kOSJ58Cdpbk0DQbBgvcoy
原理:初始时没有任何已知聚合点,然后对每个点进行迭代,计算一个点的外包正方形,若此点的外包正方形与现有的聚合点的外包正方形不相交,则新建聚合点(区别于前面基于直接距离的算法,这里不是计算点与点间的距离,而是计算一个点的外包正方形,正方形的变长由用户指定或程序设置一个默认值), 若相交,则把该点聚合到该聚合点中,若点与多个已知的聚合点的外包正方形相交,则计算该点到到聚合点的距离,聚合到距离最近的聚合点中,如此循环,直到所有点都遍历完毕。每个缩放级别都重新遍历所有原始点要素。
此方法可以算是基于方格与基于距离的算法的一个结合算法。
优点:运算速度相对较快,每个原始点只需计算一次,可能会有点与点距离计算,聚合点较精确的反映了所包含的原始点要素的位置信息。
缺点:速度不如完全基于方格的速度快等。
使用此算法的在线地图:Google Maps。以下是Google给出的一个基于方格距离的点聚合示意图
步骤示例:
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,类似于B,D与A1聚合,聚合后依然为A1。
f)迭代到E,新的问题来了,E的外包正方形同时与A1和C1相交,这时需判断E到A1、C1的距离,并将E聚合到距离近的那个聚合点中,这里E到C1更近,于是E聚合到了C1中。
g)剩下的如此迭代,直至完毕。
http://wenku.baidu.com/link?url=vO7a7TQXUC_LWqpTJEhoM5SjpZHSCp9tNtDYn6tMhYOlUQ3emILq9Rev9UwPrX8lgbj9FJL9oqaX6FfwWhpY70kOSJ58Cdpbk0DQbBgvcoy
相关文章推荐
- 四叉树算法:iOS地图点标记聚合方案
- 百度地图API多个点聚合时,标注添加的标签label地图刷新就丢失的问题解决
- 百度地图经纬度转换+反地址解析+显示可视区域内标注点+地图自动刷新+标注的聚合
- ionic 修改应用名称 、启动页出现黑白屏 及 修改百度离线地图 点聚合 图标
- android 地图开发之聚合,定位
- 百度地图点聚合开发-地图找房功能
- android地图点聚合
- OpenLayers系列(3)——使用第三方地图API(GoogleMap),聚合多个地图数据
- 地图点聚合优化方案
- 安卓地图兴趣点 聚合加载
- 地图点聚合优化方案
- Github项目解析(十四)-->快速实现自定义地图聚合操作
- Android 地图marker聚合显示的算法,以及完整demo
- 关于地图marker的聚合问题
- 【Silverlight】Bing Maps学习系列(四):使用图钉层(Pushpin layer)及地图图层(MapLayer)
- 安卓开发之地图加载
- AE开发----获取地图上当前选中的要…
- Android百度地图开发无法显示地图原因
- maven项目的继承和聚合实例
- 测试地图插入,看csdn支持不支持