阅读“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的路况图片,因此形成了流程变化。

猜你喜欢

转载自www.cnblogs.com/zlq666/p/10872283.html