本软件是原pyETRC列车运行图系统的C++重构版本,主要支持列车运行图的绘制、管理、分析等功能。原pyETRC软件原则上不再进行维护。
作者:萧迩珀;联系方式:mxy0268@qq.com
本系统官方交流群(与pyETRC一致):865211882
本项目开源库:
原则上两边同步更新。
原pyETRC系统开源地址:https://github.com/CDK6182CHR/train_graph。
声明:
“LGuo的电子运行图”软件(ETRC
)。本软件最初的开发工作由此而起,并参考该软件较多功能。本软件支持读取和导出其运行图文件。
Advanced-Docking-System:提供了任意组织停靠面板的功能。
SARibbon: 提供了Ribbon风格工具栏的功能。
作者提供Win64构建的二进制版本,可以直接运行;也可以从开源库拉取源代码,自行构建。
因Qt 6不再支持windows 7,自V1.4.0 (R42) 版本起,win64发行版不能在windows 7及以下版本的操作系统中运行。
更新日志 (1.7.0->1.7.1)
更新日志 (1.6.3->1.7.0)
此版本将SARibbonBar依赖库升级到v2.0.3,更新的Ribbon风格选项,并新增Ribbon工具栏的主题设置,同时引入QWindowKit的新依赖项。如果使用patch包更新此版本,请把其中的所有dll文件一并覆盖到原目录。同时,有以下更新:
因SARibbon库升级至最新版,现在支持Ribbon工具栏主题选项,并支持自定义工具栏。
在列车审阅(6)
的交路部分,新增添加到指定交路、新建指定交路的按钮。
加强拖动调整时刻功能。在原有拖动调整时刻的基础上,新增:
在没有停点的车站:
在运行图显示设置中,新增图中显示时刻的秒数修约选项,可以选择修约到最近的分钟数,或者忽略秒尾数。
修复一定条件下股道分析错误的问题。
自此版本开始,发行版内嵌调试信息。如果遇到软件崩溃,(Windows系统)可尝试寻找有无dmp
文件。如有相关文件,可将该文件以及相关运行图文件、相关操作、软件版本等信息一并发送至作者邮箱以供调试。典型的dmp
文件路径形如:C:\Users\{你的用户名}\AppData\Local\CrashDumps\qETRC.exe.{编号}.dmp
。
更新日志 (1.6.2->1.6.3)
本次更新主要修复一些问题和细节:
更新日志 (1.6.1->1.6.2)
修复刷新运行图后,拖动时刻可能导致程序崩溃的问题。
更新日志 (1.6.0->1.6.1)
列车 (3)
页面以及列车管理
停靠面饭,且分别用于全部车次和所选择的部分车次。更新日志 (1.5.5->1.6.0)
本次更新主要优化与交路连线、车次标注相关的功能,增加相关的选项,提供新的标注模式。
此版本更新较大,提醒用户及时做好数据保存和备份。如有问题,可将有关运行图和遇到的问题、相应的操作发送到作者邮箱。
更新日志 (1.5.4->1.5.5)
更新日志 (1.5.3->1.5.4)
本次更新修复部分已知问题并优化部分细节,具体为:
更新日志 (1.5.2->1.5.3)
本次更新将支持库SARibbon版本更新至1.0.7版本,并修复部分问题。具体如下:
此版本如需使用补丁包升级,请将SARibbonBar.dll
文件随qETRC.exe
文件一并复制。
更新日志 (1.5.1->1.5.2)
主要修复部分场景下的问题,具体为:
更新日志 (1.5.0->1.5.1)
更新日志 (1.4.0->1.5.0)
此版本主要是添加了列车径路 (TrainPath
) 数据项,并添加相应的增删编辑、与列车关联以及按列车径路铺画运行线等功能。关于列车径路的部分概念(暂定)简要说明如下。
Railway
)片段(segment)的组合,用于描述列车在线路上的运行路线。Train
)到列车径路。被指定到列车径路的列车,在铺画其运行线时,按照列车径路所示的线路铺画,而不采用默认的自动铺画算法。此种情况下,“最大跨越站数”设置项对该列车无效。TrainLine
)。如果列车径路上有连续两个段(segment)属于同一线路、同一方向,则两段会分别设置两段独立的运行线。以上为暂定的规定。在后续新版本中,可能还会继续更新。由于此版本改动较大,可能存在较多问题,请注意及时保存和备份数据。欢迎反馈问题和建议。
除此之外,还有以下更新。
输出
和问题
两个停靠面板,默认为自动隐藏面板,位于窗口底端。分别显示运行过程中的一些文本输出和运行线铺画过程中的问题。更新日志 (1.3.7->1.4.0)
此版本不支持使用补丁包升级,请使用完整版,或者将完整包中的所有*.dll
文件和qETRC.exe
文件一并替换到原程序所在目录(原目录中所有*.dll
文件皆可删除或覆盖)。
更新日志 (1.3.6->1.3.7)
更新日志 (1.3.5->1.3.6)
更新日志 (1.3.4->1.3.5)
更新日志 (1.3.3->1.3.4)
调整交路图功能的判定条件,取消“交路中车次的始发/终到站必须有铺画点”的限制。
更新日志 (1.3.2->1.3.3)
区间车次表
中超过24小时车次时间的计算问题,并调整时长排序。速览信息
中显示的项目,添加全程时间、里程、速度等项目,在满足条件的情况下计算。
近期将更新专栏文章,详细说明此中逻辑。更新日志 (1.3.1->1.3.2)
新增快速推定
功能,用于一键推定所选列车在当前线路的通过站时刻。功能位于右键菜单和工具栏列车编辑
上下文菜单中。此功能推定所得的时刻使得列车运行线形状基本不变,不考虑起停附加时分且不支持外插。对于更复杂的需求以及批量需求,请考虑使用时刻插值
功能。
更新日志 (1.3.0->1.3.1)
更新日志 (1.2.6->1.3.0)
在此版本中,重新设计了列车筛选器功能,具体包括:
其他杂项更新:
【pyETRC既有功能升级适配】新增列车运行统计功能,位于工具栏页面列车
| 运行统计
。对于选定的列车及区间,计算区间运行总时长等,在有数据支撑的情况下,也计算里程和速度。相比pyETRC,此功能考虑了多线路情况下的径路与里程计算问题。
新增在列车管理界面、运行图资源管理器界面选择列车后,自动高亮运行线功能,在全局配置选项中设置相应开关(默认开,即与pyETRC一致)。
重新整理标尺排图和贪心推线功能中,新生成时刻表的营业(办客或办货)站设置规则:
仅在始发终到站或停车站中讨论是否营业,其他车站一律不营业;
对于标尺排图功能,上述车站中,客车在办客车站营业,货车在办货车站营业,否则不营业。
车站是否办客/办货的设置,在基线编辑中
对于贪心推线功能,在用户指定的停车站营业,非用户指定、但由推线算法计算的停车站不营业。
此版本更新了依赖库版本,如使用patch
版,请将相关dll
文件一并复制。
更新日志 (1.2.5->1.2.6)
新增列车批量处理功能:
删除列车时刻表中,未铺画的车站。
删除无任何铺画站的列车。
删除时刻表为空白的列车。
修复线路里程表编辑的相关问题。
优化保存运行图文件的体积。
上述功能见于工具栏列车
面板,批量操作
菜单下。
更新日志 (1.2.4->1.2.5)
线路拼接
功能,位于线路
上下文页面中。支持将当前线路与本运行图文件内的其他线路合并。如果需要和其他文件内的线路合并,请先导入该线路。更新日志 (1.2.3->1.2.4)
更新日志 (1.2.1->1.2.2)
*.trc
文件导致程序崩溃的问题。*.trc
文件中读写单双线区间的信息。更新日志 (1.2.0->1.2.1)
修复逻辑漏洞:将车站的纵坐标参数(y_coeff
)作为车站的有效属性之一,程序应全程维护此属性有效。此前版本由于不保证此属性有效,导致在线路没有铺画运行图时计算相关车次的事件表、时刻诊断等可能导致程序崩溃。
更新日志 (1.1.12->1.2.0)
线路拓扑
功能,显示当前线路的区间拓扑(topology)信息,包括单向站和单线区间,同时检查相关设置是否有问题。时刻诊断
功能中新增每个条目的里程标和时刻显示,并新增定位到运行图功能,使用右键菜单或者双击可以触发。更新日志 (1.1.11->1.1.12)
更新日志 (1.1.10->1.1.11)
更新日志 (1.1.9->1.1.10)
退出贪心排图状态
的用户操作接口,在相关功能出现异常时可以手动执行。运行图设置
窗口中新增应用
按钮,执行更改但不关闭窗口。更新日志 (1.1.8->1.1.9)
时刻修正
中,且同时增加批量操作。请注意此功能未经充分测试,不一定能解决问题,且可能出现错误,请注意做好数据保存和备份。
如果关于此功能出现问题,请使用邮件反馈。更新日志 (1.1.7->1.1.8)
运行图(5)
上下文工具栏页面中新增 (水平|垂直)(放大|缩小) 快捷操作按钮,更改当前运行图显示比例。此操作支持撤销,且连续操作自动合并(连续的变更一次性撤销)。待避
类型不算入追踪/间隔组间隔。更新日志 (1.1.6->1.1.7)
列车管理
停靠面板中新增一系列批量操作功能,分别针对当前所选的一组车次进行操作。同时将工具栏列车
中,原列车管理
所附菜单中的批量操作(删除所有车次,自动始发终到站适配等)独立成单独的菜单。按时刻表重设始发终到站
功能,位于工具栏 列车
->批量操作
菜单下。此功能与pyETRC的重置始发终到站
相同,将列车时刻表的首站、末站强制设为始发终到站。在列车管理
停靠面板的批量操作菜单下新增同样的功能。*.trf
格式(ETRC列车描述文件)导入功能,允许一次性导入多个文件,每个文件包含一个车次信息。
*.trf
文件的具体格式请参见ETRC软件 (版本号3.0及以上)。标尺合并
功能中,特定情况下无法执行的问题。更新日志 (1.1.5->1.1.6)
区间车次表
功能中添加正则表达式的支持。细节规则详见弹框提示。标尺综合
功能的选择列车页面,不再显示所有列车,而是仅显示与当前所选线路存在绑定关系的列车,以减少干扰。更新日志 (1.1.4->1.1.5)
在贪心推线
功能的排图参数
页新增提取本线既有最小间隔
功能,允许从本线已有的列车间隔中提取最小值作为排图约束。
更新日志 (1.1.3->1.1.4)
紧急修复自1.1.1版本起,列车时刻表编辑中,编辑新增行时刻导致崩溃的问题。
更新日志 (1.1.2->1.1.3)
区间对数表
中车次筛选器无效的问题。区间车次表
中,允许输入发站/到站采用垂直线|
(U+007)作为分隔符,需勾选输入框后的选项。当启用时,以|
分隔的多个车站以“或”的逻辑关系考虑,即发站(到站)属于所给输入中的任何一个站皆被显示。
此版本起不建议在任何车站站名中使用|
符号,以免引起歧义。在车站里程表编辑器的提交时添加检查,如有包含此符号将给出相应的警告。但并不强制要求。此版本更新了支持库SARibbon的版本,使用patch更新包的用户请将SARibbonBar.dll
一并覆盖至原程序目录。
更新日志 (1.1.1->1.1.2)
区间对数表
和区间车次表
功能,主要用于计算两站之间列车对数,通常用于研究停车列车的通达度。
请注意此功能只有在前后两站都有时刻表数据时才能查询到,与断面对数表
功能不同。更新日志 (1.1.0_Preview3->1.1.1)
此版本完成贪心推线的反向推线算法。贪心推线功能形式上已经完成,故此版本使用正式版本号。贪心推线功能仍需各种测试,持续接受相关反馈。此外,还有以下更新。
复制到达时刻为出发时刻
和复制出发时刻为到达时刻
功能,快捷键分别为Alt+D和Alt+Shift+D;亦可在右键菜单调用。编辑时刻表
选项;同时把原编辑列车
和双击功能,以及列车管理
功能的双击功能指向(pyETRC风格的)列车编辑
功能。从速度计算标尺
功能,位于标尺上下文菜单,支持从给定的运行速度计算近似标尺。此版本推荐所有旧版本(含1.0.6及以下版本)更新
更新日志 (1.1.0_Preview2->1.1.0_Preview3)
更新日志 (1.1.0_Preview->1.1.0_Preview2)
【测试功能】完成贪心推线功能的正式界面设计。 反向推线(倒推运行线)功能尚未实现,因此目前仅支持锚点站和起始站相同的情况。反推运行线逻辑与正推运行线基本一致,计划待正推运行线功能经过更充分的测试,解决可能存在的问题后,再实现反推运行线功能。
此版本为1.1.0版本的第二预览版,使用请注意及时保存数据。欢迎反馈各种问题,反馈请提供运行图文件、排图参数(可以用贪心推线功能两页的截图)和遇到的问题说明。
更新日志 (1.0.6->1.1.0_Preview)
列车
页面排图
分类下,快捷键为Ctrl+T。
此功能的前端界面尚未完成,目前提供的界面仅提供有限的选项,并仅用于测试算法。目前仅支持在选定线路全程正向铺线。计划待一段时间测试后,再继续完成交互部分以及反向推线算法。
欢迎对此功能提出反馈。反馈请提供排图基于的运行图文件、自动推线的参数(可截图)以及出现的问题。
预览版可能不够稳定,特别是测试功能,请注意及时保存数据。更新日志 (1.0.5->1.0.6)
【pyETRC既有功能移植】实现运行图对比功能,位于工具栏列车
页面->分析
分类下。支持对比两个版本运行图中列车时刻的变化情况。相比原pyETRC的实现,速度大幅提升。
更新日志 (1.0.4->1.0.5)
运行图 -
前缀。更新日志 (1.0.3->1.0.4)
导入车次
(Ctrl+D)功能中,更新判定与本运行图有重叠
的条件。旧版判定条件为车次在本运行图中存在运行线,新版判定条件改为车次时刻表与本运行图中任意线路车站存在交叠,即判定条件放宽,且不再依赖最大跨越站数
设定项。
此项更新感谢群友电排骨
指出问题。更新日志 (1.0.2->1.0.3)
每小时纵线数
为0至59的限定,以避免不合理设定导致程序崩溃。创建副本
的功能,在相应元素的上下文工具栏页面以及资源管理器右键菜单中可用。更新日志 (1.0.1->1.0.2)
部分交互优化和小功能:
新增(pyETRC风格的)列车编辑
停靠面板,包含列车的所有信息及时刻表的编辑。同时在速览信息
页面中增加入口。新建空白车次时改为弹出本窗口。
在列车时刻诊断中,新增按线路和线路车站范围筛选的功能。注意这里的范围筛选简单地基于车站里程比较。
关于效率的注记:在多线路的运行图中,选择按线路筛选将只对所选线路的运行线进行诊断,可以显著提升效率;但对线路车站范围的筛选仅是对结果筛选,不会带来效率提升。
部分问题修正:
更新日志 (1.0.0->1.0.1)
DiagramPage
)独立设置运行图显示选项,例如起止时间、显示比例、边距等,以更好适应多线路、多运行图情况的处理。原来显示(4)
页面中的显示设置
选项,用于提供新创建的运行图页面的显示设置;同时提供一键将当前选项用于所有页面的功能。速览信息
页面,新增转到所属交路的按钮,将当前列车的交路设置为交路上下文工具栏页面的“当前交路”。速览时刻
页面,快速定位到车站操作时,如果只有一条线路、或当前线路只有一个铺画点,跳过选择过程。自动始发终到站适配 (放宽)
功能,位于工具栏列车
->列车管理
下的菜单中。与原有自动始发终到站适配
的区别在于,不要求被适配的站是铺画在运行图上的。全局配置选项
中新增系统风格(style
)的选项。修改运行图页面
功能,位于运行图(5)
上下文页面->编辑
的菜单下。支持重新设置当前运行图页面的名称、备注、线路表。同时重新设计添加运行图页面
功能的界面。删除线路
功能的撤销/重做。关闭当前标签页
功能,快捷键为Ctrl+W。此版本为第一个正式版,标志qETRC已经实现了初期计划的全部功能。pyETRC的绝大多数常用功能都已经在qETRC中实现,因此自此版本开始,建议原pyETRC用户如无特殊需求,可以改使用qETRC进行替代。如有相关问题、建议,特别是导致程序崩溃的问题,请随相关文件及复现操作反馈。
更新日志 (0.6.0->1.0.0)
【原pyETRC路网管理模块功能集成】基于线路数据库的线网有向图模型,提供路网层面的相关功能。主要包括:
关键点
)描述的路径,在每两个关键点之间,以Dijkstra最短路算法计算路径,生成线路对象并加入到当前运行图中。相比原pyETRC路网管理模块,这部分功能是直接集成在主程序中的,无需另外打开新程序,且对线路、列车数据的管理、共享关系规定得更加严格。此外,本项目重新实现了有向图数据结构,支持“重边”情况 (两个车站之间存在多条线路,线路名称可能不同),解决pyETRC路网模块中由此导致的部分问题。
【pyETRC既有功能移植、拓展】股道分析图功能。原pyETRC入口位于车站时刻表对话框中,本系统改为从线路上下文工具栏页面直接进入。完全支持原pyETRC中的手动铺画、自动铺画以及手动铺画下股道次序管理的功能。 此外,新支持调整股道名称、顺序功能(调整过程中每个股道内的列车安排不变,可与自动铺画配合使用),并支持将股道数据写入到列车时刻表中。
【pyETRC既有功能移植、拓展】列车时刻表修正功能。完全支持原pyETRC中此功能对列车时刻表的顺序重排(上移、下移、置顶、置底、区间反排)、交换到发时刻等功能,并额外支持修改所有数据功能,可以在勾选相关选项后,修改时刻表中全部信息(站名、到发时刻、股道备注等,但不能增删车站)。 相比pyETRC的实现,本系统的实现应当更加安全和严格。
【qETRC新增功能】在速览时刻 (Ctrl+I)功能中新增对到达时刻或出发时刻进行定位的功能,可用右键菜单调起,或使用快捷键Alt+G以及Alt+Shift+G。
【pyETRC既有功能】自动设置所有营业站。
修复一些细节错误。
将默认的线路数据库文件改为CRPassengerMileage.pyetlib
,内含全国铁路旅客运价里程表内的线路里程数据。感谢@江教授 提供和维护的数据源。
更新日志 (0.5.1->0.6.0)
目前软件已经接近正式版。 另:今日在B站发布了一个视频,介绍本软件与pyETRC操作逻辑的变化:https://www.bilibili.com/video/BV1334y1X7Wr
更新日志 (0.5.0->0.5.1)
列车(3)
-排图
-时刻插值
。间隔汇总
窗口设置Flag为Window
,方便窗口最大化操作。更新日志 (0.4.0->0.5.0)
间隔分析
和间隔汇总
两个入口。前者给出指定车站的详细间隔表,后者一次性统计全线所有车站的最短间隔。在车站事件表中增加间隔分析的入口。线路(3)
->定位
。
同时在列车事件表
、车站事件表
、断面事件表
、线路快照
和间隔分析
的表格中支持右键快速定位到相应事件。从这个版本开始标记Release编号。
自0.3.1版本以来新增的功能:
显示
工具栏中。显示
工具栏中,包括表格行高等设置项。这些设置项自动保存。速览时刻
功能,是pyETRC中当前列车时刻表
和交互式时刻表
功能的合并。调用快捷键为Ctrl+I。可以通过编辑
复选框来决定是否允许修改。如果启用编辑,则修改的时刻立即生效。速览信息
功能,即pyETRC中的当前车次信息
功能。调用快捷键仍为Ctrl+Q。以上两项的停靠面板默认在运行图右侧显示。列车筛选器
功能,与pyETRC中的列车筛选器基本一致,在全局支持按筛选器来选择要显示的车次,快捷键仍为Ctrl+Shift+L。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。