《数据可视化》课程期末项目_地理交通数据可视化

news2025/1/20 1:56:36
2022年上海疫情爆发期间交通数据可视化分析
《数据可视化》课程期末项目报告-选题:地理数据可视化

GitHub源码地址(如果有用点个 star 吧~谢谢!)

文章目录

  • 1.0 项目简介
  • 2.0 数据简介
    • 2.1 航线数据
    • 2.2 公交路线数据
    • 2.1 项目流程
  • 3.0 数据处理
    • 3.1 航线数据
    • 3.2 公交路线数据
      • 3.2.1 公交路线上点的经纬度数据
      • 3.2.2 词云图数据
  • 4.0 可视化设计
    • 4.1 公交路线图
      • 4.1.1 公交路线
      • 4.1.2 动态效果
      • 4.1.3 公交路线途径站点的词云图
    • 4.2 航线部分
      • 4.2.1 动态背景
      • 4.2.2 中国地图
      • 4.2.3 航线+时间轴
  • 5.0 编程实现 (不用堆砌所有代码,仅介绍核心的代码内容)
    • 5.1 中国地图航线+时间轴
    • 5.2 动态背景
    • 5.3 公交路线
      • 5.3.1 公交路线
      • 5.3.2 动态效果
    • 5.4 公交途径站词云图
  • 6.0 运行环境配置及测试
    • 6.1 环境配置
      • 6.1.1 桌面端运行源文件
    • 6.2 使用技术

1.0 项目简介

上海各高校自三月中上旬开始封校管理,并进行线上教学。高校人员密集,聚集性新冠病例频出,加之封校封楼导致日常生活、外出就医等方面有诸多不便,因此大学生返乡意愿格外强烈。五月疫情逐渐好转后,上海各高校逐渐放开申请离校返乡的通道,但如何返乡又成为了新的难题。比如买好机票后被临时通知航班取消,又比如找不到前往机场、火车站的公共交通,只能步行或骑自行车。因此,我们决定对上海疫情爆发期间的交通数据进行可视化分析,以航班数据可视化为主要切入点,同时分析直达机场各航站楼的公交数据。

2.0 数据简介

2.1 航线数据

主要来自上海机场公司的官网以及飞常准APP。昨天、今天、明天三天的详细航班数据可在上海机场官网可以获;而上海近三年航班数据(只包含执行、取消、延误的航班数量)由飞常准APP获取。

image-20220618114554187

2.2 公交路线数据

来自上海机场官网机场交通页面。

image-20220618114454217

2.1 项目流程

  • 数据的采集部分,以搜集可能用于项目的数据为目标,汇总整合,
  • 采用上海机场官网和飞常准APP的航线数据绘制航线页面,采用上海机场官网的机场公交交通部分数据绘制公交路线页面。

3.0 数据处理

3.1 航线数据

获取航线初始站和目的站的经纬度信息,如下图所示:

image-20220618162934474

3.2 公交路线数据

3.2.1 公交路线上点的经纬度数据

在公交路线可视化这部分,是将地图上公交路线上的每个点渲染出来产生的效果,也就是说需要用到路线上每一个站点到站点之间每个点的经纬度。这部分数据的预处理工作量就很大了,因为我们只有公交途径站点的名称,并没有对应的路线经纬度数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sHa1qylo-1684760354334)(项目报告.assets/image-20220618123147203.png)]

我们先要去把所有公交途径站点的经纬度信息获取下来,然后再获取途径站点间路线的经纬度数据。我们先找到一个百度地图的网页,然后分析里面的源码,发现有一个变量就是我们需要的数据,接着把它打印出来,再复制到json文件中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3pQJYHNl-1684760354335)(项目报告.assets/image-20220618123224035.png)]

以这种操作循环进行下去,知道所有站点间的路线数据都拿下来。

3.2.2 词云图数据

接着是梳理所有途径站的名称,得到第二块数据用于制作词云图。

4.0 可视化设计

4.1 公交路线图

可视化的意义在于可以更加直观地估计各公交路线离自己的距离,方便选择公交路线

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A3A5P2WR-1684760354335)(项目报告.assets/image-20220618120126393.png)]

4.1.1 公交路线

