Railway Graph Polyline Editing Utility — SRS pack¶
This page assembles sections relevant to a software requirements specification: context and problem through security, quality, and operations.
Contents¶
- Summary
- Context and Problem
- Goals, Requirements, and Constraints
- Role and Responsibilities
- System Model
- Architecture and Integrations
- Security, Quality, and Operations
Summary¶
Status¶
historical internal project / evolved into GraphMechanic concept
Role¶
initiator, concept author, developer
Stack¶
Type: Internal tooling / GIS data preparation / railway graph editing
Project value¶
A local web utility for creating, editing, and repairing railway track polylines used in railway graph data preparation.
What this demonstrates¶
This project demonstrates my early transition from requirements and data preparation work toward hands-on internal tooling development.
It shows the ability to:
- identify a repetitive data preparation bottleneck;
- convert a manual GIS/data-cleanup task into a visual tool;
- design a pragmatic internal application for a narrow operational problem;
- combine backend logic, map UI, routing, caching, and asynchronous interactions;
- create tools that reduce manual work and improve data quality.
The project later evolved conceptually into GraphMechanic, a broader idea for visual graph editing and GIS-related data tooling.
Context and Problem¶
Context¶
The project was created in the context of an enterprise GIS initiative, where railway infrastructure data had to be prepared for map visualization, routing, and further analytical use.
Raw graph data and infrastructure objects required manual cleanup and alignment. Without a dedicated tool, this work would have required direct data manipulation, repeated checks, and significant coordination between analysts and developers.
The goal was to create a small practical tool that allowed visual editing and faster preparation of railway graph data.
Problem¶
The team needed to work with railway track geometry in a more controlled and visual way.
Typical issues included:
- missing or incorrect polyline geometry;
- disconnected graph nodes;
- railway segments requiring manual correction;
- difficulty validating geometry through raw data alone;
- slow preparation of infrastructure objects for further use;
- repeated developer involvement for data fixes that could be handled visually.
Goals, Requirements, and Constraints¶
Goals and Non-Goals¶
Requirements¶
I designed and implemented a local web utility for railway graph polyline editing.
The tool supported:
- viewing railway graph objects on a map;
- editing graph nodes;
- creating new polylines;
- applying changes without full page reloads;
- preparing graph data for further use in GIS-related systems.
Constraints¶
Role and Responsibilities¶
I acted as the initiator, concept author, and developer.
My contribution included:
- identifying the need for a dedicated visual editing tool;
- defining the main user scenarios for railway graph cleanup;
- designing the application structure;
- implementing the backend and server-side page generation;
- implementing interactive UI behavior with JavaScript and jQuery;
- supporting practical data preparation work for railway infrastructure objects.
System Model¶
Domain Model¶
Data Model¶
API Contracts¶
Architecture and Integrations¶
Architecture¶
Architectural Approach¶
The utility was implemented as a layered monolithic web application.
The architecture included:
- server-side page rendering;
- MVC structure;
- business logic layer;
- repository layer;
- jQuery-based interactions for partial updates without full page reloads.
Integration Flows¶
Polyline generation via routing service¶
The tool generates polylines through a routing service, producing route-based geometry for railway graph segments.
Polyline repair via route recalculation¶
Existing polylines can be repaired through route recalculation when geometry is incorrect or incomplete.
Asynchronous polyline loading and update flows¶
The application supports asynchronous polyline retrieval and update flows, including polyline caching, enabling partial UI updates without full page reloads.