网络图编辑器
网络图编辑器 – 旨在做出更优决策。
产品愿景是通过创建一个直观且强大的平台,利用智能预测和分析,来加速交通系统的规划与规模确定。这将使得时刻表变体或服务选项能够被轻松创建、比较和优化,并在规划人员的创造性过程中提供最大程度的支持。目标是确保决策能够基于数据驱动的洞察,从而保证未来快速、高效且目标导向的顺畅出行。
灵活的细节程度 - 从粗略草图开始,持续添加更多细节。
适用于不同行业 - 公交、火车、飞机。
随用例扩展 - 从爱好者时刻表编制到专业规划。
以人为本 - 时刻表规划是一个非常复杂且富有创造性的过程。Netzgrafik-Editor 通过数字化此前基于纸质的流程来支持用户,同时提供即时 分析能力。
卓越且直观的 UX - 使用 Netzgrafik-Editor 应像在白板上绘图一样简单自然。 无需培训。分析实时进行。
简介
Netzgrafik-Editor 是一款功能强大的软件,可用于创建、修改和分析 等间隔时刻表。
等间隔时刻表
固定间隔时刻表最早于20世纪初在德国开发, 用于协调柏林等大城市中的城市交通。
固定时刻表旨在提高公共交通的吸引力,因为它们 更容易被乘客记住,并且其模式使资源规划更加容易。
这种恒定时刻表也可能改善非高峰时段的服务。
荷兰人在1970年因首创枢纽系统而受到赞誉,该系统随后成为 1982年瑞士固定间隔时刻表的基础。
它提供了多种功能,以提升物流网络的效率和优化水平。 部分关键功能包括:
-
用于编辑 Netzgrafik 的交互式绘图工具: 一个用户友好且交互式的图形 编辑器,用于创建和编辑等间隔时刻表。它提供了一个 可视化界面,以便轻松可视化和调整物流网络。
-
图形时刻表 (Streckengrafik): 在 Netzgrafik 中定义的所有线路(列车运行)都可以转移到图形时刻表 表示中 (Streckengrafik)。
-
Perlenkette 列车运行编辑: 规划人员可以手动绘制和编辑作为链状的列车运行, 从而 定义物流网络的关键方面,并根据 特定要求和约束进行定制。
-
物流信息提取: 该软件从 等间隔时刻表中提取重要的物流信息, 例如出发站和目的站、出发和到达时间以及列车频率。
-
物流网络分析: 规划人员可以基于时刻表 表示来分析物流网络。 该软件提供关于换乘协调、换乘时间和物流 连接的信息,促进优化和效率提升。
-
基础设施需求估算: 可以基于 输入的时刻表表示来估算基础设施需求, 辅助基础设施规划和决策。
起源与开源协作
Netzgrafik-Editor 最初是作为 瑞士联邦铁路 (SBB CFF FFS) 的内部创新项目开发的。 该项目始于一个可点击的原型。从项目的早期阶段起, 仍有一些尚未实现的想法和概念,因此始终值得查看 此文档。 整个项目现已达到成熟阶段,并演变为一个强大的工具,其应用 范围已超越铁路领域。它现在可用于任何需要以固定间隔时刻表作为 规划基础的领域。
编辑器的多功能性使其适用于各种物流规划场景,能够 高效地创建和分析时刻表。该软件的关键功能可在更广泛的 背景下加以利用,例如:
-
公共交通系统: 其他公共交通网络可以利用该编辑器的 灵活性和功能,有效地可视化和规划其交通系统, 从而提高效率并改善服务。
-
教育: 该编辑器的功能可用于教育机构,以展示 如何创建集成时刻表,以及在规划过程中需要考虑哪些属性, 从而实现高效的调度
更多……
通过将应用范围扩展到铁路之外,Netzgrafik-Editor 有潜力 成为众多行业中宝贵的工具, 提供对基于时间的规划进行全面控制、优化和同步。
由于 Netzgrafik-Editor 的这些多样化应用及其在各个 领域日益增长的价值, 决定将其作为开源软件发布。 这旨在促进规划层面的广泛使用与合作, 并积极支持来自不同行业的新想法的进一步发展,以便 编辑器不断改进, 并在最佳情况下,确立其作为不同公共交通 行业标准工具的地位。
社区参与和协作 在开发过程中至关重要且备受期待,以确保编辑器获得 多样性 和功能,并满足不同应用领域的 需求和挑战。 项目的开放性鼓励创新、来自不同领域的专业知识以及持续 改进,以优化 规划流程。
如果您想与其他 Netzgrafik-Editor 开发者交流,请随时加入我们的 Matrix 房间。
路线图
了解计划和未来的 ROADMAP.md。
用户手册
用户手册可在此处找到 USERMANUAL.md
在线演示
外部链接: nge.flatland.cloud - 由 Flatland Association 提供支持
( 示例 Netzgrafik - 如何导入 JSON )
软件包
Netzgrafik-Editor 已发布为:
- 作为 Docker 镜像,用于 Docker 环境
- 作为 NPM 软件包,用于集成到其他 webapp 中
使用 Docker Compose 设置本地演示环境
使用 外部链接: netzgrafik-editor-docker-compose 进行基于 Docker Compose 的一行设置 - 由 Flatland Association 提供支持。
入门指南
开发环境设置
为了拥有一个可用的本地开发环境,您还需要启动 后端!
# clone project from https://github.com/SchweizerischeBundesbahnen/netzgrafik-editor-frontend
git clone https://github.com/SchweizerischeBundesbahnen/netzgrafik-editor-frontend.git
# switch into folder
cd netzgrafik-editor-frontend
# install all npm dependencies
npm install
# start ng server (connects to local backend, make sure it is set up and running)
npm run start
容器化变体
# install
apt install docker
apt install docker-compose-plugin
# build
docker compose build
# run
docker compose up
访问 Netzgrafik-Editor 前端
在浏览器中打开地址 http://localhost:4200/
使用用户名 user 和密码 user 登录
面向 Nix 包管理器用户
Nix 用户可以使用 flake.nix 文件来设置开发环境。
要使用 flake,需要启用 Nix 实验性功能 nix-command 和 flakes。
请参阅 官方 Nix 文档 以获取更多信息。
结合 direnv 工具,每次进入项目文件夹时,可以使用以下命令来设置开发环境:
# allow direnv to use the flake
echo "use flake" >> .envrc && direnv allow
有关更多信息,请参阅 官方 direnv 文档。
Linting
# to fix the eventual lint issues
npm run lint
# to check that the code is correctly linted
npm run lint:fix
格式化
由于我们使用 Prettier 作为格式化器,你可以自由地配置你喜欢的 IDE 来支持你。例如,如果你使用 VSCode,请遵循以下步骤:
- 安装 Prettier 扩展
- (可选:通过 npm 安装 Prettier
npm install --global prettier) - 现在,如果你尝试左键单击并选择“格式化文档”,你就可以使用 Prettier 手动进行格式化
锦上添花:保存时格式化
- 你可以通过打开 VSCode 的“设置”并启用“编辑器:保存时格式化”来启用此功能(这样,每次保存文件时,你的代码都会被格式化)
- 或者,你可以直接在
settings.json中添加这些行(使用Cmd+shift+p打开,并搜索“打开用户设置 (JSON)”)
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
# to check that the code is correctly formatted
npm run format:check
# to format the code according to Prettier rules
npm run format
测试
# just run all tests once
npm run test
# re-run tests when a file changes
npm run test -- --watch
# run tests in a Chrome browser window
npm run test -- --browsers Chrome
# run tests with Chromium instead of Chrome
npm run test -- --browsers ChromiumHeadless
后端 API 代码生成
后端 API 使用 OpenAPI (
参见 api-docs.json) 进行定义。
用于与后端 API 通信的 Angular Services 基于此
规范使用 openapi-generator 生成并
添加到仓库中(参见 src/app/api/generated)。
更新 API 版本
要更新 API 版本,请启动本地后端服务器。 然后可以在 http://localhost:8080/v3/api-docs/ 下载新的规范。
可以使用以下命令生成新的 API Service 文件:
npm run generate:api
文档
请考虑以下信息:
并检查 开放的 issues 和 pull requests。
许可证
本项目采用 Apache 2.0 许可证。
贡献
开源项目依靠社区的协作和贡献而蓬勃发展。所有 贡献者都被要求阅读 CONTRIBUTING.md 文件,该文件概述了如何 向项目做出贡献,包括如何提交 bug 报告、功能请求和 pull requests。
编码标准
所有贡献者都被要求阅读 CODING_STANDARDS.md 文件,该文件 概述了您在向项目做出贡献时应遵循的编码标准。
行为准则
为了确保项目对所有贡献者来说都是一个欢迎和包容的环境,您,它 已制定了一份良好的 CODE_OF_CONDUCT.md。
致谢
感谢所有贡献者的参与和贡献,没有他们,本项目 将不可能实现。感谢您目前和未来的贡献!
持续集成
本仓库使用 release-please 进行 CHANGELOG 生成、创建 GitHub releases 以及为项目进行版本升级。 详见 CI.md。