每一条亮色的线就是一条公交路线,每一条公交路线都精确地落在了地图的具体街道上。这些路线是以虹桥1号航站楼、虹桥2号航站楼、浦东1号航站楼、浦东2号航站楼为起点的29路公交路线。当地图被放大后,亮线依然可以准确地显示在街道之上,不会产生偏差,可以给用户直观准确的视觉体验。

4.1.2 动态效果

每条亮线上都会有高亮的点运动的效果,运动的方向就是公交前进的方向。将整个页面由静态转换成动态,避免用户产生视觉疲劳,同时将公交前进方向可视化,能够帮助用户理解公交路线。

4.1.3 公交路线途径站点的词云图

显示了所有公交路线途径站点的词云图。这个词云显示可以帮助了解到哪些站是交通枢纽,比如说这个航程园,就有3-4路公交线同时经过,那他就应该是个交通枢纽,可以前往换乘或者在疫情特殊时期避开人群。

image-20220618124244905

4.2 航线部分

效果是在动态背景上绘制了一张中国地图,然后随着时间轴的节点变化,渲染出节点那天的航站信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JnTi26cX-1684760354336)(项目报告.assets/image-20220618124759386.png)]

4.2.1 动态背景

旋转的网格图和箭头可以让背景可以给到更加活泼的视觉体验

4.2.2 中国地图

中国地图可以移动,缩放,鼠标移动后会高亮,并且显示省份名称

4.2.3 航线+时间轴

每天的航线数据会随着时间轴节点的改变而改变,小飞机图标和红点的搭配结合,可以模拟一种飞机后有彩带的效果,丰富好看。

5.0 编程实现 (不用堆砌所有代码,仅介绍核心的代码内容)

5.1 中国地图航线+时间轴

先将每天的航线信息封装成了一个数组,然后和时间轴的对应节点绑定,将所有的航线信息放到 myOption 数组当中。

时间轴的 option 配置为 object 对象

var option = {
	// 基础数据,包括地图时间轴
	baseOption:{},
	// 我的航线和节点绑定的数据
	option: myOption
}

再渲染出来,就可以实现地图上的航班信息随着时间轴的改变而改变的效果。这边的航线部分就是由小飞机以及红点构成,飞机是自己导入的图片。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2xlJlA2H-1684760354336)(项目报告.assets/image-20220618115557714.png)]

5.2 动态背景

绘制旋转的网格图,导入网格照片,然后给照片自定义一个顺时针旋转函数

旋转箭头:导入两个箭头,将箭头控制在地球的边缘位置,添加逆时针旋转函数

以旋转的网格图为例:

  .map2 {
    background: url(../images/grid.png);
    animation: rotate1 15s linear infinite;
    opacity: 0.6;
  }
  @keyframes rotate1 {
    form {
      transform: translate(-50%, -50%) rotate(0deg);
    }
    to {
      transform: translate(-50%, -50%) rotate(360deg);
    }
  }

5.3 公交路线

5.3.1 公交路线

对初步数据处理过后的 lines-bus.json 文件中数据再次处理成程序需要的数据格式,返回一个大数组,里面分别是一个个小数组,分别对应一条公交路线。这里先使用了 map 函数遍历 busLines 内的每个数组元素,将每个数组元素都整合成 points 的形式,最后每个 busLines 元素会返回一个 object 对象,有属性

{
	coords: points //公交路线上所有点的经纬度坐标
	lineStyle:{} // 渲染公交路线的样式
}

最后返回一个大数组 busLines[]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G5atdzVT-1684760354337)(项目报告.assets/image-20220618120736553.png)]

5.3.2 动态效果

线的效果需要赋予一个 slient = true;动态效果,需要删除 slient 属性,赋予动态效果 effect 对象

image-20220618120630832

5.4 公交途径站词云图

进入网站:https://www.wordclouds.com/

点击 Shape 选择词云的地图 maps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-llykWYPF-1684760354338)(项目报告.assets/image-20220618161318120.png)]

在 word list 中编辑要生成词云的单词集合,weight 表示单词的权重大小

image-20220618161407756

6.0 运行环境配置及测试

6.1 环境配置

6.1.1 桌面端运行源文件

windows10 + vscode1.68.1 运行。vscode 内下载插件 live server ,下载完成后,在 index.html 文件内右键点击 open with livesever 或者在 index.html 文件内按下快捷键 Alt + L + O 即可显示效果网页

