Add tunnel component and map connector component
This commit is contained in:
23
Dockerfile
Normal file
23
Dockerfile
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
FROM node:20-slim AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
RUN node ./scripts/parse-maps.js
|
||||||
|
RUN npm run build
|
||||||
|
RUN npm prune --production
|
||||||
|
|
||||||
|
FROM node:20-slim
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=builder /app/build ./build
|
||||||
|
COPY --from=builder /app/node_modules ./node_modules
|
||||||
|
COPY --from=builder /app/package.json ./package.json
|
||||||
|
|
||||||
|
USER node
|
||||||
|
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
EXPOSE 3000
|
||||||
|
CMD ["node", "build"]
|
||||||
@@ -1,36 +1,43 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { getElecColour } from '$lib/railStyles';
|
import { getElecColour } from '$lib/railStyles';
|
||||||
import BaseTrack from '$lib/components/mapIcons/BaseTrack.svelte';
|
import BaseTrack from '$lib/components/mapIcons/BaseTrack.svelte';
|
||||||
|
|
||||||
export let feature: {
|
export let feature: {
|
||||||
direction: 'up' | 'down';
|
direction: 'up' | 'down';
|
||||||
diverges: 'left' | 'right';
|
diverges: 'left' | 'right' | 'both';
|
||||||
elecBranch?: string;
|
elecBranch?: string;
|
||||||
};
|
};
|
||||||
export let activeElec: any;
|
export let activeElec: any;
|
||||||
export let reversed: boolean = false;
|
export let reversed: boolean = false;
|
||||||
|
|
||||||
$: isUp = feature.direction === 'up';
|
$: isUp = feature.direction === 'up';
|
||||||
$: visualUp = reversed ? !isUp : isUp;
|
$: visualUp = reversed ? !isUp : isUp;
|
||||||
|
|
||||||
$: isRight = feature.diverges === 'right';
|
const getPath = (side: 'left' | 'right') => {
|
||||||
|
const yStart = visualUp ? 64 : 0;
|
||||||
|
const yEnd = visualUp ? 8 : 56;
|
||||||
|
const xEnd = side === 'right' ? 56 : 8;
|
||||||
|
return `M 32 ${yStart} Q 32 32 ${xEnd} ${yEnd}`;
|
||||||
|
};
|
||||||
|
|
||||||
$: yStart = visualUp ? 64 : 0;
|
$: paths = (() => {
|
||||||
$: yEnd = visualUp ? 8 : 56;
|
if (feature.diverges === 'both') return [getPath('left'), getPath('right')];
|
||||||
$: xEnd = isRight ? 56 : 8;
|
return [getPath(feature.diverges)];
|
||||||
|
})();
|
||||||
|
|
||||||
$: branchColour = getElecColour(feature.elecBranch || activeElec);
|
$: branchColour = getElecColour(feature.elecBranch || activeElec);
|
||||||
$: branchPath = `M 32 ${yStart} Q 32 32 ${xEnd} ${yEnd}`;
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svg viewBox="0 0 64 64" width="64" height="64" class="junction">
|
<svg viewBox="0 0 64 64" width="64" height="64" class="junction">
|
||||||
<path d={branchPath} fill="none" stroke={branchColour} stroke-width="5" strone-linecap="round" />
|
{#each paths as d}
|
||||||
<BaseTrack {activeElec} height={64} />
|
<path {d} fill="none" stroke={branchColour} stroke-width="5" stroke-linecap="round" />
|
||||||
|
{/each}
|
||||||
|
<BaseTrack {activeElec} height={64} />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
svg {
|
svg {
|
||||||
display: block;
|
display: block;
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
93
src/lib/components/mapIcons/RouteEndLink.svelte
Normal file
93
src/lib/components/mapIcons/RouteEndLink.svelte
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
export let feature: {
|
||||||
|
routeName: string;
|
||||||
|
routeId: string;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="link-wrapper">
|
||||||
|
<a href="/map/{feature.routeId}" class="wide-button">
|
||||||
|
<div class="accent-bar"></div>
|
||||||
|
<div class="content">
|
||||||
|
<span class="sub-text">Continue to next map</span>
|
||||||
|
<span class="main-text">{feature.routeName}</span>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<svg viewBox="0 0 24 24" width="20" height="20">
|
||||||
|
<path d="M5 12h14M12 5l7 7-7 7" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.link-wrapper {
|
||||||
|
position: relative;
|
||||||
|
z-index: 100;
|
||||||
|
padding: 12px;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wide-button {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
background: #ffffff;
|
||||||
|
border: 2px solid #e2e8f0;
|
||||||
|
border-radius: 12px;
|
||||||
|
text-decoration: none;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.accent-bar {
|
||||||
|
width: 6px;
|
||||||
|
align-self: stretch;
|
||||||
|
background: #475569;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
flex: 1;
|
||||||
|
padding: 12px 16px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sub-text {
|
||||||
|
font-size: 10px;
|
||||||
|
font-weight: 700;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
color: #94a3b8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-text {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 800;
|
||||||
|
color: #1e293b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
padding-right: 20px;
|
||||||
|
color: #cbd5e1;
|
||||||
|
transition: transform 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.wide-button:hover {
|
||||||
|
border-color: #94a3b8;
|
||||||
|
background: #f8fafc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wide-button:hover .icon {
|
||||||
|
color: #475569;
|
||||||
|
transform: translateX(4px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.wide-button:active {
|
||||||
|
transform: scale(0.98);
|
||||||
|
background: #f1f5f9;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
56
src/lib/components/mapIcons/Tunnel.svelte
Normal file
56
src/lib/components/mapIcons/Tunnel.svelte
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import BaseTrack from "./BaseTrack.svelte";
|
||||||
|
|
||||||
|
export let feature: {
|
||||||
|
tunnelType: "start" | "whole" | "end";
|
||||||
|
length: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export let activeElec: any;
|
||||||
|
|
||||||
|
export let reversed: boolean = false;
|
||||||
|
|
||||||
|
const portalColour = "#475569"; // Slate grey
|
||||||
|
|
||||||
|
$: effectiveType = (() => {
|
||||||
|
if (!reversed || feature.tunnelType === 'whole') return feature.tunnelType;
|
||||||
|
return feature.tunnelType === 'start' ? 'end' : 'start';
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg viewBox="0 0 64 64" width="64" height="64" class="tunnel">
|
||||||
|
<BaseTrack {activeElec} height={64} />
|
||||||
|
|
||||||
|
<g fill="none" stroke={portalColour} stroke-width="3" stroke-linecap="round">
|
||||||
|
{#if effectiveType === 'whole'}
|
||||||
|
<path d="M 16 12 Q 32 24 48 12" />
|
||||||
|
<path d="M 16 52 Q 32 40 48 52" />
|
||||||
|
|
||||||
|
{:else if effectiveType === 'start'}
|
||||||
|
<path d="M 16 12 Q 32 24 48 12" />
|
||||||
|
|
||||||
|
{:else if effectiveType === 'end'}
|
||||||
|
<path d="M 16 52 Q 32 40 48 52" />
|
||||||
|
{/if}
|
||||||
|
</g>
|
||||||
|
|
||||||
|
{#if feature.tunnelType === 'whole' && feature.length}
|
||||||
|
<rect x="12" y="26" width="40" height="12" fill="white" />
|
||||||
|
<text
|
||||||
|
x="32"
|
||||||
|
y="35"
|
||||||
|
text-anchor="middle"
|
||||||
|
font-size="8.5"
|
||||||
|
font-weight="bold"
|
||||||
|
fill={portalColour}
|
||||||
|
class="t-text"
|
||||||
|
>
|
||||||
|
{feature.length}
|
||||||
|
</text>
|
||||||
|
{/if}
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
svg { display: block; overflow: visible; }
|
||||||
|
.t-text { font-family: ui-monospace, monospace; }
|
||||||
|
</style>
|
||||||
@@ -8,6 +8,7 @@ import Loop from '$lib/components/mapIcons/Loop.svelte';
|
|||||||
import SignallerChange from '$lib/components/mapIcons/SignallerChange.svelte';
|
import SignallerChange from '$lib/components/mapIcons/SignallerChange.svelte';
|
||||||
import ElectrificationChange from '$lib/components/mapIcons/ElectrificationChange.svelte';
|
import ElectrificationChange from '$lib/components/mapIcons/ElectrificationChange.svelte';
|
||||||
import SiteOf from '$lib/components/mapIcons/SiteOf.svelte';
|
import SiteOf from '$lib/components/mapIcons/SiteOf.svelte';
|
||||||
|
import Tunnel from '$lib/components/mapIcons/Tunnel.svelte';
|
||||||
|
|
||||||
export const components = {
|
export const components = {
|
||||||
station: Station,
|
station: Station,
|
||||||
@@ -21,5 +22,6 @@ export const components = {
|
|||||||
loops: Loop,
|
loops: Loop,
|
||||||
signallerChange: SignallerChange,
|
signallerChange: SignallerChange,
|
||||||
electrificationChange: ElectrificationChange,
|
electrificationChange: ElectrificationChange,
|
||||||
default: BaseTrack
|
default: BaseTrack,
|
||||||
|
tunnel: Tunnel,
|
||||||
};
|
};
|
||||||
|
|||||||
8
src/routes/healthz/+server.ts
Normal file
8
src/routes/healthz/+server.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import { json } from '@sveltejs/kit';
|
||||||
|
import type { RequestHandler } from './$types';
|
||||||
|
|
||||||
|
export const GET: RequestHandler = () => {
|
||||||
|
return json({ status: 'ok', uptime: process.uptime() }, {
|
||||||
|
status: 200
|
||||||
|
});
|
||||||
|
};
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import RouteRow from '$lib/components/RouteRow.svelte';
|
import RouteRow from '$lib/components/RouteRow.svelte';
|
||||||
|
import RouteEndLink from '$lib/components/mapIcons/RouteEndLink.svelte';
|
||||||
import { slide } from 'svelte/transition';
|
import { slide } from 'svelte/transition';
|
||||||
|
|
||||||
// data.route contains: routeName, routeId, elecStart, elecEnd, routeDetail[]
|
// data.route contains: routeName, routeId, elecStart, elecEnd, routeDetail[]
|
||||||
@@ -15,7 +16,8 @@
|
|||||||
signallerChange: true,
|
signallerChange: true,
|
||||||
electrificationChange: true,
|
electrificationChange: true,
|
||||||
siteof: true,
|
siteof: true,
|
||||||
junction: true
|
junction: true,
|
||||||
|
tunnel: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
let showFilters = false;
|
let showFilters = false;
|
||||||
@@ -106,12 +108,15 @@
|
|||||||
<main class="map-spine">
|
<main class="map-spine">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
{#each filteredFeatures as f, i (`${f.type}-${f.miles}-${f.chains}-${i}`)}
|
{#each filteredFeatures as f, i (`${f.type}-${f.miles}-${f.chains}-${i}`)}
|
||||||
|
{#if (f.type === 'continues')}
|
||||||
|
<RouteEndLink feature={f} />
|
||||||
|
{:else}
|
||||||
<RouteRow feature={f} activeElec={f.activeElec} {reversed} />
|
<RouteRow feature={f} activeElec={f.activeElec} {reversed} />
|
||||||
|
{/if}
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.map-layout {
|
.map-layout {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
routeName: Paddington - Reading
|
routeName: Paddington - Reading West Jn
|
||||||
routeId: 0001
|
routeId: 0001
|
||||||
signallerStart: TVSC Paddington WS
|
signallerStart: TVSC Paddington WS
|
||||||
# signallerEnd: TVSC Temple Meads WS
|
|
||||||
signallerEnd: TVSC Reading WS
|
signallerEnd: TVSC Reading WS
|
||||||
elecStart:
|
elecStart:
|
||||||
elec: 25kvac
|
elec: 25kvac
|
||||||
@@ -17,17 +16,14 @@ routeDetail:
|
|||||||
chains: 5
|
chains: 5
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Westbourne
|
name: Westbourne Bridge
|
||||||
description: Westbourne Avenue
|
|
||||||
position: over
|
position: over
|
||||||
category: aroad
|
category: minorRoad
|
||||||
roadName: A412
|
|
||||||
miles: 0
|
miles: 0
|
||||||
chains: 33
|
chains: 33
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Ranelagh Bridge
|
name: Ranelagh Bridge
|
||||||
description: Ranelegh Lane?
|
|
||||||
position: over
|
position: over
|
||||||
category: minorRoad
|
category: minorRoad
|
||||||
miles: 0
|
miles: 0
|
||||||
@@ -46,8 +42,9 @@ routeDetail:
|
|||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Lord's Hill Bridge
|
name: Lord's Hill Bridge
|
||||||
|
roadName: B411
|
||||||
position: over
|
position: over
|
||||||
category: road
|
category: minorRoad
|
||||||
miles: 0
|
miles: 0
|
||||||
chains: 52
|
chains: 52
|
||||||
|
|
||||||
@@ -65,6 +62,8 @@ routeDetail:
|
|||||||
|
|
||||||
- type: crossovers
|
- type: crossovers
|
||||||
description: Royal Oak Carriage Loop A&B diverge
|
description: Royal Oak Carriage Loop A&B diverge
|
||||||
|
miles: 0
|
||||||
|
chains: 75
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Great Western Road
|
name: Great Western Road
|
||||||
@@ -77,8 +76,8 @@ routeDetail:
|
|||||||
- type: bridge
|
- type: bridge
|
||||||
name: Westway
|
name: Westway
|
||||||
position: over
|
position: over
|
||||||
category: motorway
|
category: aroad
|
||||||
roadName: A40(M)
|
roadName: A40
|
||||||
miles: 1
|
miles: 1
|
||||||
chains: 18
|
chains: 18
|
||||||
|
|
||||||
@@ -96,7 +95,7 @@ routeDetail:
|
|||||||
chains: 33
|
chains: 33
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Godbourne Road
|
name: Golbourne Road
|
||||||
position: over
|
position: over
|
||||||
category: minorRoad
|
category: minorRoad
|
||||||
miles: 1
|
miles: 1
|
||||||
@@ -113,7 +112,7 @@ routeDetail:
|
|||||||
name: Ladbroke Grove
|
name: Ladbroke Grove
|
||||||
diverges: both
|
diverges: both
|
||||||
direction: down
|
direction: down
|
||||||
destination: Crossrail Depot & North Pole Depot
|
description: to Crossrail & North Pole Depots
|
||||||
miles: 1
|
miles: 1
|
||||||
chains: 73
|
chains: 73
|
||||||
|
|
||||||
@@ -121,7 +120,7 @@ routeDetail:
|
|||||||
name: Kensal Green South Junction
|
name: Kensal Green South Junction
|
||||||
diverges: right
|
diverges: right
|
||||||
direction: down
|
direction: down
|
||||||
destination: Crossrail Depot & North Pole Depot
|
description: to Crossrail & North Pole Depots
|
||||||
miles: 2
|
miles: 2
|
||||||
chains: 6
|
chains: 6
|
||||||
|
|
||||||
@@ -143,7 +142,7 @@ routeDetail:
|
|||||||
name: Old Oak Common East
|
name: Old Oak Common East
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: up
|
direction: up
|
||||||
destination: Crossrail Depot
|
description: to Crossrail Depot
|
||||||
miles: 2
|
miles: 2
|
||||||
chains: 62
|
chains: 62
|
||||||
|
|
||||||
@@ -151,7 +150,7 @@ routeDetail:
|
|||||||
name: Old Oak Common West
|
name: Old Oak Common West
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: up
|
direction: up
|
||||||
destination: Out of Use for HS2 Works
|
description: Out of Use for HS2 Works
|
||||||
miles: 3
|
miles: 3
|
||||||
chains: 20
|
chains: 20
|
||||||
|
|
||||||
@@ -173,7 +172,7 @@ routeDetail:
|
|||||||
name: Friars Junction
|
name: Friars Junction
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: up
|
direction: up
|
||||||
destination: Out of Use for HS2 Works
|
description: Out of Use for HS2 Works
|
||||||
miles: 3
|
miles: 3
|
||||||
chains: 53
|
chains: 53
|
||||||
|
|
||||||
@@ -195,14 +194,14 @@ routeDetail:
|
|||||||
- type: signallerChange
|
- type: signallerChange
|
||||||
from: TVSC Paddington WS
|
from: TVSC Paddington WS
|
||||||
to: TVSC Acton WS
|
to: TVSC Acton WS
|
||||||
miles: 300
|
miles: 3
|
||||||
chains: 3000
|
chains: 80
|
||||||
|
|
||||||
- type: junction
|
- type: junction
|
||||||
name: Acton East Junction
|
name: Acton East Junction
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: up
|
direction: up
|
||||||
destination: Up/Dn Poplar to Acton Wells Jn
|
description: Up/Dn Poplar to Acton Wells Jn
|
||||||
miles: 4
|
miles: 4
|
||||||
chains: 7
|
chains: 7
|
||||||
|
|
||||||
@@ -216,6 +215,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: station
|
- type: station
|
||||||
name: Acton Main Line
|
name: Acton Main Line
|
||||||
|
description: Relief Lines only
|
||||||
miles: 4
|
miles: 4
|
||||||
chains: 21
|
chains: 21
|
||||||
|
|
||||||
@@ -249,6 +249,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: station
|
- type: station
|
||||||
name: Ealing Broadway
|
name: Ealing Broadway
|
||||||
|
description: Shared with District & Central Lines
|
||||||
miles: 5
|
miles: 5
|
||||||
chains: 56
|
chains: 56
|
||||||
|
|
||||||
@@ -259,15 +260,19 @@ routeDetail:
|
|||||||
miles: 5
|
miles: 5
|
||||||
chains: 61
|
chains: 61
|
||||||
|
|
||||||
|
- type: bridge
|
||||||
|
name: Spring Bridge Road
|
||||||
|
position: over
|
||||||
|
category: minorRoad
|
||||||
|
miles: 5
|
||||||
|
chains: 68
|
||||||
|
|
||||||
- type: tunnel
|
- type: tunnel
|
||||||
name: Spring Bridge Road Car Park Tunnel
|
name: Spring Bridge Road Car Park Tunnel
|
||||||
starts:
|
tunnelType: whole
|
||||||
miles: 5
|
length: 0mi 121yd
|
||||||
chains: 70
|
miles: 5
|
||||||
ends:
|
chains: 73
|
||||||
miles: 5
|
|
||||||
chains: 76
|
|
||||||
lengthYards: 121
|
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Longfield Avenue
|
name: Longfield Avenue
|
||||||
@@ -293,6 +298,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: station
|
- type: station
|
||||||
name: West Ealing
|
name: West Ealing
|
||||||
|
description: Relief Lines only with Bay
|
||||||
miles: 6
|
miles: 6
|
||||||
chains: 46
|
chains: 46
|
||||||
|
|
||||||
@@ -300,7 +306,7 @@ routeDetail:
|
|||||||
name: West Ealing Junction
|
name: West Ealing Junction
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: down
|
direction: down
|
||||||
destination: Dn/Up Greenford to Greenford & West Ealing Sidings
|
description: Dn/Up Greenford to Greenford & West Ealing Sidings
|
||||||
miles: 6
|
miles: 6
|
||||||
chains: 54
|
chains: 54
|
||||||
|
|
||||||
@@ -315,7 +321,7 @@ routeDetail:
|
|||||||
name: Hanwell Junction
|
name: Hanwell Junction
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: up
|
direction: up
|
||||||
destination: Dn/Up Loop to Greenford & West Ealing Sidings
|
description: Dn/Up Loop to Greenford & West Ealing Sidings
|
||||||
miles: 7
|
miles: 7
|
||||||
chains: 19
|
chains: 19
|
||||||
|
|
||||||
@@ -328,15 +334,15 @@ routeDetail:
|
|||||||
name: Hanwell Viaduct
|
name: Hanwell Viaduct
|
||||||
position: under
|
position: under
|
||||||
category: waterway
|
category: waterway
|
||||||
crosses: River Brent
|
description: River Brent
|
||||||
miles: 7
|
miles: 7
|
||||||
chains: 6
|
chains: 6
|
||||||
|
|
||||||
- type: signallerChange
|
- type: signallerChange
|
||||||
from: TVSC Acton WS
|
from: TVSC Acton WS
|
||||||
to: TVSC Hayes WS
|
to: TVSC Hayes WS
|
||||||
miles: 300
|
miles: 7
|
||||||
chains: 4000
|
chains: 35
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Wharncliffe Viaduct
|
name: Wharncliffe Viaduct
|
||||||
@@ -347,7 +353,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Iron Bridge
|
name: Iron Bridge
|
||||||
crosses: Uxbridge Road
|
description: Uxbridge Road
|
||||||
position: under
|
position: under
|
||||||
category: aroad
|
category: aroad
|
||||||
roadName: A4020
|
roadName: A4020
|
||||||
@@ -360,11 +366,25 @@ routeDetail:
|
|||||||
miles: 8
|
miles: 8
|
||||||
chains: 20
|
chains: 20
|
||||||
|
|
||||||
|
- type: bridge
|
||||||
|
position: under
|
||||||
|
category: foot
|
||||||
|
name: Lyndhurst Avenue Subway
|
||||||
|
miles: 8
|
||||||
|
chains: 29
|
||||||
|
|
||||||
|
- type: bridge
|
||||||
|
position: under
|
||||||
|
category: foot
|
||||||
|
name: Church Subway
|
||||||
|
miles: 8
|
||||||
|
chains: 46
|
||||||
|
|
||||||
- type: junction
|
- type: junction
|
||||||
name: Southall East Junction
|
name: Southall East Junction
|
||||||
diverges: right
|
diverges: right
|
||||||
direction: up
|
direction: up
|
||||||
destination: Brentford Waste Terminal
|
description: Brentford Waste Terminal & Southall Depot
|
||||||
miles: 8
|
miles: 8
|
||||||
chains: 62
|
chains: 62
|
||||||
|
|
||||||
@@ -390,6 +410,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: crossovers
|
- type: crossovers
|
||||||
name: Southall West Junction
|
name: Southall West Junction
|
||||||
|
description: Southall Sidings Diverge
|
||||||
miles: 9
|
miles: 9
|
||||||
chains: 70
|
chains: 70
|
||||||
|
|
||||||
@@ -402,6 +423,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Grand Union Canal
|
name: Grand Union Canal
|
||||||
|
description: Paddington Branch
|
||||||
position: under
|
position: under
|
||||||
category: waterway
|
category: waterway
|
||||||
miles: 10
|
miles: 10
|
||||||
@@ -428,8 +450,16 @@ routeDetail:
|
|||||||
miles: 10
|
miles: 10
|
||||||
chains: 32
|
chains: 32
|
||||||
|
|
||||||
|
- type: bridge
|
||||||
|
position: under
|
||||||
|
category: waterway
|
||||||
|
name: Grand Union Canal
|
||||||
|
miles: 10
|
||||||
|
chains: 58
|
||||||
|
|
||||||
- type: station
|
- type: station
|
||||||
name: Hayes & Harlington
|
name: Hayes & Harlington
|
||||||
|
description: East facing Bay
|
||||||
miles: 10
|
miles: 10
|
||||||
chains: 71
|
chains: 71
|
||||||
|
|
||||||
@@ -446,7 +476,7 @@ routeDetail:
|
|||||||
direction: down
|
direction: down
|
||||||
miles: 11
|
miles: 11
|
||||||
chains: 13
|
chains: 13
|
||||||
destination: Heathrow Airport
|
description: Heathrow Airport
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: New Dawley Road
|
name: New Dawley Road
|
||||||
@@ -483,24 +513,39 @@ routeDetail:
|
|||||||
|
|
||||||
- type: station
|
- type: station
|
||||||
name: West Drayton
|
name: West Drayton
|
||||||
|
description: Platform 5 on West Drayton Loop
|
||||||
miles: 13
|
miles: 13
|
||||||
chains: 17
|
chains: 17
|
||||||
|
|
||||||
|
- type: bridge
|
||||||
|
name: Station Road
|
||||||
|
positon: under
|
||||||
|
category: minorRoad
|
||||||
|
miles: 12
|
||||||
|
chains: 56
|
||||||
|
|
||||||
- type: junction
|
- type: junction
|
||||||
name: West Drayton Junction
|
name: West Drayton Junction
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: down
|
direction: down
|
||||||
destination: Colnbrook Freight (For Heathrow)
|
description: Colnbrook Freight (near Heathrow)
|
||||||
miles: 13
|
miles: 13
|
||||||
chains: 31
|
chains: 31
|
||||||
|
|
||||||
|
- type: bridge
|
||||||
|
name: River Freys
|
||||||
|
position: under
|
||||||
|
category: waterway
|
||||||
|
miles: 13
|
||||||
|
chains: 37
|
||||||
|
|
||||||
- type: crossovers
|
- type: crossovers
|
||||||
name: West Drayton West
|
name: West Drayton West
|
||||||
miles: 13
|
miles: 13
|
||||||
chains: 50
|
chains: 50
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Coinbrook Branch
|
name: Colnbrook Branch
|
||||||
position: under
|
position: under
|
||||||
category: rail
|
category: rail
|
||||||
miles: 13
|
miles: 13
|
||||||
@@ -528,16 +573,26 @@ routeDetail:
|
|||||||
chains: 10
|
chains: 10
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
# name: M25 Motorway
|
name: London Orbital Motorway
|
||||||
position: over
|
position: over
|
||||||
category: motorway
|
category: motorway
|
||||||
roadName: M25
|
roadName: M25
|
||||||
miles: 14
|
miles: 14
|
||||||
chains: 41
|
chains: 41
|
||||||
|
|
||||||
|
- type: signallerChange
|
||||||
|
from: TVSC Hayes WS
|
||||||
|
to: TVSC Slough WS
|
||||||
|
miles: 14
|
||||||
|
chains: 45
|
||||||
|
|
||||||
- type: loop
|
- type: loop
|
||||||
position: left
|
position: left
|
||||||
name: Up Iver loop
|
name: Up Iver loop
|
||||||
|
elecLoop: none
|
||||||
|
description: Part electrified
|
||||||
|
miles: 14
|
||||||
|
chains: 50
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Thorney Lane South
|
name: Thorney Lane South
|
||||||
@@ -551,12 +606,6 @@ routeDetail:
|
|||||||
miles: 14
|
miles: 14
|
||||||
chains: 60
|
chains: 60
|
||||||
|
|
||||||
- type: signallerChange
|
|
||||||
from: TVSC Hayes WS
|
|
||||||
to: TVSC Slough WS
|
|
||||||
miles: 300
|
|
||||||
chains: 5000
|
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Market Lane
|
name: Market Lane
|
||||||
position: under
|
position: under
|
||||||
@@ -574,11 +623,18 @@ routeDetail:
|
|||||||
- type: junction
|
- type: junction
|
||||||
name: Langley GF
|
name: Langley GF
|
||||||
diverges: left
|
diverges: left
|
||||||
destination: Langley Sidings
|
description: Langley Sidings
|
||||||
direction: up
|
direction: up
|
||||||
miles: 15
|
miles: 15
|
||||||
chains: 76
|
chains: 76
|
||||||
|
|
||||||
|
- type: bridge
|
||||||
|
position: under
|
||||||
|
category: foot
|
||||||
|
name: Nash's Subway
|
||||||
|
miles: 15
|
||||||
|
chains: 76
|
||||||
|
|
||||||
- type: station
|
- type: station
|
||||||
name: Langley
|
name: Langley
|
||||||
miles: 16
|
miles: 16
|
||||||
@@ -615,6 +671,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: crossovers
|
- type: crossovers
|
||||||
name: Dolphin Junction
|
name: Dolphin Junction
|
||||||
|
description: Multiple crossovers
|
||||||
miles: 17
|
miles: 17
|
||||||
chains: 20
|
chains: 20
|
||||||
|
|
||||||
@@ -635,6 +692,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: station
|
- type: station
|
||||||
name: Slough
|
name: Slough
|
||||||
|
description: Change for Windsor
|
||||||
miles: 18
|
miles: 18
|
||||||
chains: 36
|
chains: 36
|
||||||
|
|
||||||
@@ -649,7 +707,7 @@ routeDetail:
|
|||||||
name: Windsor Branch Junction
|
name: Windsor Branch Junction
|
||||||
diverges: right
|
diverges: right
|
||||||
direction: down
|
direction: down
|
||||||
destination: Windsor Branch
|
description: Windsor Branch from platforms 1 & 2 Only
|
||||||
miles: 18
|
miles: 18
|
||||||
chains: 44
|
chains: 44
|
||||||
|
|
||||||
@@ -709,6 +767,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: station
|
- type: station
|
||||||
name: Burnham
|
name: Burnham
|
||||||
|
description: Relief Lines only
|
||||||
miles: 20
|
miles: 20
|
||||||
chains: 77
|
chains: 77
|
||||||
|
|
||||||
@@ -742,6 +801,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: station
|
- type: station
|
||||||
name: Taplow
|
name: Taplow
|
||||||
|
description: Main line platforms too low for service stops
|
||||||
miles: 22
|
miles: 22
|
||||||
chains: 39
|
chains: 39
|
||||||
|
|
||||||
@@ -818,7 +878,7 @@ routeDetail:
|
|||||||
name: Marlow Branch
|
name: Marlow Branch
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: down
|
direction: down
|
||||||
destination: Bourne End & Marlow
|
description: Bourne End & Marlow, from Platform 5 only
|
||||||
miles: 24
|
miles: 24
|
||||||
chains: 25
|
chains: 25
|
||||||
|
|
||||||
@@ -826,7 +886,7 @@ routeDetail:
|
|||||||
name: Maidenhead Stabling Sidings
|
name: Maidenhead Stabling Sidings
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: down
|
direction: down
|
||||||
destination: Crossrail Sidings
|
description: Crossrail Sidings
|
||||||
miles: 24
|
miles: 24
|
||||||
chains: 40
|
chains: 40
|
||||||
|
|
||||||
@@ -883,13 +943,13 @@ routeDetail:
|
|||||||
- type: signallerChange
|
- type: signallerChange
|
||||||
from: TVSC Slough WS
|
from: TVSC Slough WS
|
||||||
to: TVSC Twyford WS
|
to: TVSC Twyford WS
|
||||||
miles: 300
|
miles: 27
|
||||||
chains: 6000
|
chains: 45
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Pipeline
|
name: Pipeline
|
||||||
position: over
|
position: over
|
||||||
category: pipes
|
category: pipeline
|
||||||
miles: 27
|
miles: 27
|
||||||
chains: 60
|
chains: 60
|
||||||
|
|
||||||
@@ -949,6 +1009,7 @@ routeDetail:
|
|||||||
|
|
||||||
- type: crossovers
|
- type: crossovers
|
||||||
name: Twyford East
|
name: Twyford East
|
||||||
|
description: Crossover from Down Relief to Up Relief
|
||||||
miles: 30
|
miles: 30
|
||||||
chains: 68
|
chains: 68
|
||||||
|
|
||||||
@@ -966,10 +1027,9 @@ routeDetail:
|
|||||||
chains: 1
|
chains: 1
|
||||||
|
|
||||||
- type: junction
|
- type: junction
|
||||||
name: Henley Branch Junction
|
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: down
|
direction: down
|
||||||
destination: Henley-on-Thames
|
description: Henley-on-Thames from Platform 4 only
|
||||||
miles: 31
|
miles: 31
|
||||||
chains: 4
|
chains: 4
|
||||||
|
|
||||||
@@ -982,16 +1042,16 @@ routeDetail:
|
|||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Seven Arch Viaduct
|
name: Seven Arch Viaduct
|
||||||
crosses: River Loddon
|
description: River Loddon
|
||||||
position: under
|
position: under
|
||||||
category: waterway
|
category: waterway
|
||||||
miles: 31
|
miles: 31
|
||||||
chains: 20
|
chains: 20
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name:
|
name: Footpath
|
||||||
position: under
|
position: under
|
||||||
category:
|
category: foot
|
||||||
miles: 31
|
miles: 31
|
||||||
chains: 30
|
chains: 30
|
||||||
|
|
||||||
@@ -1046,7 +1106,7 @@ routeDetail:
|
|||||||
- type: bridge
|
- type: bridge
|
||||||
name: Gas Pipeline
|
name: Gas Pipeline
|
||||||
position: over
|
position: over
|
||||||
category: pipes
|
category: pipeline
|
||||||
miles: 33
|
miles: 33
|
||||||
chains: 71
|
chains: 71
|
||||||
|
|
||||||
@@ -1060,17 +1120,24 @@ routeDetail:
|
|||||||
- type: loop
|
- type: loop
|
||||||
position: left
|
position: left
|
||||||
name: Kennet Passenger Loop
|
name: Kennet Passenger Loop
|
||||||
|
description: Between Up/Dn Relief
|
||||||
miles: 34
|
miles: 34
|
||||||
chains: 48
|
chains: 48
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: Broken Brow
|
name: Broken Brow
|
||||||
position: under
|
position: under
|
||||||
category: motorway
|
category: aroad
|
||||||
roadName: A329(M)
|
roadName: A3290
|
||||||
miles: 34
|
miles: 34
|
||||||
chains: 50
|
chains: 50
|
||||||
|
|
||||||
|
- type: signallerChange
|
||||||
|
from: TVSC Twyford WS
|
||||||
|
to: TVSC Reading WS
|
||||||
|
miles: 34
|
||||||
|
chains: 70
|
||||||
|
|
||||||
- type: bridge
|
- type: bridge
|
||||||
name: River Kennet
|
name: River Kennet
|
||||||
position: under
|
position: under
|
||||||
@@ -1078,22 +1145,31 @@ routeDetail:
|
|||||||
miles: 34
|
miles: 34
|
||||||
chains: 77
|
chains: 77
|
||||||
|
|
||||||
- type: signallerChange
|
|
||||||
from: TVSC Twyford WS
|
|
||||||
to: TVSC Reading WS
|
|
||||||
miles: 300
|
|
||||||
chains: 7000
|
|
||||||
|
|
||||||
- type: crossovers
|
- type: crossovers
|
||||||
name: Kennet Bridge Junction
|
name: Kennet Bridge Junction
|
||||||
miles: 35
|
miles: 35
|
||||||
chains: 10
|
chains: 10
|
||||||
|
|
||||||
|
- type: bridge
|
||||||
|
name: Huntley & Palmers Tunnel
|
||||||
|
description: Disused
|
||||||
|
position: under
|
||||||
|
category: foot
|
||||||
|
miles: 35
|
||||||
|
chains: 28
|
||||||
|
|
||||||
- type: junction
|
- type: junction
|
||||||
name: Reading New Junction
|
name: Reading New Junction
|
||||||
diverges: right
|
diverges: right
|
||||||
direction: up
|
direction: up
|
||||||
destination: Southern Lines
|
description: to Southern Lines (Waterloo/Guildford)
|
||||||
|
miles: 35
|
||||||
|
chains: 40
|
||||||
|
|
||||||
|
- type: bridge
|
||||||
|
position: under
|
||||||
|
category: rail
|
||||||
|
name: Low Level Tunnel
|
||||||
miles: 35
|
miles: 35
|
||||||
chains: 40
|
chains: 40
|
||||||
|
|
||||||
@@ -1101,7 +1177,7 @@ routeDetail:
|
|||||||
name: Reading East Junction
|
name: Reading East Junction
|
||||||
diverges: left
|
diverges: left
|
||||||
direction: up
|
direction: up
|
||||||
destination: Southern Lines
|
description: to Southern Lines (Waterloo/Guildford)
|
||||||
miles: 35
|
miles: 35
|
||||||
chains: 61
|
chains: 61
|
||||||
|
|
||||||
@@ -1115,4 +1191,45 @@ routeDetail:
|
|||||||
- type: station
|
- type: station
|
||||||
name: Reading
|
name: Reading
|
||||||
miles: 35
|
miles: 35
|
||||||
chains: 78
|
chains: 78
|
||||||
|
|
||||||
|
- type: bridge
|
||||||
|
name: Caversham Road
|
||||||
|
position: under
|
||||||
|
category: minorRoad
|
||||||
|
miles: 35
|
||||||
|
chains: 11
|
||||||
|
|
||||||
|
- type: junction
|
||||||
|
diverges: right
|
||||||
|
direction: down
|
||||||
|
name: Westbury Line Junction
|
||||||
|
description: to Oxford Road Jn
|
||||||
|
miles: 36
|
||||||
|
chains: 17
|
||||||
|
|
||||||
|
- type: junction
|
||||||
|
diverges: right
|
||||||
|
direction: down
|
||||||
|
name: Caversham Road Junction
|
||||||
|
description: Reading Feeder Main/Relief diverge and pass under Reading Viaduct to Oxford Rd Jn
|
||||||
|
miles: 36
|
||||||
|
chains: 22
|
||||||
|
|
||||||
|
- type: crossovers
|
||||||
|
name: Reading High Level Junction
|
||||||
|
description: Down Reading Festival Connects to Down Main
|
||||||
|
miles: 36
|
||||||
|
chains: 47
|
||||||
|
|
||||||
|
- type: junction
|
||||||
|
diverges: right
|
||||||
|
direction: up
|
||||||
|
name: Reading West Junction
|
||||||
|
description: to Oxford Road Junction (From relief lines only)
|
||||||
|
miles: 37
|
||||||
|
chains: 17
|
||||||
|
|
||||||
|
- type: continues
|
||||||
|
routeName: Reading West Jn - Bristol TM
|
||||||
|
routeId: "0002"
|
||||||
Reference in New Issue
Block a user