驾驶画像可视分析、交通数据可视分析系统,使用 Flask 搭建后端应用,HTML+JS 编写前端页面,实现多视图展示+联动的效果。
- 数据准备。准备好交通态势可视分析任务的原始数据,修改
src/models.py
第十行的变量为数据的路径,默认为相对路径"data/题目1-2 交通态势可视分析/交通态势可视分析"
,即按网盘中的目录结构存储在项目根目录下名为data
的目录中。 - 环境配置。安装 python3 和所需包:
pip install -r requirement.txt
。 - 启动后端。在项目根目录执行:
python app.py
以开启 web 应用。 - 访问前端。浏览器访问http://127.0.0.1:5100查看前端界面。
data
:原始数据merged_data_ids
:数据聚合标识(见下文运行细节
一节)scripts
:部分预处理数据的脚本(未维护)src
:后端应用运行所需的代码static
:前端静态文件,包括数据data
、图片images
、代码js
三个子文件夹和网页图标文件favicon.ico
templates
:前端网页代码main.html
app.py
:后端运行入口requirements.txt
:后端运行所需依赖
本项目中所有数据均由后端预读取至内存,当前端发出请求(如拖动车流量视图或点击平行坐标线)时通过网络发送到前端。除原始数据外,本项目运行时还使用以下三类数据:
- 第一次运行时会按一定的时间间隔聚合数据,生成聚合标识(见下节
运行细节
)。 - 任务 1.2 驾驶画像分析的原始数据经处理后存储在
static/data
目录中供运行时读取 - 任务 1.3 多个子图所需的数据已提前处理好并存储在
static/data
目录中供运行时读取。
其中第一类的数据处理逻辑写在src/util.py
的merge_data
函数,初次运行后会保存在项目根目录下merged_data_ids
目录中;第二类数据处理为小组成员各自完成,数据处理的脚本整理在scripts
目录中,但只保持了早期版本,并未维护,由于后期的目录改动可能不能正常运行;第三类数据只保留了处理结果,没有保留处理脚本。
初次运行会自动聚合数据,提供 0.5s、1s、2s、5s 和 10s 聚合五种不同时间间隔的选择(也可自由扩展不同的聚合选择)。运行时可选择聚合时间间隔(app.py
中的interval
变量),越短的时间间隔意味着更精确的车辆位置、速度等信息。由于运行时后端将所有数据直接读入内存,1s、2s 聚合对内存占用较高,8G 内存的机器在 2s 聚合时内存即稍显紧张,请根据电脑状况选择聚合的时间间隔。
为弥补长间隔数据间隔带来的无数据的时间段,主视图中采用动画自动差值来填补两条记录之间的车辆位置信息,默认动画长度为 2s(mainfig.js
第 517 行duration(2000)
),因此在选择的时间间隔不为 2s 时,动画效果相比实际时间有减慢或加快的现象。
陈潦 陈学添 付一宸 贾睿囡 李文烨 芦胤