基于Web技术栈的列车运行图绘制方案研究
列车运行图是运用坐标原理对列车运行时间、空间关系的图解表示,可视化地表达了列车运行的时空过程,是铁路日常生产和应急指挥不可或缺的重要工具<1>。我国铁路过去采用手工作业方式在图纸上绘制列车运行图。随着信息技术的发展与应用,利用计算机技术绘制列车运行图在提高信息承载力、增强信息交互体验、全方位展示运输生产链路、提高生产作业效率、保障行车组织安全等方面发挥了重要作用。
我国铁路应用计算机绘制列车运行图以来,倪少权等人<2>提出了列车运行图人机交互的基本要求;得益于计算机绘制技术的快速发展,薛武军等人<3>在卫星自动报点研究中采用Delphi语言绘制了不同类型的列车运行线,具备缩放、平移等基本操作功能;陈旭鹰<4>论述了PowerBuilder可视化开发工具在运行图信息管理方面的实践经验;张志会<5>基于Flash与Action Script语言探索了列车运行图动态可视化仿真技术;祝建平等人<6>通过B/S架构向用户提供列车运行图客户端下载功能,并通过C/S架构实现列车运行图联网编制,验证了列车运行图网络化编制系统设计路线的可行性;李诗雄<7>采用GDI+静态图片绘图技术,结合EMF和WMF矢量图形文件传输机制,实现了列车运行图的远程共享与动态展示;史常庆等人<8>在计算机编制列车运行图方法与技术研究中,采用Visual C++和C/S架构绘制了列车运行图;白紫熙等人<9>研究了列车运行仿真系统构建技术,并基于C#语言和.net技术栈研发了列车运行图组件;廖志林等人<10>基于Java2D技术和Eclipse插件机制研究了列车运行图矢量绘制方法与台间拼接技术。从以上学者的研究成果可见,列车运行图计算机绘制技术经历了静态图片、动态可交互客户端、C/S架构网络化、混合架构网络化及Web富客户端等发展阶段,通过持续地引入各个时期的主流计算机图形图像绘制技术,为同一时期铁路事业发展建设提供了有力支持。
基于以上研究成果并结合铁路运输调度领域各级、各类用户对列车运行图提出的新需求,本文总结了浏览器绘制列车运行图亟需突破的技术难点,提出了基于Web技术栈的列车运行图绘制方案,以期为相关信息系统的研发与集成提供参考。
1. 需求分析与技术难点
1.1 需求分析
列车运行图计算机绘制基本需求通常包括4项。
(1)根据工作要求,将铁路线、枢纽、调度台管辖范围作为列车运行图的底图,并确定底图的时间范围与时分格式;
(2)通过各种数据源获取与底图相关的业务数据,并将这些数据转换为列车运行图的图形数据;
(3)按照《列车运行图编制管理规则》绘制列车运行线、机车交路、车底交路及天窗、施工等业务信息;
(4)提供平移、缩放、点选、拾取、拖拽及显示内容叠加避让、鹰眼图、快速定位等图形图像交互操作等功能。当前主流的列车运行图绘制技术已能够较好地实现这些基本需求。
随着互联网技术与移动应用的普及与发展,业务用户对列车运行图提出了更多新需求,可概括为3类。
(1)丰富列车运行图的信息承载能力,能够以列车运行图为纽带,联动查阅列车编组、随乘人员、客票、货票、确报、调度命令、施工揭示命令及相关站段作业计划、作业实绩、统计分析等信息;
(2)提高列车运行图的易访问性,能够通过浏览器、移动终端等设备随时随地、简便快捷地使用列车运行图;
(3)提升列车运行图的用户体验与性能效率,支持实时刷新与动态反馈,能够适应大流量访问与高并发访问等业务场景。
此外,业务系统研发与运行维护(简称:运维)人员还要求列车运行图能够实现组件化与服务化,具备可重用、可扩展、易集成、易维护等能力。
1.2 技术难点
以上新需求理论上采用云计算和Web技术即可较好地实现,而实际使用过程中,基于浏览器的列车运行图绘制存在绘图性能差、加载时间长、响应不及时、资源要求高等问题,主要原因如下。
(1)数据处理量较大。计算机在列车运行图上绘制一条运行线需要经过数据加载、坐标转换、图形对象生成、数据传输和图形绘制等步骤,这是一个串行过程,当需要绘制的运行线数据量较大时,整个处理时间将迅速增加;此外,我国铁路路网结构错综复杂,日均开行上万次列车,数据规模极其庞大,而列车运行图底图通常仅关联路网中很小的一部分,进一步增加了数据筛选难度与数据处理时间。因此,需要详细划分数据处理过程,并对每个步骤采取有针对性的优化措施,才能有效缩减数据处理时间。
(2)前端和服务端分工不合理。传统列车运行图计算机绘制技术大多采用C/S架构模式,其中,服务端一般仅负责查询数据库与传输查询结果等任务,其余处理任务均由客户端完成。当Web技术采用这种方式时,由于浏览器存在可用内存受限、不支持多线程、不支持硬件加速等技术限制,数据量较大时,浏览器资源将被迅速耗尽,甚至引起浏览器崩溃、停止响应等情况。因此,应调整优化前端和服务端任务分工,将非必须由前端处理的任务最大程度地划分给服务端,降低前端的资源需求与处理步骤,并充分利用服务端资源优势及多线程并发技术降低整体处理时间。
(3)前端绘制代码编写方式待优化。无论采用哪种绘制技术,均需要消耗用户前端资源,而绘制代码的编写方式会影响前端资源的调用次数与调用频次,当数据量增大时,由此引起的耗时问题和资源消耗问题将会凸显并且极难修正。因此,从代码编写之初就应按照绘制技术特点和最佳实践,优化代码结构、编写方式和组织方式,减少非必要的资源调用。
2. 解决方案
本文基于Web技术栈提出一套解决方案,通过调整服务端与前端的任务分工,将数据处理与图形数据运算任务全部交由服务端处理,实现以Web组件的方式提供列车运行图集成服务。解决方案由服务端运行环境、服务端技术架构及前端优化措施构成,总体架构如图1所示。
图 1 解决方案总体架构
下载: 全尺寸图片 幻灯片
2.1 服务端运行环境
列车运行图组件在中国铁路主数据中心部署运行,主数据中心云环境提供了计算、存储、网络、安全等资源及虚拟机、负载均衡、数据库等基础服务。为进一步提高资源利用效率,增强服务端运行环境的可靠性、稳定性与可维护性,在主数据中心基础设施即服务(IaaS,Infrastructure as a Service)层的基础上搭建平台即服务(PaaS,Platform as a Service)层,并提供列车运行图组件集成服务与数据共享服务。此外,根据用户使用方式需求,通过扩展PaaS平台安全模块,增加数据安全、访问监控、日志审计、传输安全及客户端安全等功能,提升列车运行图组件在大数据量访问与高并发访问等场景的运维保障能力。
2.2 服务端技术架构
服务端采用微服务架构、多线程并发技术优化提升各项功能运行效率,并针对主要耗时的功能采取了进一步优化措施。例如,通过分库分表、SQL语句优化提升运行线与底图匹配算法效率;通过分布式计算技术加快坐标换算、图形对象生成和数据封装处理过程;通过数据压缩技术减少数据传输量;通过缓存技术减少运算量等。4项主要功能如下。
(1)铁路路网数据管理。定义了铁路路网对象的数据结构和关联关系,可提供数据管理工具和数据共享服务,为运行图底图管理和运行图数据管理提供基础数据支持。
(2)运行图底图管理。负责提供各种列车运行图底图管理功能和数据共享服务,可按类型、铁路局集团公司、铁路线提供底图数据服务,同时支持自定义底图功能。
(3)运行图数据管理。负责提供运输生产数据,包括基本计划、调度日(班)计划和运输生产实绩等。
(4)图形数据预处理。提供运行线与底图筛选、图形坐标转换等功能,通过建立规范的数据结构,屏蔽不同数据源间的数据结构差异,保障前端可按照统一的数据模型绘制列车运行图;通过运行图元素预绘制、底图预绘制、分层复制等模块提前创建图形数据,进一步分担前端计算压力。
2.3 前端优化措施
在服务端分担大量工作的基础上,本文在前端采用HTML5 Canvas绘制列车运行图。HTML5 Canvas是Web 2.0新增的技术组件,通过画笔级绘图函数,在HTML上用JavaScript绘制各种图形与动画,适用于像素处理、动态渲染和大数据量绘制等场景,且获得当前主流浏览器的支持。
为充分提升HTML5 Canvas的性能效率,根据最佳实践,可通过优化代码编写质量,减少对前端资源的调用;也可利用Canvas提供的离屏渲染和分层画布技术提高绘图性能<11-12>。对于缩放、平移操作后需要重新计算坐标或加载数据的场景,利用前端与服务端缓存技术存储常用缩放等级对应的数据,并结合预绘制技术提高前端响应效率、提升用户体验。此外,通过在服务端提前生成列车运行图图片,前端绘制图片后再逐项添加可交互矢量图形数据,可提升启动及刷新效率。
3. 性能评测
为验证解决方案的有效性,本文对其进行耗时性能测试,检测被测性能指标的极限值。本次耗时性能测试以京沪(北京—上海)高速铁路全线为底图,涉及车站30座,时间范围为36 h,不考虑天窗、施工和交路等元素,通过满图铺画列车运行线进行测试。本次测试分别记录了列车运行图铺画运行线200对、400对、500对和1000对时关键环节处理过程的时间消耗,并对其性能表现进行分析。性能测试结果如表1所示,测试结果对比分析如图2所示。
表 1 性能测试结果
列车运行线/对 | 被测项 | 运行耗时总计/ms | |||||
数据 | 图形对象 | 坐标 | 数据 | 图形 | 被测项 | ||
200 | 256 | 45 | 35 | 126 | 469 | 931 | 1098 |
400 | 351 | 88 | 42 | 131 | 508 | 1120 | 1215 |
500 | 397 | 113 | 50 | 133 | 632 | 1325 | 1512 |
1000 | 542 | 172 | 107 | 152 | 897 | 1870 | 2017 |
下载: 导出CSV | 显示表格
图 2 测试结果对比分析
下载: 全尺寸图片 幻灯片
本次测试所选5个被测项的耗时合计占总运行耗时的85%以上,证明了所选测试方法的合理性和有效性。根据测试结果对比分析,列车运行图从启动到完成绘制整个运行过程耗时较低,数据量较大时加载时间在2 s左右,处于用户可容忍的时间范围内,说明技术难点问题得到了有效解决。测试采用跳跃增加数据量的方式,总耗时增长趋势平稳,说明数据量波动对整体性能影响不大。此外,图形绘制、数据加载和数据传输占比较大,是影响耗时性能的主要因素,还需采取进一步优化措施。
4. 结束语
基于Web技术栈的列车运行图绘制方案较传统技术的创新点为:具备服务化和组件化条件,可与相关信息系统融合集成;解决方案采用微服务架构和云计算运行环境,降低了前端资源要求,提升了整体的可靠性、安全性和可维护性;解决方案所采用的设计思路和研发方法可总结形成设计经验或最佳实践,为类似场景信息系统的研发工作提供参考。此外,由于Web操作方式和桌面操作方式存在一定差异,后续还需要深入研究交互方式,进一步扩大该列车运行图绘制方案的应用范围及用户体验。