• 需求场景

Web端通过地图范围变化事件,动态请求加载空间数据库中的点数据进行展示,指定的屏幕像素范围内,在不同的地图缩放级别显示不同数量的点(大比例尺下展示较多的点,表比例尺下加载一些特征点展示),从而使Web页面能够更为美观的展示数据。

  • 技术点

聚合算法,屏幕像素转地图距离、PostGIS、查询优化、存储过程

  • 接口参数

在此需求下,前端要调用服务接口,需要传入指定的像素celCount,当前地图分辨率mapResolution,当前地图比例尺mapScale,要查询的数据库表名tableName。考虑到查询返回一些点并不在当前屏幕显示的地图范围内,为避免显示这些多余的点而造成浏览器压力,可将当前地图范围作为查询条件,因此,还需要传入一个当前地图范围参数mapExtent。

  • 实现流程

获取数据表的空间范围tableExtent——》与mapExtent求交得到tempExtent——》获取tempExtent的空间矩形范围showExtent——》根据celCount,mapResolution和mapScale计算屏幕像素对应的地图距离showLen——》格网化分,根据showExtent和showLen计算横向和纵向格网数量——》双层for循环,用个网作为查询条件查询数据库在格网范围内的点集合,求取距离集合质心点最近的点返回——》最终返回一个点集合

  • 缺陷

使用格网将要查询的数据范围showExtent进行分割,在计算每个格网最终要显示的点时都需要调用一个数据库请求,在数据量大,像素数小的情况下,将显示范围在横向和纵向进行分割,最终的格网数量很多,反复调用数据库请求会造成该应用接口的性能很低,在控制器设置超时时间的情况下,后台没有返回数据,造成请求超时,后台出错的假象,最终的计算结果也展示不出来。

  • 优化

为了减少数据库请求的次数,使用存储过程!将格网的横向距离和纵向距离、横向数量和纵向数量、showExtent的左上坐标、数据表名作为存储过程的参数。存储过程的核心实现如图:

  • 效果展示:

小比例尺下展示效果

大比例尺下展示效果

  • 性能测试

100,0000数据量的动态查询性能测试结果,时间:秒

层级(比例尺)

10(像素)

20(像素)

40(像素)

60(像素)

4508.93552506767

0.669

0.218

0.103

0.078

9017.87105013534

0.794

0.328

0.152

0.087

18035.7421002707

1.071

0.390

0.150

0.096

36071.4842005414

1.466

0.488

0.166

0.113

72142.9684010827

1.608

0.563

0.194

0.129

144285.936802165

1.711

0.587

0.211

0.163

288571.873604331

1.665

0.565

0.239

0.205

577143.7364428712

1.549

0.539

0.301

0.220

1154287.4728857423

1.728

0.737

0.387

0.337

2308574.9457714846

2.149

1.185

0.846

0.846

  • 总结

在考虑实现该需求的时候,一直都在考虑这个功能是点抽稀的效果还是点聚合的效果。最终的结果说不上是抽稀结果也谈不上聚合效果,但最终的结果实实在在的高效地实现了动态筛选数据并加载显示在Web端。在参考了高德和Wish3D做的聚合标注效果之后,搜索了一些点抽稀和点聚合的相关算法,觉得两者的实现和使用场景是有很大区别的。

首先,点抽稀的特征抽稀结果是较少点的数量,最终保留的点的坐标值仍然是原来的值。以地形高程采样点为例,矢量化原始采样点数据,在一些区域存在密集程度较高的采样点,统计该区域内的采样点的高程值,若该区域密集点的高程值在高程差范围内,在该比例尺该区域内则没有必要保留所有的采样点,需要对该区域内的高程点进行抽稀,通常会根据一些运算规则指定优先级,依据该优先级对高程差范围内的采样点进行抽稀,最终在能够表现该区域地形形态的基础上均匀地保留一些采样点,以便于高效的进行差值运算获得等高线、TIN和数字高程模型,最终能够保证通过地形分析获得最终想要的结果。

点的聚合在地图点的展示形态上和点抽稀直观的表现类似,大量的点在地图上能够动态且美观的展示的实现,其实是聚合的实现效果。

聚合结果要展示聚合区域内数据最全面的信息,而且又不产生重叠覆盖,动态比例尺下展示数据不仅需要保证地图展示效果,而且展示出的点位又说明了点位数据的空间分布特性,并且,最终的聚合点并不一定是原来数据中的点,有可能是通过聚合算法计算出的一个位置,这是与 点抽稀一个显著的差别!!!!

试想,如果在筛选外业测量的地形数据点时,使用了聚合算法,就很有可能造成接下来差值结果与真是结果相差甚远,接下来的地形分析也很有可能是错误的,这样产生的最终决策也就不具备的参考价值。

本博客为原创博客,拥有绝对版权,转载请标明源地址:https://blog.csdn.net/luojingweikai/article/details/88401201

参考:https://blog.csdn.net/yaoxiaochuang/article/details/50571957

http://www.cnblogs.com/LBSer/p/4417127.html

