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

【教程】数据可视化处理之2024年各省GDP排名预测!

过去的一年里,我国的综合实力显著提升,在新能源汽车、新一代战机、两栖攻击舰、航空航天、芯片电子、装备制造等领域位居全球前列。虽然全国各省市全年的经济数据公布还需要一段时间,但各地的工业发展数据财政收入数据已大概揭晓,从统计学来看各地全年的经济数据也基本稳定。

由于预测版本众多,本文仅选取一份,并借助Mapmost SDK for WebGL这款Web端三维地图开发引擎进行数据可视化处理操作演示。

数据参考: https://www.163.com/dy/article/JKP7LIRR05563WUS.html

注:数据仅供参考(不含港澳台)

一、静态图标展示

基于Mapmost SDK for WebGL 实现

该图通过静态图标直观展示了2024年全国各省GDP预测排名情况,并将31个省份划分为三个梯队,每个梯队采用不同的图标进行区分。

步骤如下:

  • 地图初始化:首先,我们设置了地图的基本样式,其中仅包含一个纯色背景图层,以确保地图的简洁性。
let map = new mapmost.Map({container: 'map',style: {version: 8,sources: {},glyphs: "https://delivery.mapmost.com/font/{fontstack}/{range}.pbf",layers: [  // 设置背景图层{id: "land",type: "background",layout: {},paint: { 'background-color': "#ccc" }}]},center: [106.57423432175028, 32.01709169307357],zoom: 4.175765971417573,userId: '***',  // 授权码
});
  • 绘制省界图层:通过调用map.addLayer接口,我们添加了一个类型为fill的图层,用以展示各省的边界。利用match表达式,我们为不同省份赋予了不同的颜色,颜色越深表示GDP值越高。
map.on('load',function(){// 添加数据源map.addSource('zg', {"type": "geojson","data": "./zg.geojson" // 替换为你的数据路径})// 按照GDP值将省份分成5个梯队const colorGroups = {first: ["广东省", "江苏省", "山东省", "浙江省", "四川省", "河南省"],second: ["湖北省", "福建省", "湖南省", "安徽省", "上海市", "北京市"],third: ["河北省", "陕西省", "江西省", "重庆市", "辽宁省", "云南省"],fourth: ["广西壮族自治区", "内蒙古自治区", "山西省", "贵州省", "新疆维吾尔自治区", "天津市"],fifth: ["黑龙江省", "吉林省", "甘肃省", "海南省", "宁夏回族自治区", "青海省", "西藏自治区"]};// 为每个梯队的省份设置颜色function getColorForProvince(provinceName) {if (colorGroups.first.includes(provinceName)) return "#ef6548";if (colorGroups.second.includes(provinceName)) return "#fc8d59";if (colorGroups.third.includes(provinceName)) return "#fdbb84";if (colorGroups.fourth.includes(provinceName)) return "#fdd49e";if (colorGroups.fifth.includes(provinceName)) return "#fef0d9";return "#fff"; }// 定义颜色匹配数组let colorData = ["match", ["get", "name"],]Object.values(colorGroups).flat().map(province => { colorData.push(province, getColorForProvince(province)) })colorData.push("#fff")// 添加省界图层map.addLayer({"id": "zg",     // 图层id"type": 'fill', // 图层类型"source": "zg", // 图层数据源"paint": {      // 绘制属性"fill-color": colorData,       // 填充颜色"fill-outline-color": "#fff",  // 填充轮廓颜色"fill-opacity": 1,             // 填充不透明度}});
})
  • 标注省份名称:接着,我们使用map.addLayer接口添加了一个类型为symbol的图层,用于显示省份名称。通过在layout参数中设置text-field为数据中的name属性,实现了省份名称的文字标注。
// 添加数据源
map.addSource('labels', {"type": "geojson","data": "./labels.geojson"
})// 添加省份标注图层
map.addLayer({"id": "name",       // 图层id"type": "symbol",   // 图层类型"source": "labels", // 图层数据源"layout": {         // 布局属性"text-field": ["get", "name"],   // 文本字段,从GeoJSON数据中获取'name'属性作为文本"text-variable-anchor": ["top"], // 文本锚点位置,始终在顶部"text-allow-overlap": true, // 允许文本重叠"text-size": 12, // 文本大小},"paint": { // 绘制属性"text-color": "#5c2223", // 文本颜色}
})
  • 自定义图标:在添加图标之前,我们使用map.loadImagemap.addImage方法加载自定义图标。随后,再次通过map.addLayer接口添加一个类型为symbol的图层,并利用match表达式为每个省份指定相应的图标,从而清晰地展示了各省份的GDP预测排名情况。
// 图标路径数组
const iconPaths = ['./icons/icon1.png', './icons/icon2.png', ..., './icons/icon31.png'];// 遍历图标路径数据并加载图标
iconPaths.forEach((path, index) => {map.loadImage(path, (error, image) => {if (error) throw error;map.addImage(`icon${index + 1}`, image);});
});// 设置数据源
map.addSource('icons', {"type": "geojson","data": "./icons.geojson"
})// 添加自定义图标图层
map.addLayer({"id": "icons",     // 图层id"type": "symbol",  // 图层类型"source": "icons", // 图层数据源"layout": {        // 布局属性"icon-image": [  // 图标图片,使用'match'表达式根据'name'属性匹配不同的图标'match',['get', 'name'],"广东省", "icon1","江苏省", "icon2",// ...省略其余图标匹配规则"icon" ],"icon-size": 0.25,          // 图标大小"icon-allow-overlap": true  // 允许图标重叠}
})

二、图层展示

基于Mapmost SDK for WebGL 实现

该图根据各省GDP的数值将31个省份划分为五个梯队,每个梯队采用不同大小和颜色的点进行区分。步骤如下:

  • 添加底图:首先,我们通过map.addRasterLayer2接口引入了天地图作为底图。
let option = {'id': 'tdt','project': '4490','source': {'tiles': ['<your TDT url>'],  // 替换成你的天地图地址}
}
map.addRasterLayer2(option)
  • 标注省份名称:虽然可以使用天地图的标注,但为了控制文字位置,我们选择了使用map.addLayer接口添加一个symbol类型的图层。在这个图层中,我们通过layout参数的text-field设置,从数据中提取name属性,以实现省份名称标注。代码参考静态图标展示第三步。
  • 点状图层绘制:接着,我们通过调用map.addLayer接口,添加了一个circle类型的图层。利用step表达式,我们根据GDP数值范围设定了不同的点样式,从而为每个梯队分配了独特的大小和颜色,以区分各省份的经济表现。
// 添加数据源
map.addSource("points", {type: "geojson",data: "./points.geojson",
});// 添加点图层
map.addLayer({id: "points",     // 图层idtype: "circle",   // 图层类型source: "points", // 图层数据源paint: { // 绘制属性"circle-color": [  // 圆的颜色,使用'step'表达式根据数值分段"step",["get", "num"], // 获取GeoJSON数据中的"num"属性,即GDP值"rgb(76,175,80)", 13000,  // 如果num小于13000,颜色为"rgb(76,175,80)""rgb(33,150,243)", 27000, // 如果num在13000到27000之间,颜色为"rgb(33,150,243)""rgb(255,152,0)", 47000,"rgb(244,67,54)", 60000,"rgb(156,39,176)" // 如果num大于60000,颜色为"rgb(156,39,176)"],"circle-stroke-width": 7, // 圆形边框的宽度"circle-stroke-color": [  // 圆形边框的颜色,使用'step'表达式根据数值分段"step",["get", "num"],"rgba(76,175,80,0.4)", 13000, // 如果num小于13000,颜色为"rgba(76,175,80,0.4)""rgba(33,150,243,0.4)", 27000, // 如果num在13000到27000之间,颜色为"rgba(33,150,243,0.4)""rgba(255,152,0,0.4)", 47000,"rgba(244,67,54,0.4)", 60000,"rgba(156,39,176,0.4)" // 如果num大于60000,颜色为"rgba(156,39,176,0.4)"],"circle-radius": [ // 圆形的半径,使用'step'表达式根据数值分段"step",["get", "num"],10, 13000, // 如果num小于13000,半径为1014, 27000, // 如果num在13000到27000之间,半径为1418, 47000,22, 60000,26 // 如果num大于60000,半径为26],}
});

基于Mapmost SDK for WebGL 实现

  • 此外,我们可以在该图层上实现点击交互功能,当我们点击某个省份时,将以弹框的形式展示该省的排名及其GDP数据等详细信息,从而增强互动性和信息呈现效果。
// 当点击图层id为'points'的图层时,执行以下函数
map.on('click', 'points', function (e) {// 添加弹框new mapmost.Popup().setLngLat(e.lngLat) // 设置弹框位置.setHTML(e.features[0].properties.no + "<br>" + e.features[0].properties.name + ":" + e.features[0].properties.num) // 设置弹框内容.addTo(map);
});

三、动态图标展示

动图封面

基于Mapmost SDK for WebGL 实现

该图以动态图标的形式展示了预测排名前十名的省份。步骤如下:

  • 创建Canvas图标:首先,根据设计需求自定义绘制Canvas图标,确保图标样式符合预期的视觉效果。
  • 添加标注图层:接着,通过调用用map.addLayer接口,添加一个symbol类型的图层,并将自定义的Canvas图标应用到该图层上,从而完成标注图层的设置。

此部分代码较长,可参考示例:https://www.mapmost.com/mapmost_docs/webgl/latest/docs/demo/2D_Vector_AddCanvasIcon/

上述数据为预测数据,仅供参考。根据2025年国家统计局主要统计信息发布日程安排,2025年1月17日10:00将发布2024年国民经济运行情况,届时将会公布2024年国内生产总值(GDP)初步核算结果等数据。

本篇教程为大家展示了Mapmost SDK for WebGL的数据可视化能力,作为面向开发者的Web端三维地图开发引擎,平台还提供包含点、线、面、蜂窝、热力等几十种数据可视化类型,支持百万量级数据渲染。

基于Mapmost SDK for WebGL 实现

基于专业知识构建,Mapmost SDK for WebGL 通用且易用,助力挖掘数据价值,如有相关需求也可私信咨询~

相关文章:

【教程】数据可视化处理之2024年各省GDP排名预测!

过去的一年里&#xff0c;我国的综合实力显著提升&#xff0c;在新能源汽车、新一代战机、两栖攻击舰、航空航天、芯片电子、装备制造等领域位居全球前列。虽然全国各省市全年的经济数据公布还需要一段时间&#xff0c;但各地的工业发展数据&#xff0c;财政收入数据已大概揭晓…...

Java 将RTF文档转换为Word、PDF、HTML、图片

RTF文档因其跨平台兼容性而广泛使用&#xff0c;但有时在不同的应用场景可能需要特定的文档格式。例如&#xff0c;Word文档适合编辑和协作&#xff0c;PDF文档适合打印和分发&#xff0c;HTML文档适合在线展示&#xff0c;图片格式则适合社交媒体分享。因此我们可能会需要将RT…...

深度学习的原理和应用

一、深度学习的原理 深度学习是机器学习领域的一个重要分支&#xff0c;其原理基于多层神经网络结构和优化算法。以下是深度学习的核心原理&#xff1a; 多层神经网络结构&#xff1a;深度学习模型通常由多层神经元组成&#xff0c;这些神经元通过权重和偏置相互连接。输入数据…...

CAPL语法基础

CAPL语法基础 目录 CAPL语法基础1. 引言2. 数据类型、变量与常量2.1 数据类型2.2 变量2.3 常量2.4 案例1&#xff1a;使用变量和常量计算圆的面积 3. 运算符与表达式3.1 算术运算符3.2 关系运算符3.3 逻辑运算符3.4 位运算符3.5 案例2&#xff1a;使用运算符实现简单的逻辑判断…...

安卓studio生成apk步骤

在写完app之后虽然能在真机上运行 但是在文件夹中找不到相应的apk &#xff0c;注意&#xff01;&#xff01;&#xff01;安卓 studio中可以自动生动生成 apk 下面是生成步骤&#xff1a; 步骤1&#xff1a;build ->make project 步骤2&#xff1a;build ->Generate si…...

Azure主机windows2008就地升级十步

Azure上云主机的windows2008系统需要进行就地升级。 按着微软的升级路径&#xff1a;win2008-->win2012-->win2016-->win2022 第一步&#xff1a;创建快照备份&#xff0c;防止升级失败第二步&#xff1a;升级托管磁盘&#xff0c;在VM管理的地方将磁盘升级成托管磁盘…...

解锁 C# 与 LiteDB 嵌入式 NoSQL 数据库

一、开篇&#xff1a;邂逅 C# 与 LiteDB 新世界 在当今的软件开发领域&#xff0c;数据管理如同建筑的基石&#xff0c;而选择一款合适的数据库则是项目成功与否的关键因素之一。对于 C# 开发者来说&#xff0c;面对琳琅满目的数据库选项&#xff0c;如何抉择常常令人头疼。今…...

7 分布式定时任务调度框架

先简单介绍下分布式定时任务调度框架的使用场景和功能和架构&#xff0c;然后再介绍世面上常见的产品 我们在大型的复杂的系统下&#xff0c;会有大量的跑批&#xff0c;定时任务的功能&#xff0c;如果在独立的子项目中单独去处理这些任务&#xff0c;随着业务的复杂度的提高…...

七星棋类游戏源码:两百玩法开源修复

这套七星棋类源码&#xff0c;覆盖六大省区&#xff08;湖南双端、湖北、山西、江苏、贵州等&#xff09;&#xff0c;安卓与苹果端都能轻松适配&#xff0c;汇集 6 个端口与 200 多种子游戏玩法。此版本为二次开发修复版&#xff0c;功能完备且源码完全公开&#xff0c;包括乐…...

未来世界:科技引领的奇幻篇章

科技发展的这么快&#xff0c;未来的世界将会是什么样的呢&#xff1f; 在人类历史的长河中&#xff0c;科技始终是推动社会进步的核心力量。从古老的四大发明到如今的人工智能、基因编辑、量子计算等前沿技术&#xff0c;科技发展的速度日新月异。我们不禁会想&#xff0c;在…...

[python3]Uvicorn库

Uvicorn 是一个用于运行 ASGI&#xff08;Asynchronous Server Gateway Interface&#xff09;应用程序的轻量级服务器。ASGI 是 Python Web 应用程序接口的一种扩展&#xff0c;它不仅支持传统的同步 Web 请求处理&#xff0c;还支持异步请求处理、WebSockets 以及 HTTP/2。 h…...

istio-proxy oom问题排查步骤

1. 查看cluster数量 cluster数量太多会导致istio-proxy占用比较大的内存&#xff0c;此时需检查是否dr资源的host设置有配置为* 2. 查看链路数据采样率 若采样率设置过高&#xff0c;在压测时需要很大的内存来维护链路数据。可以调低采样率或增大istio-proxy内存。 检查iop中…...

Flutter:使用FVM安装多个Flutter SDK 版本和使用教程

一、FVM简介 FVM全称&#xff1a;Flutter Version Management FVM通过引用每个项目使用的Flutter SDK版本来帮助实现一致的应用程序构建。它还允许您安装多个Flutter版本&#xff0c;以快速验证和测试您的应用程序即将发布的Flutter版本&#xff0c;而无需每次等待Flutter安装。…...

关于物联网的基础知识(二)——物联网体系结构分层

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于物联网的基础知识&#xff08;二&a…...

[程序设计]—代理模式

[程序设计]—代理模式&#x1f473; 本文章记录学习于——52.面向切面&#xff1a;AOP-场景模拟_哔哩哔哩_bilibili 最近闲来无事&#xff0c;在学习Spring的源码&#xff1a; 后面慢慢更新源码系列blog&#xff0c;希望多多关注&#x1f64f;&#x1f64f; 目前已经总结的b…...

26、【OS】【Nuttx】用cmake构建工程

背景 之前wiki 14、【OS】【Nuttx】Nsh中运行第一个程序 都是用 make 构建&#xff0c;准备切换 cmake 进行构建&#xff0c;方便后续扩展开发 Nuttx cmake 适配 nuttx项目路径下输入 make distclean&#xff0c;清除之前工程配置 adminpcadminpc:~/nuttx_pdt/nuttx$ make …...

C#中序列化的选择:JSON、XML、二进制与Protobuf详解

C#中序列化的选择&#xff1a;JSON、XML、二进制与Protobuf详解 在C#开发中&#xff0c;序列化是将对象转换为可存储或传输的格式的过程&#xff0c;而反序列化则是将存储或传输的数据重新转换为对象的过程。选择合适的序列化方式对应用程序的性能、可维护性和兼容性至关重要。…...

单片机实现模式转换

[任务] 要求通过单片机实现以下功能&#xff1a; 1.单片机有三种工作模式(定义全局变量MM表示模式&#xff0c;MM1&#xff0c;2&#xff0c;3表示三种不同的模式) LED控制模式 风扇控制模式 蜂鸣器控制模式 2.可以在某一个模式下通过拓展板KEY1按键控制设备 (按…...

Shader -> SweepGradient扫描渐变着色器详解

XML文件 <com.example.myapplication.MyViewxmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_gravity"center"android:layout_height"400dp"/>自定义View代码 c…...

鼠标过滤驱动

文章目录 概述代码参考资料 概述 其编写过程大体与键盘过滤驱动相似&#xff0c;只需要切换一下附加的目标设备以及创建的设备类型等。但在该操作后依然无法捕获到Vmware创建的win7操作系统的鼠标irp信息&#xff0c;于是通过在获取鼠标驱动&#xff0c;遍历其所有的设备进而附…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...