I think that satisfying rendering and routing should have priority over linear referencing. You can see exactly what I mean in this updated diagram, which now includes decision points regarding linear referencing:
Mermaid source code
flowchart TD
start(["`Where should you place the railway operating site (e.g. *railway=station*) node?`"])
--> UBahn{"`Is it completely underground?`"}
UBahn -->|Yes| platf
UBahn -->|No| bldng{"`Is there a *building=train_station* area?`"}
bldng -->|Yes| centr([To its centroid that lies inside the polygon.])
bldng -->|No| platf{"`Are there *railway=platform*s?`"}
platf -->|Yes, one| centr
platf -->|Yes, multiple| hull["`Draw a concave hull around them in your mind.`"]
platf -->|No| trcks{Are there multiple tracks?}
trcks -->|Yes| stop{"`Are there *railway=stop* nodes on the tracks?`"}
trcks -->|No| entry{Are there entry signals?}
stop -->|Yes| hull
stop -->|No| taket[Take the tracks themselves.]
entry -->|Yes| hull
entry -->|No| ref{"`Is its *railway:position=\** known?`"}
taket --> hull
hull --> centr
ref -->|Yes| miles{"`Is it possible to interpolate this position using nearby *railway=milestone*s?`"}
ref -->|No| name
miles -->|Yes| estlo["`Estimate the linearly referenced location of the operating site.`"]
miles -->|No| name{Is there a name sign?}
estlo --> there([There.])
name -->|Yes| there
name -->|No| estce[Estimate the centre of the operating site.]
estce --> there