大数据量点的地图展示,借助PostGIS实现动态点抽稀/聚合效果相关推荐

  1. BigData:基于python编程—根据中国各个城市地理坐标+人口、GDP大数据进行标记中国地图、热点图、动态图

    BigData:基于python编程-根据中国各个城市地理坐标+人口.GDP大数据进行标记中国地图.热点图.动态图 目录 输出结果 1.地理坐标图 2.GDP热点图 3.人口热力图 输出结果 1.地理 ...

  2. 数据库查询经常卡死?面对亿级大数据量,我是这么展示分析的

    建议你们看到文末,不会亏待你们 日常一提数据分析和可视化,就想到这个工具操作要多简单易用,图表要多美多炫,然而总是忽略背后的数据支撑. excel 几十万行数据就卡死崩,谈何数据透视表.可视化? 近千 ...

  3. echarts框架下大数据量展示的解决方案

    echarts+大数据量.这是个无解的问题! 大数据量,什么样的数据才算大呢?在echart 4.5.0版本中,画折线图,数据线一共1001000条,每条数据5002200个数据点,即最小数据5000 ...

  4. web 折线图大数据量拉取展示方案_【第2010期】QQ音乐Android客户端Web页面通用性能优化实践...

    前言 今日早读文章由QQ音乐客户端开发工程师@关岳分享,公号:云加社区(ID:QcloudCommunity,腾讯云官方开发者社区)授权分享. 正文从这开始~~ QQ音乐 Android 客户端的 W ...

  5. 大数据量树形数据表格展示, 虚拟表格,el-table, umy-ui, 表格懒加载

    1. 出现的问题 要展示树形数据表格,根据当前点击的表格行去请求新的数据并展示, 基于这种情况遇到以下问题 1). 当树形表格数据层级大于五级且数据量较多时, 浏览器崩溃 2). 当数据条数展示超出5 ...

  6. 上亿级的大数据量,如何高性能实现展示分析?

    上亿级的大数据量,如何高性能实现展示分析? 日常一提数据分析和可视化,就想到这个工具操作要多简单易用,图表要多美多炫,然而总是忽略背后的数据支撑. excel 几十万行数据就卡死崩,谈何数据透视表.可 ...

  7. 数据可视化大屏电商数据展示平台开发实录(Echarts柱图曲线图、mysql筛选统计语句、时间计算、大数据量统计)

    数据可视化大屏电商数据展示平台 一.前言 二.项目介绍 三.项目展示 四.项目经验分享 4.1 翻牌器 4.1.1 翻牌器-今日实时交易 4.1.2.翻牌器后端统计SUM函数的使用 4.2 不同时间指 ...

  8. EasyExcel 低内存导出大数据量的Excel方案探索 50万行 50列 (附:实现代码)

    文章目录 1.前言 2.准备工作 3.导出测试 3.1.单次查询.全量导出 3.2. 多次查询,多个文件,单次写入 3.3.多次查询,多个文件,多次写入 3.4.多线程导出探索 3.5.文件打包成ZI ...

  9. MySQL数据库如何解决大数据量存储问题

    FROM http://blog.csdn.net/likika2012/article/details/38816037 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存 ...

  10. 面试精讲之面试考点及大厂真题 - 分布式专栏 17 ElasticSearch解决大数据量检索难题

    17 ElasticSearch解决大数据量检索难题 理想的书籍是智慧的钥匙. --列夫·托尔斯泰 引言 如果你的项目里有超过千万上亿级别的数据,且数据日增量较大需要高性能检索时,如订单数据,你该怎么 ...

最新文章

  1. IOS 内存管理小结
  2. windows无法连接到打印机 操作失败,错误为0x00000002 解决方案
  3. new Map的妙用
  4. spring中的JdbcTemplate——JdbcTemplate的最基本用法
  5. python图像复制、显示、保存
  6. Tiling_easy version
  7. Java IO流学习总结七:Commons IO 2.5-FileUtils
  8. 诗词歌赋,样样精通!诗词古语小程序带你领略魅力古风丨实战
  9. java成绩前五名的代码_java 如何选出成绩排前5名的学生呢
  10. CI框架 -- URL
  11. 通信原理实验(〇):音频信号的播放蒙特卡洛模拟
  12. 微软小冰迎来了一个新姐妹:“欣小然”
  13. Himall商城普通帮助类(一)
  14. xy转utm坐标(个人推算)
  15. Unity3D中Grid Layout Group组件一键实现自动排版Image
  16. html 苹果微信录音js,基于JS开发微信网页录音功能的实例代码
  17. 大数据(3i)Sqoop安装和操作
  18. JavaScript基础小节——手写重点整理02
  19. Ubuntu 16.04无线网卡RTL8723BE频繁掉线及信号不足解决办法
  20. cad镜像后标注尺寸数字反了_CAD中文字镜像后倒过来了,怎么办?仅修改一个参数值就搞定了...

热门文章

  1. TensorFlow Serving 入门教程(Windows)
  2. android7.1刷supersu,Android怎么刷SuperSU 安卓系统刷SuperSU Pro教程
  3. oracle01004,Oracle goldengate的OGG-01004 OGG-1296错误
  4. JAVA基础之HttpServletResponse响应
  5. AIX 6:新特性概述
  6. MIT | 数据分析、信号处理和机器学习中的矩阵方法 笔记系列: Lecture 8 Norms of Vectors and Matrices
  7. 《预告 》 明天(9月19日),中国科学院自动化研究所首届智能决策论坛即将开幕!(附带10+位作者演讲主题及摘要)...
  8. 浅读《图解密码技术》--学习笔记
  9. 一个敷衍的开头。。。
  10. win7 定时开关机命令