当前位置: 首页 > news >正文

基于MapVGL的地理信息三维度数据增长可视化

写在前面


  • 工作中接触,简单整理
  • 博文内容为 基于MapVGL的地理信息维度数据增长可视化 Demo
  • 理解不足小伙伴帮忙指正

对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》


基于MapVGL的地理信息维度数据增长可视化

MapVGL,是一款基于WebGL的地理信息可视化库,可以用来展示大量基于3D的地理信息点线面数据。设计初衷主要是为了解决大数据量的三维地理数据展示问题及一些炫酷的三维效果。

MapVGL通过地理信息数据生成可视化图层,然后将这些图层添加在地图上层进行管理。在这个过程中,它使用了WebGL技术在canvas中绘制图形,从而有效地提高了页面性能。此外,MapVGL还提供了大量的模型,包括点图层、线图层、聚合类图层等,每种模型都提供了示例,可以直接运行查看效果。

需要注意的是,地理信息数据格式是规定好的,必须具有geometry字段来定义坐标信息,同时可通过properties字段添加附件信息。而geometry字段数据格式使用的是GeoJSON的规范。

官方Demo: https://mapv.baidu.com/gl/examples/

官网文档:https://mapv.baidu.com/gl/docs/index.html

下面我们看一个通过 MapVGL 来实现的数据可视化的Demo,某公司全国网点建设历年增长可视化

Demo 地址:https://github.com/LIRUILONGS/MapVGL_Demo

效果图

在这里插入图片描述

实现相对简单,渲染地图,然后添加图层,通过 setInterval 方法对图层进行重复渲染,填充数据为当前数据和增量数据

渲染地图

使用百度地图的WebGL版本(BMapGL)来初始化一个地图实例

 var map = new BMapGL.Map('map_container', {restrictCenter: false,style: { styleJson: options.style || darkStyle }});

使用mapvgl来创建一个视图(View)对象,该对象与先前创建的地图(map)相关联。

 var view = new mapvgl.View({map: map});           

准备图层数据

  // ,绘制带波纹扩散的圆图层数据 var data = cities.map((city, index) => {var cityCenter = mapv.utilCityCenter.getCenterByCityName(city);return {geometry: {type: 'Point',coordinates: [cityCenter.lng, cityCenter.lat]},color: colors[2],// 圆的半径size: 5};});// 波纹动画图层数据 let datas = cities.map((city, index) => {let cityCenter = mapv.utilCityCenter.getCenterByCityName(city);return {geometry: {type: 'Point',coordinates: [cityCenter.lng, cityCenter.lat]},};});............................// 柱状体图层数据// 飞线绘制

周期绘制

        let i = 1setInterval(() => {var waveLayer = new mapvgl.CircleLayer({type: 'wave',radius: r => 3 * r,duration: 1 / 3,trail: 3});view.addLayer(waveLayer);waveLayer.setData(data.slice(0, i));var rippleLayer = new mapvgl.RippleLayer({size: 500000,unit: 'm',color: '#0ff',enablePicked: true,onClick: (e) => { // 点击事件console.log(e);},});view.addLayer(rippleLayer);rippleLayer.setData(datas.slice(0, i));.................i = i + 1;if (i == cities.length + 2) {i = 1view.removeAllLayers()}},3000)

博文部分内容参考

© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知,这是一个开源项目,如果你认可它,不要吝啬星星哦 😃


github 地址:https://github.com/huiyan-fe/mapv

官方Demo: https://mapv.baidu.com/gl/examples/

官网文档:https://mapv.baidu.com/gl/docs/index.html


© 2018-2023 liruilonger@gmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)

相关文章:

  • 网络安全产品之认识蜜罐
  • 第五章:变换矩阵
  • [职场] 会计学专业学什么 #其他#知识分享#职场发展
  • Python访问数据库
  • 【LeetCode: 103. 二叉树的锯齿形层序遍历 + BFS】
  • GPT-4带来的思想火花
  • 开发实体类
  • 28. 找出字符串中第一个匹配项的下标
  • 模型 IPO(输入、处理、输出)学习模型
  • 网络协议与攻击模拟_17HTTPS 协议
  • CTFshow web(文件上传158-161)
  • EXTI外部中断
  • 面试经典150题——螺旋矩阵
  • 下一代Windows系统曝光:基于GPT-4V,Agent跨应用调度,代号UFO
  • C语言第二十六弹---字符串函数(下)
  • 【391天】每日项目总结系列128(2018.03.03)
  • angular2开源库收集
  • CSS居中完全指南——构建CSS居中决策树
  • css属性的继承、初识值、计算值、当前值、应用值
  • Git学习与使用心得(1)—— 初始化
  • Java基本数据类型之Number
  • java小心机(3)| 浅析finalize()
  • mysql 数据库四种事务隔离级别
  • PermissionScope Swift4 兼容问题
  • vue-cli3搭建项目
  • 闭包--闭包之tab栏切换(四)
  • 从setTimeout-setInterval看JS线程
  • 分类模型——Logistics Regression
  • 复杂数据处理
  • 技术胖1-4季视频复习— (看视频笔记)
  • 强力优化Rancher k8s中国区的使用体验
  • 深度学习中的信息论知识详解
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 进程与线程(三)——进程/线程间通信
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #Linux(帮助手册)
  • #微信小程序(布局、渲染层基础知识)
  • (1)(1.13) SiK无线电高级配置(五)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • ... 是什么 ?... 有什么用处?
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net连接MySQL的方法
  • .net网站发布-允许更新此预编译站点
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件