6.2 使用技术

  1. flex

    弹性布局,在不同的屏幕尺寸和设备下可预测地展现出来,最大限度地填充可用空间。

    • 在不同方向排列元素
    • 重新排列元素的显示顺序
    • 更改元素的对齐方式
    • 动态地将元素装入容器
  2. less

    一门 css 预处理语言,扩充了 css,增加了如变量、混合(mixin)、函数等功能,让
    css 更容易维护、方便制作主题、扩充。可以运行在 Node 或浏览器端。

  3. jquery

    js 的一个库,封装了常用的 js,代码简洁。

  4. rem

    css 的单位,本质是等比缩放,一般基于宽度,举个例子:

    假设我们将屏幕宽度平均分成100份,每一份的宽度用x表示,x = 屏幕宽度 / 100,如果将x作为单位,x前面的数值就代表屏幕宽度的百分比

    p {width: 50x} /* 屏幕宽度的50% */

    如果想要页面元素随着屏幕宽度等比变化,我们需要上面的x单位,不幸的是css中并没有这样的单位,幸运的是在css中有rem,通过rem这个桥梁,可以实现神奇的x

  5. echarts

    百度开源的 js 图表库,支持多种形式的可视化图表展示,支持多图表、组件的联动和混搭展现。
    100,如果将x作为单位,x前面的数值就代表屏幕宽度的百分比

    p {width: 50x} /* 屏幕宽度的50% */

    如果想要页面元素随着屏幕宽度等比变化,我们需要上面的x单位,不幸的是css中并没有这样的单位,幸运的是在css中有rem,通过rem这个桥梁,可以实现神奇的x

  6. echarts

    百度开源的 js 图表库,支持多种形式的可视化图表展示,支持多图表、组件的联动和混搭展现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/556179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【面试题】如何实现vue虚拟列表,纵享丝滑

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 最近在工作中遇到了一个列表的需求,因为做的是C端,所以对性能…

什么是接口测试?接口测试流程有哪些?我来告诉你

目录 首先,什么是接口呢? 一、常见接口: 二、前端和后端: 三、什么是接口测试: 四、接口组成 五、为什么要做接口测试: 六、接口测试怎么测: 七、用什么工具测 八. 接口测试持续集成 九…

chatgpt赋能Python-python_canbus

Python Canbus:如何使用Python编程语言控制Canbus? 介绍 Canbus被广泛地应用于现代汽车中,是一个用于通讯的协议,允许汽车的各个部分进行通信。为了控制Canbus,很多工程师都使用Python编程语言,因为它简单…

爬虫练习-12306自动购票升级版

文章目录 前言代码更新 前言 hello兄弟们,偷懒归来了。别问为啥这么久没更,问就是失踪了 最近一直在学习Django以及爬虫进阶之类的知识,加上快期末了,一直没有想起来自己还有一个账号没有更新,sorry啦 言归正传&…

SpringBoot - Jackson详解

写在前面 JSON 是目前主流的前后端数据传输方式。在 Spring Boot 项目中,只要添加了 WEB依赖(spring-boot-starter-web),就可以很方便地实现 JSON 转换。WEB 依赖默认加入了 jackson-databind 作为 JSON 处理器,我们不…

算法小试炼(差不多相当于重新过一遍ACWING,为了夏令营做点准备)

