What would be the best way to store subway data in the application?
Data consists of subway station positions, length of the tunnels between stations, alignment of the labels while rendering, types of arcs to draw while rendering tunnels, junctions, etc…
Right now I’m thinking of a severely extended graph, but (just curious) maybe there is something more convenient? (obviously, subway model is used for path finding and routing).
I would suggest creating different data models that treat different parts of your problem (because you have different bounded contexts).
Using a directed graph is a no-brainer. You should implement it in a very abstract manner, so you can reuse decent, proven path finding algorithms. Depending on the algorithm you chose (A* is likely a good candidate) your data model needs to optimize for this algorithm. In case of A* this starts by defining a meaningful, practically relevant topological sort on your subway stations (euclidian distance is fine for a start, but by analyzing the nature of your data and tuning it you are likely to gain a decent boost in performance). Another aspect is using caches for various calculations and quickly discarding stations out of question.
For representation, you want to create another model of your graph, that can carry all information relevant to presentation (colors, texts, etc.).