铁路列流图列流径路自动识别研究
2021-07-31邵文杰翟鹏程
邵文杰,翟鹏程
中交铁道设计研究总院有限公司,北京 100088
列流图是铁路设计文件中的重要组成部分,该图能直观反映列出编组情况及开行方案。大型枢纽或运输量大的铁路线路的编组繁多且复杂,通常包含大量列流线,设计人员手工绘制列流线需耗费较多时间及精力,而且易出错。另外,设计外部条件的变动又会引起列流图的修改,从而增加了绘制列流图的工作量。为实现列流图的自动绘制,文章在已有研究基础上针对列流图自动绘系统中的列流径路自动识别进行研究,并详细介绍其实现算法。
1 列流径路自动识别方法
1.1 列流图基本概念
列流图主要由车站、衔接方向、铁路网和列流线四个部分组成。一个典型的简略列流图如图1所示。
图1 列流图示意图
1.2 列流径路自动识别方法
在列流图绘制的过程中最复杂及烦琐的是列流线的绘制,列流线如图1中的箭头线。列流图中包含大量不同列车种类的列流线,列流线因车站或衔接方向的分布位置问题可能导致大量列流线交叉重叠,影响图形美观及意义表达。因此在列流图自动绘制系统中,列流线的排列和布局是极其重要的关键性问题。为方便计算机自动对列流线进行排列及布局,需对列流线进行识别及分类。
列流线识别主要是对输入列流图自动绘制系统中的数据进行识别,该识别主要包括列流径路识别、列流线机车种类。列车线机车种类相对简单,根据输入机车类型数据进行识别分类即可,而列流径路识别相对较复杂,该识别过程包含列流线起点位置、终点位置、列流线拐点、列流线流向和列流线通过车站等信息。文章对已开发的列流图自动绘制系统的列流线识别方法进行详细介绍。
列流径路识别方法核心思想是根据列流线的起终点信息,确定其起终点所处的主链和支链,并由主链和支链的顺序确定列流径路拐点及流向。列流径路识别方法示例图如图2所示。
图2 列流径路识别方法示例图
首先,确定列流径路的主链和支链,一般情况下以从左至右的路网连接的车站和方向为主链,例如图2中F5方向→A站→B站→C站→F4方向。不含主链的路网连接的车站和方向为支链,支链方向通常定义为从上至下,例如图2中有三个支链,分别为F3方向→C站支链、A站→F1方向支链和F2方向→D站→B站支链。
其次,确定列流径路起点和终点在主链和支链中的位置。图2中虚线列流径路其起点和终点分别为F3方向和F1方向。由主链和支链定义可知,虚线列流径路的终点都位于支链上。
最后,确定列流径路经过的车站、方向以及列流径路的流向。该过程的具体步骤如下:
(1)确定列流径路拐点。图2中虚线列流径路起点位于支链F3方向→C站上,该支链与主链相交的车站为C站,因此C站为拐点。终点位于支链A站→F1方向上,该支链与主链相交的车站为A站,因此A站为其另一个拐点。
(2)确定拐点在主链上位置及经过车站。图2中主链为F5方向→A站→B站→C站→F4方向,C站与A站之间在主链上只有B站,故主链上经过的车站为B站。
(3)组合支链和主链形成列流径路。根据第一步确定的两条支链以及第二步确定的主链上经过的车站,即可确定该列流径路经过的所有方向和车站以及流向,其列流径路为F3方向→C站→B站→A站→F1方向。
2 列流径路自动识别算法实现
根据列流径路自动识别方法的核心思想是利用计算机语言实现列流径路自动识别。在详细介绍算法实现过程之前,以图2中列流图为例简要介绍列流图自动编制系统的数据存储结构。在已完成开发的列流图自动编制系统中,利用数据库技术存储绘制列流图所需的基本数据,数据记录字段为车站编号(StationID)、车站名称(StationName)、属性(StationAttr)、邻居车站(relStation)、邻居方向(relLocation)。
车站编号字段记录了车站的编号,车站名称字段记录了对应车站编号的车站名,属性字段表示该项属于车站还是衔接方向,邻居车站记录了相邻车站信息,邻居方向记录了相邻车站上下左右相对关系。用户输入基本的车站或衔接方向数据后,只需要输入列流线起点和终点的名称即可由文章提供的列流径路自动识别算法得到起点至终点的列流径路,其详细的算法步骤如下。
第一步:输入列流线的起点和终点信息,及起终点名称。
第二步:针对已输入系统的车站或衔接方向数据,查询筛选邻居方向(relLocation),将具有左右关系的车站筛选出来,并由左右相对位置关系进行从左至右排序,生成主链。
第三步:根据主链车站或衔接方向,筛选车站名称(StationName),得到非主链的车站或衔接方向信息,并筛选邻居方向(relLocation)具有上下关系的车站或衔接方向,并由上下相对位置关系进行从上至下排序,生成支链。
第四步:根据输入的起终点信息,判断起终点位于主链还是支链,并进行分类。根据该列流图自动绘制系统数据存储结构特点,起终点相互对应位置只存在四种情况,分别如下:起点位于主链,终点位于主链;起点位于主链,终点位于支链;起点位于支链,终点位于主链;起点位于支链,终点位于支链。
第五步:根据第四步中判定的情况,进行列流径路的求解,并存储。
第六步:继续输入列流线数据,跳转至第一步,直至输入完所有列流线数据。
上述列流径路自动识别算法步骤最核心的部分是第四步,下面对第四步中四种情况的实现过程进行详述。
第一种情况:起点位于主链,终点位于主链。只需要在主链中查找起终点位置,由主链中各个车站相对关系即可确定列流径路。
第二种情况:起点位于主链,终点位于支链。只需要根据终点车站在支链中查找,并确定终点所在支链与主链的拐点(共同车站),并在主链中查找起点站至该拐点的主链车站,即可确定列流径路。
第三种情况:起点位于支链,终点位于主链。只需要根据起点车站在支链中查找,并确定起点所在支链与主链的拐点(共同车站),并在主链中查找该拐点与终点站之间的主链车站,即可确定列流径路。
第四种情况:起点位于支链,终点位于支链。先根据起点车站查找起点车站所在支链与主链的拐点1,再根据终点车站查找终点车站所在支链与主链的拐点2,最后在主链上查找拐点1至拐点2的车站,即可确定列流径路。
3 结束语
综上所述,文章根据列流图的特点,结合计算机自动绘图系统,针对列流图自动绘制系统的核心问题——列流径路的识别,提供了一种简便快速的自动识别方法,并针对该列流径路自动识别方法进行了算法实现分析,通过分析验证了列流图列流径路自动识别方法能根据用户输入的列流起终点基本信息,快速生成列流径路,并根据列车种类对列流径路进行分类排序,有利于列流图自动绘制的实现。