1.最长不重复子串 这个题目的具体意思就不用我说了,我这里给出两种算法 1)暴力搜索 只要机器够快,没有什么是暴搜解决不了的^ ^(开玩笑 很简单,我们只需要遍历长度,跟左边界就好了,这个应该没…

测试必知必会的Mock数据方法

Mock数据的含义 那么Mock数据是什么意思呢 首先Mock这个英文单词有模拟的意思,模拟数据通俗的理解就是构造假数据,即Mock数据就是通过构造假数据来达到测试的目的,它广泛运用于功能测试、接口测试、单元测试 在功能测试中,可以…

离散数学 | 图论 | 欧拉图 | 哈密顿图 | 割点 | 桥(欧拉图和哈密顿图有没有割点和桥?)

本文主要解决以下几个问题: 1.欧拉图能不能有割点,能不能有桥? 2.哈密顿图能不能有割点,能不能有桥? 首先我们要明白几个定义 割点的定义就是在一个图G中,它本来是连通的,去掉一个点v以后这个…

【firewalld防火墙】

目录 一、firewalld概述二、firewalld 与 iptables 的区别1、firewalld 区域的概念 三、firewalld防火墙默认的9个区域四、Firewalld 网络区域1、区域介绍2、firewalld数据处理流程 五、firewalld防火墙的配置方法1、使用firewall-cmd 命令行工具。2、使用firewall-config 图形…

【计算机网络基础】章节测试4 网络层

R1与R2是一个自治系统中采用RIP路由协议的两个相邻路由器,R1的路由表如图(a)所示。如果R1收到R2发送的如图(b)所示的(V,D)报文,更新之后的R1的4个路由表项的距离从上到下依次为0、4、4、2,那么图 (b)中a、b、c、d 可能的数据一个是( C )。 A. 1、2、2、1 B. 2、2、3、1…

Java 核心技术 卷I 第2章 Java程序设计环境

第2章 Java程序设计环境 2.1 安装Java开发工具包 2.1.1 下载JDK www.oracle.com/technetwork/java/javase/downloads Java术语 2.1.2 设置JDK 下载JDK之后,需要安装这个开发包并明确要在哪里安装,后面还会需要这个信息. 指/opt/jdk1.8.0_31/bin或c…

从零开始Vue3+Element Plus后台管理系统(十四)——PDF预览和打印

其实我常常会纠结今天要写什么内容。 因为希望能够保持每日更新,所以要写的内容不能太难——最好是半天可以搞出demo并且输出文章,所以很多东西浅尝辄止,并没有深入研究,还写出了一些bug 🐛 今天又浅浅的研究了下在V…

这还只是阿里20K+测试岗面试题,看的我冷汗直流.....

朋友入职已经两周了,整体工作环境还是非常满意的!所以这次特意抽空给我写出了这份面试题,而我把它分享给伙伴们,面试&入职的经验! 大概是在3月中的时候他告诉我投递了阿里巴巴并且简历已通过,3月23经过…

python类型注释

目录 为什么需要类型注解 什么是类型注解 联合注解 使用注解时的注意点 为什么需要类型注解 看下图,很精炼; 什么是类型注解 Python类型注释是指在变量、函数参数、返回值等位置添加类型信息的一种语法,其目的是提高代码的可读性和可维护…

monkey测试方法及命令

1、查询测试包信息 # 查看已连接设备 adb devices # 带uuid查询包含test的第三方apk包 adb -s W21112003057 shell pm list package -3 | grep test # 清空logcat adb -s W21112003057 logcat -c # 启动app,通过日志查看安装包信息 adb -s W21112003057 logcat…

史上最全!全领域网络安全拓扑图(118页)

大家好,我是老杨。 前几天发了一篇OSPF的文章,助理发到群里和大家讨论。 好几个小友表示,绘制拓扑的才是最高境界,并且想看些拓扑图案例。 其实拓扑图案例老杨也分享过不少了。 可以看看这些往期文章,《超干货&…

【送书福利-第四期】从程序员到架构师:大数据量、缓存、高并发、微服务、多团队协同等核心场景实战书籍

大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我! 送书福利-第四期 一、前言二、书籍介绍抽…

KY111 日期差值

1.题目&#xff1a; 2.分析&#xff1a; 1. 分别求出每一个日期与0000年0月1日距离的天数 2. 两个距离天数相减即可得到两个日期相差的天数 3.我的代码&#xff1a; #include <iostream> using namespace std;class Date { public:Date(int year 1, int month 1, …

java学习:字面量,基本语句

一、字面量 1.字面量的类型 Java字面量的类型其实跟 c 的有点相似&#xff0c;有一点不一样的就是&#xff0c;Java有个null类型&#xff0c;注意这个没有大写 2.特殊字面量 \t 是制表符&#xff0c;它的作用就是补齐一个字符串到8位&#xff0c;这样就会使输出结果变得美观…

【arxiv】关于 SAM 的论文扫读(一)

文章目录 一、阴影检测二、弱监督下的隐蔽物体分割&#xff1a;基于SAM的伪标签和多尺度特征分组三、Instruct2Act&#xff1a;利用大型语言模型将多模态指令映射到机器人动作四、OR-NeRF: Object Removing from 3D Scenes Guided by Multiview Segmentation with Neural Radia…