阅读“2019HuaWei软挑赛”车流可视化开源代码的随笔
阅读“2019HuaWei软挑赛”车流可视化开源代码的随笔
dalao的reposity: https://github.com/XavierCai1996/Huawei2019CodeCraft/tree/master/Visualization
数据的输入:
车信息:
路口信息:
道路信息:
每秒车流信息:(car_ID,双向车道的正向|反向, [车道0的车流情况] ,[车道1的车流情况],[车道2的车流情况],…)假设没车一样长,车道上车位上有车则记录该车car_ID,没车为-1
可视化的工程实现:
dalao用的是c#+xaml,c#用作后台数据处理,xaml作为后台数据可视化接口来动态显示数据
项目目录示意图:
后台数据处理类有:
Basic.cs:抽象car,road,cross为类,并且把log.tr里的时刻车流信息也抽象成了类
Config.cs: 配置,读取的配置信息,绘图的配置信息
Scenario.cs:场景信息,初始化的入口,创建三个线程,一个I/O,一个Drawing,一个主线程(用来初始化场景和启动主线程来创建另外两个线程)
Initialze.cs:初始化场景(将car.txt,road.txt,cross.txt内的信息用对应的数据结构封装装入内存、并用cross和road信息来绘制底图basic.jpg),启动另外两个线程
IO.cs:将每秒的车流信息读入内存流
Drawer.cs:该线程将线程IO读入的车流信息按秒绘制到道路底图basic.jpg上,制成路况车流图,每秒对应一张图路况图且暂存在内存中,Drawing和IO线程异步
.xaml将数据可视化:.xaml与.cs的关系和.jsp与.java的关系类似,.xaml负责渲染显示其对应的.cs的数据,.xaml创建的界面并有事件响应机制和.cs交互
.xaml的和组件绑定的事件响应函数:(ctlImag是标签,用来显示路况图的)
运行的组件如下:
组件对应的响应函数定义在了对应的.cs中:(MainWindow.xaml.cs)
这其中,有个Windowsload用来启动图形界面的,然后有个定时器,可以自己设置时间间隔,定时更新.xaml中标签ctlImag的路况图片,因此形成了流程变化。