RAD — Railway Alignment Designer The Manual Read, annotate and download the current edition. Training Reference Open the designer
A railway carried on a viaduct through a wooded valley, with a tunnel portal beyond, annotated with chainage, curve radius, gradient and structure lengths
REFERENCE AND PRACTICE

Railway Alignment Designer
User Manual

Laying out a railway in plan and profile, routing a corridor over real terrain, checking it against the governing standard, pricing it on the plan heads, and getting drawings and schedules out of it — the complete process, the reference behind it, and the limits of what it may be asked to do.

A browser-based alignment design workspace
Plan & profile geometry · automatic corridor routing · cant and transitions · compliance · crossings & hydrology · station yards · estimate · DXF, PDF, DOCX, LandXML, XLSX, KML

Edition 3 · Revised 15 October 2026
www.radrailway.com

About this manual

This is the working document for an engineer who has to produce an alignment and then defend it. It follows the same order the software does: what it is, how to run it, how a design is made, what is checked, what comes out, and what none of it is entitled to claim.

Who it is for

Permanent-way and civil engineers doing reconnaissance, feasibility and preliminary location work; the people who review that work; and anybody deploying or maintaining the software. No programming is needed for Parts I and II. Part III assumes you are comfortable with a terminal for the deployment and database chapters, and nothing more.

How it is organised

Part I
Orientation — what the tool is, how to run it, and a tour of the screen.
Part II
The process — from an empty workspace to a priced, checked, exported design, stage by stage.
Part III
Reference — codes, standards, formats, architecture, deployment, verification.
Appendices
Glossary, rate provenance, sample projects, a one-page quick card.

Conventions

Design a routeBold names a control on the screen — a button, a tab, a field.
Ctrl+KA key or chord. On macOS read Ctrl as ⌘.
js/core/cant.jsA file, a value, a code, or something typed literally.
R_MINA compliance code, as it appears in the report and the exported CSV.
12+530A chainage: 12 km and 530 m from the adopted chainage datum; the project can start at a nonzero chainage.
Explanatory plan and profile diagram defining radius, transition length, chainage datum, rail level, ground level and gradient
Notation guide. Schematic, not to scale. Chainage is measured along the adopted alignment from its chainage datum; a project's first chainage need not be zero. RL and GL must use the same vertical datum before their difference describes cut or fill.
Callouts

Blue is information worth keeping in mind. Amber marks a place where the tool will let you do something that needs judgement. Red marks a claim that must not be made from this software's output alone. Green marks a check that has actually passed.

Judgement

The setting is yours; the note tells you what it costs.

Not a substitute

Field verification, survey, or a governing code of practice is required here.

About the figures

Screenshots are captured from the running application. The alignment figures use the worked example in Appendix C, a corridor across the Maharashtra plateau. The current workspace, detailed-estimate and bridge figures use demonstration projects to show their controls; their quantities and dimensions are examples, not approved designs. Older engineering-view figures are retained where they explain the same operation, although their surrounding toolbar can differ. Where map or corridor services were unavailable, the caption says so.

Printing

Choose Preview PDF here or on the Reference page to prepare this edition locally with searchable text, tables, figures and notation pins on A4 pages. The preview lets you annotate or download the PDF; Edit PDF opens the dedicated PDF Studio. For a physical copy, the browser’s Print command remains available with A4 and background graphics enabled. This HTML page is the maintained source; no separate, older PDF is downloaded. On the configured website, reading the manual and downloading its PDF require sign-in. An already downloaded PDF can be read without a connection.


The software prices work in Indian Railways plan heads and defaults to Indian Railways broad gauge, and this manual follows it there. The geometry, compliance, terrain and export engines are gauge- and standard-neutral; five other standard presets ship with it.

Contents

Part I — Orientation
  1. 1What this software is The claim it makes, the claim it refuses, and the design principles behind both
  2. 2Getting started First launch, offline use, cloud OSM and one-file project saves
  3. 3The workspace Six task groups, stage rail, side panel, three views and the save indicator
  4. 4The four stages, and the gate between them Why the geometry locks, what stage 2 needs, and what may be waived
Part II — The process
  1. 5The design process, end to end The master flow, and which chapter answers each step
  2. 6Designing a route automatically Route points, terrain detail, the corridor search, and reading the run report
  3. 7A line where a line already runs Doubling, third and fourth lines: detection, parallel offset, realignment, tie-ins
  4. 8Drawing and editing by hand Intersection points, radii, transitions, cant, the grade line, ground and georeference
  5. 9How the geometry works Clothoids, shift and tangent lengths, cant and deficiency, vertical curves
  6. 10Compliance, and automatic repair Reading a finding, Fix and Fix all, severity, strictness and per-rule overrides
  7. 11Crossings, waterways and utilities Corridor lookup, waterways, the bridge workspace, wing walls and A1 GADs
  8. 12Stations and yards The yard editor, the throat ladder, plateau grading, signals and station limits
  9. 13The estimate, and what it costs to own Component bills, measurements, schedule rates, analyses, project charges and exports
  10. 14The workbench: every engine, with a way in Sections, geology, provenance, parcels, haul, utilities, diff, review, variants, report
  11. 15Seeing the design Cab ride and Cab ride 2, station scenery, terrain, project sheets and basemaps
  12. 16Deliverables and exports Project presentation, tender schedules, EPC draft, CAD drafting, drawings and data exchange
  13. 17Working with other people Accounts, the project hub, sharing, review comments and what changed
Part III — Reference
  1. 18Keyboard and the command palette
  2. 19The compliance code catalogue Reference codes by category, with what each one is protecting
  3. 20Design standards and limits
  4. 21File formats and schemas The project file, the CSV columns, the DXF layers, the LandXML mapping
  5. 22Architecture and the module map
  6. 23Verification, and rebuilding this manual
  7. 24Deployment, server routes and the cloud half
  8. 25Troubleshooting
  9. 26Limitations, and professional responsibility
Appendices
  1. AGlossary
  2. BWhere the rates come from
  3. CThe worked examples
  4. DQuick reference card

Figures

1.1 The front door · 2.1 The Reference page · 2.2 The opening question · 2.3 Choose a save destination · 3.1 The grouped workspace · 3.2 Nothing loaded · 4.1 The stage model · 4.2 The gate · 5.1 The process, end to end · 6.1 Design a route · 6.2 The Structures tab · 6.3 Inside the corridor search · 6.4 The router at work · 6.5 The run report · 6.6 Compare · 7.1 Multiple tracking · 8.1 The curve schedule · 8.2 The profile · 8.3 Structures · 8.4 The Inclusion tab · 9.1 Anatomy of a curve · 9.2 Cant, deficiency and excess · 9.3 Anatomy of a vertical curve · 9.4 Colour by permitted speed · 10.1 A design that does not comply · 10.2 A finding, explained · 10.3 The repair loop · 10.4 The same panel on a design that passes · 11.1 The crossing schedule · 11.2 The corridor features panel · 11.3 The over-or-under decision · 11.4 Sizing a waterway · 11.5 Editing a bridge · 11.6 A1 GAD preview · 12.1 The station stage · 12.2 A station, in detail · 12.3 The throat is a ladder · 13.1 The abstract of cost, withholding a total · 13.2 The general abstract · 13.3 Detailed estimate summary · 13.4 Measurement book · 14.1 The workbench · 14.2 Cross-sections · 14.3 Haul and borrow · 15.1 Cab · 15.2 Chase · 15.3 Orbit · 15.4 Project sheets · 16.1 Export deliverables · 16.2 Project presentation in progress · 16.3 Document layouts · 16.4 Tender export preparation · 16.5 CAD drafting · 16.6 Drawing import report · 16.7 Railway component library · 16.8 The draft report · 17.1 The profile page · 18.1 The command palette · 20.1 The Design Limits tab · 20.2 The considerations console · 22.1 The module map · 22.2 How a route becomes a drawing

Part One

Orientation

  1. What this software is
  2. Getting started
  3. The workspace
  4. The four stages, and the gate between them

Four short chapters that put the tool in front of you: what it claims, how to start it, what every part of the screen is for, and the one structural idea — stages — that the rest of the manual is organised around.

Chapter One

What this software is

A track alignment design workspace that runs in a browser, with no installation — and a deliberate account of what it will not claim.

The claim

Railway Alignment Designer lays out a railway in plan and profile, works the cant and transition lengths out from the design speed, checks the result against the governing standard, and produces setting-out tables, drawings and schedules. Given two points on a map it will fetch the terrain, search a corridor, fit geometry to it, fit a grade line to the ground, propose the structures the profile implies, price the lot on the Indian Railways plan heads, and tell you every place the design departs from the standard and what to do about each one.

On a 50 km corridor that whole pass takes about ten seconds in the browser. The worked example this manual is illustrated from — 58 km across the Maharashtra plateau — designs, repairs and checks itself in under a minute on an ordinary laptop.

What it produces

A traceable first pass and preliminary design, checked against the configured limits: corridor feasibility, comparative alignments, quantities and a preliminary abstract of cost, with production-format drawings and schedules to hand on. It is an engineering accelerator.

What it is not

It is not a replacement for field verification. The terrain is satellite radar data at roughly 30 m horizontal and ±16 m vertical; the corridor features are contributed map data; generated allowances and sourced or analysed rates must be checked for the project. Nothing it produces is a construction level, a schedule of acquisition, or a certified compliance opinion.

The five things it does that a drafting package does not

  1. It routes. A* over an elevation grid, one search per leg between the points you have pinned, with the cost blending length, cross slope, height gained beyond what the ruling gradient can absorb, and heading change.
  2. It checks itself against a standard, continuously, and every finding carries the measurement, the limit, the clause, the reason the limit exists and the ways out.
  3. It repairs. Most failures have a Fix; the ones that would need the route or the design speed changed decline and state the trade-off instead of guessing.
  4. It knows what it does not know. A total is withheld rather than shown without its bridges; an empty map answer that no second source confirmed is reported as did not load rather than as a plausible zero; ground that nobody surveyed is hatched rather than painted.
  5. It prices the design and keeps an editable bill. The generated estimate follows earthwork, crossings and stations. The detailed estimate stores the engineer's component quantities, measurements and adopted rates. An imported design bill is a fixed snapshot; review it when the alignment changes (Chapter 13).

The principles behind the code

PrincipleWhat it means in practice
Calculations stay in the applicationThe geometry, quantity engines and .xlsx writer are part of the project. React supplies panels and Three.js supplies Cab ride 2 and bridge visualisation; Vite builds the interface for deployment. Using the hosted app requires no desktop installation.
The engine is testableEverything under js/core/ is free of the DOM and loads under Node, so geometry and calculation regressions can be checked without a browser.
It suggests, it does not chooseWhere a setting is a judgement — terrain detail, which side of an existing formation, a cost surface — the tool ranks the options, marks the one it would pick, and then does exactly what you asked.
Nothing is silently coarsenedThe grid you press is the grid the design is built on. The severity you set is the severity applied. A rule you turned off is listed above the report and in the footer of the exported CSV.
Uncertainty is a quantityNot a disclaimer. Provenance is reported as a vertical σ per reach; cost risk as P50/P80/P95 with a tornado of drivers; terrain grid choice widens the quantity uncertainty that follows from it.

What is in the box

Geometry

IP polyline with a radius and two — optionally asymmetric — transition lengths per intersection point, solved into a continuous chain of straights, clothoids and arcs. VIPs joined by constant grades with equal-tangent parabolic vertical curves. Cant, deficiency and excess for the fast and slow traffic you nominate.

Ground

Public SRTM-derived terrain anywhere in the world at 200/120/60/30 m, cross-sections cut on the normal with benching and berms, geology as reaches, provenance by source, mass haul, and the land boundary offset from the toe of the earthwork.

The corridor

Roads, railways, watercourses, power lines and pipelines from OpenStreetMap; the crossing schedule and its over/under decision; catchment by D8 flow accumulation, Dickens discharge, Lacey waterway and the Bridge Manual class.

Operations and cost

Running-time simulation with a Davis resistance, traction energy and carbon, the abstract of cost on IR plan heads, whole-life cost with sensitivity, cost risk with a tornado, and the speed–cost frontier.

Drawings

5 km plan-and-profile sheet packages, station yard conceptual plans, LandXML 1.2, a multi-sheet workbook, Google Earth models and every schedule as CSV.

Review

A project hub with revision history, sharing by email address, comments anchored to a place in the design, a three-altitude diff, and variants inside one project.

The landing page
Figure 1.1 — The front door. index.html is the public page; the workspace itself is app.html, and help.html carries a short reference that this manual is the long form of.

Who decides what

The dividing line runs through the whole application and it is worth stating once. The tool decides arithmetic: what the cant should be for that radius and speed, whether 6.25 m of clearance exists, how much earth is in that cutting, what a 1 in 8.5 turnout does to the fouling mark. The engineer decides engineering: where the line should go, what speed the line is for, which side of the existing formation to build on, whether a warning is acceptable on this project, and whether any of it is true on the ground.

A program that quietly coarsened a setting on the engineer's behalf would be lying about what it had designed.
Chapter Two

Getting started

Open www.radrailway.com in a browser, or use the Pro desktop edition for Windows and macOS with native project files.

Start in the browser

The workspace is a web application. Open www.radrailway.com in a browser and it is running: no download, no installer, no licence file, no plug-in, and nothing to keep updated — new releases are delivered by the site. Close older application tabs to let a waiting update activate.

To start work

Go to www.radrailway.com, sign in, and press Design a route. Everything in Part II of this manual happens in that one browser tab.

The desktop edition

Open the website's Free & Pro section and sign in with an active Pro account to request a Windows or macOS installer. Installer delivery checks the account's Pro entitlement; a visible download button by itself does not grant access. Choose the Mac build matching your processor when architecture choices are offered.

Install and open RAD, then use Open and Save for native .rads projects. The Windows installer and Mac application associate the project extension with the RAD logo; the portable Windows package does not install file associations. File icons are an operating-system association: a copied project cannot force its icon on a computer without RAD installed, and another application selected as the default can override that association.

Use Ctrl on Windows and ⌘ on macOS for the native file shortcuts. Internet services such as account verification, maps and live terrain still require connectivity. The desktop window does not turn absent online survey data into an offline dataset.

What it needs

A browser
Any current Chromium, Edge, Firefox or Safari. Saving straight back to a file on your own disk needs the File System Access API, which Chromium-based browsers have; elsewhere saving degrades to a download and says so rather than pretending the file is being kept current.
An account
Free to create, and it buys the project hub — your projects kept across machines with revision history. Sharing with a colleague, creating review links and team editing require Pro; read-only recipients can view for free. Sign-in is required on the configured website; deliverable downloads can also require Pro access. Work can also be kept purely as files on your own computer.
A network
For terrain, basemaps, corridor features, place search and the project hub. Each of those degrades on its own without taking the rest with it, and a corridor whose terrain has already been fetched will design again with no signal at all.
A screen
Designed for a laptop display and above. The plan takes the whole window with Shift+F, and the side panel folds to its icons with [.

Offline, and as an installed application

The application keeps a complete version of its interface for offline use; a new version waits for the previous version's tabs to close before taking over. Terrain tiles are cached separately in the browser. A web app manifest is included, so the workspace can be installed to a desktop or a phone home screen and opened without browser furniture.

In the field

Before leaving the network, sign in, open the project and let the required resources load. Save a local .rads with terrain and OSM for the work you need. Test reopening it offline in that browser. New place searches, uncached terrain or basemap tiles, fresh corridor queries and cloud saving need a connection. The rate catalogue is an offline application asset once the app's resources have loaded; selected rates also travel inside the project.

Where the documentation lives

The Reference page on the site, with the manual section and its download
Figure 2.1 — The Reference page. The short form of everything in this book, and the book itself. Sign in to read the manual or download its PDF on the configured site. Use Preview PDF to annotate, edit or download the current edition; the saved file remains readable offline.

The first launch

The workspace opens empty — a single straight kilometre, because the geometry solver needs two points to have a line at all. Then two gates, in order.

The opening question, over an empty workspace
Figure 2.2 — The opening question. Every answer leads somewhere: design a route from a map, open a project from this computer or from the hub, start from the blank alignment already on screen, or open one of the worked examples. A recovered draft, when there is one, is offered first and beats the question — work already in progress is not something to be asked about.
  1. Sign in. The workspace sits behind an account, because that is what projects are saved against, what lets them follow you between machines, and who a shared project is shared with. The panel has no close button, no Esc, no click-away and no way past — a gate with a dismiss control is not a gate. The same gate stands in front of the reference page, your profile and this manual; only the front page is open. If the account host cannot be reached the gate says so and offers to try again, rather than letting you in: it used to let you in, which also meant anyone able to stop one request could open it. It lifts entirely only for a build with no cloud project configured, where there are no accounts to check against.
  2. What to do. The question in Figure 2.2.

Opening and saving

A project lives in one of two places — a file on this computer, or the project hub behind the sign-in — and which one is asked once, the first time it is saved. After that Save puts it back where it came from.

TargetBehaviour
A file on diskOne Name.rads contains the design, available terrain, compact OSM survey, imported surveys, saved bridge designs and estimate inputs. In browsers with file-handle support, choose its location once and Save writes back to it.
A downloadBrowsers without file-handle support download one .rads per explicit save. Keep the newest copy; a download does not overwrite the original.
The project hubThe cloud keeps the design and its compact OSM survey, so reopening a saved corridor restores its features without another Overpass lookup. The DEM grid is omitted and its terrain tiles are fetched again. Imported survey surfaces and the saved ground profile are retained. The hub also keeps revision history and sharing. See Chapter 17.
Nowhere yetAutosave keeps a draft in the browser and offers it back on the next visit. Signing out clears it, because a draft left behind would be offered by name to whoever opened the application next.
  1. Use File › Open for an existing project, or Save as to choose a new destination. A project opened from the hub normally saves back to that cloud project.
  2. Wait for any missing data you want to retain locally to finish restoring, then press Save. A file can only include terrain and map data that are available at that moment.
  3. Check the shared save/status button: Save means there are unsaved changes, Saving… means the write is in progress, and Saved confirms completion. Its tooltip identifies the destination and time.
Opening older projects

Older .json projects and .rads/.radsupport pairs still open. Select or drop both legacy files together if you have them. Saving next time embeds the available data in one .rads. An old cloud save that omitted OSM needs one lookup; let it finish and explicitly save the project so later openings retain that extract. An old survey already removed from cloud storage cannot be recovered merely by opening the new app.

Save project as location chooser offering one local .rads file
Figure 2.3 — Choose a save destination. The local option contains available terrain and map data with the design in one .rads. This is the chooser before a write; the main save indicator confirms completion.

Autosave protects every committed edit in separate browser recovery storage and never changes the original file or cloud project. Normal refresh restores that working copy, still marked unsaved until you explicitly save. In Chrome, hard refresh opens an empty workspace; Recover unsaved draft restores the separate checkpoint if wanted. Refresh does not recalculate original ground. IP geometry edits update only the affected sections and retain unchanged ground at its adjusted chainages. Ctrl+S saves, Ctrl+O opens. Recovery protects the working copy; it does not replace an explicit file or cloud save. Unapplied bridge or estimate drafts must first be applied to join that project recovery copy.

A project by link

Cloud projects have addresses: app.html?project=<id>. A link is an explicit request for a particular project and beats both the recovered draft and the opening question — but never the sign-in gate, because the link says what to open, not who is allowed to open it. A project shared with you rather than owned by you opens read-only, and saving makes a project of your own.

Chapter Three

The workspace

One window, six task groups, four engineering stages and linked plan/profile views. Choose the task first, then the command; the design remains in view.

Follow work in progress

The small activity strip at the bottom left reports the operation currently in progress. A percentage is shown when the operation reports measurable progress; an animated bar means work is continuing without a known total. Figure 16.2 shows the strip during a project export. When more than one operation is active, the indicator keeps the running work visible. Read the named task before repeating a long-running command.

Completion or an error updates the activity state. If the task reports a service failure, follow the displayed recovery action and retain the saved project. A progress indication is not proof that remote map or terrain data has already arrived.

Find commands by task

The header separates task groups from the four engineering stages. Select Data, Alignment, Structures, Stations, Review or Output to reveal that group's commands. Selecting a group changes the toolbar only; it does not alter the design or pass a stage gate. A command that needs a later stage opens its prerequisite checklist before proceeding.

Current alignment workspace with grouped task tabs, contextual command row, side panel, plan and profile
Figure 3.1 — The grouped workspace. Task tabs reveal commands above the plan. The stage rail and side panel still describe the engineering step; plan, profile and curvature views share the same alignment.
Task groupUse it for
DataStart from a survey, import survey or KML/KMZ, inspect corridor features, and look up missing map layers.
AlignmentConsiderations, route design and redesign, plan points, profile design and alternatives.
StructuresCrossings, waterway sizing, hydrology reports, the bridge selector and Workspace, New bridge, and structure settings.
StationsStation schedule, add or suggest stations, justification, the selected station's yard workspace and station settings.
ReviewCompliance, cross-sections, comparisons, 3D & cab rides, Workbench, Project centre and Ask.
OutputProject sheets, deliverable exports, estimate schedule, Detailed estimate, unit rates and estimate CSV.

The arrow beside the groups folds the command row; selecting a group opens it again. On compact screens the tabs can show icons: hover or focus them for their names. Arrow keys, Home and End move between the group tabs. File, undo/redo, Find a command, Display, Help, the save/status button and account remain in the header. Use Display for theme and the second-screen profile; use Help for onboarding and the guide. Ctrl+K finds a command without hunting through the groups.

Read the design around the tools

The three views

The plan, the profile and the curvature-and-cant diagram are three projections of one object and they stay registered with each other. Zooming the chainage in the profile zooms the curvature diagram with it; the plan keeps its own transform because it is the only one of the three in two spatial dimensions.

ViewShowsInteraction
Plan Centre line coloured by element type, radius, cant, cant deficiency or permitted speed. IP legs, tangent points, chainage ticks, curve annotations, land boundary, structures, existing yards, and a basemap or terrain tint underneath. Drag a point to reshape. Wheel to zoom, drag the background to pan. Double-click empty space to insert an IP. Right-click for the point menu; right-drag or Ctrl-click to select a group. Shift+F for full screen.
Profile Rail level, existing ground, cut and fill shading, grades with their 1-in-N equivalents, vertical curves with BVC/EVC and turning points. Drag VIPs to reshape, holding Shift to change the level without the chainage. Double-click empty space to insert a grade break there, a VIP to type its level, or a gradient's label to type the gradient as 1 in n. Right-click, right-drag and Ctrl-click as in the plan, and Regrade to the ground on the menu of a VIP or a selection. Wheel zooms the chainage; Shift+wheel changes the vertical exaggeration.
Curvature
& cant
Curvature 1/R and applied cant on a shared chainage axis, with cant deficiency shaded against the equilibrium cant. Wheel to zoom. Stays registered with the profile.
Reading the third view

Curvature and cant should be the same shape: both ramp up through the entry transition, hold through the arc, and ramp down through the exit. Where the shaded band is widest, the cant is furthest from what the speed wants — which is where the passenger feels it and where the CD_MAX check will fire first.

The empty workspace

The workspace with no project loaded: one straight kilometre, empty tables
Figure 3.2 — Nothing loaded. One straight kilometre, an empty IP table and empty views. The designer used to open on a demonstration alignment, which everybody had to work out was not theirs before deleting it; an empty canvas asks a question instead of answering one nobody asked.

Getting the width back

[, or the button at the end of the tab strip, folds the side panel down to its icons and gives the width to the views; any icon opens it again on that table. Shift+F gives the plan the whole window, using the browser's full-screen mode where it is allowed and filling the window where it is not, so it works inside an embedded frame too. Esc returns.

Chapter Four

The four stages, and the gate between them

One project, one model, one undo stack — and four workspaces over it, because the four questions want different tools and must not be answered in the wrong order.

1 Location where the line goes Plan · Profile · Structures geometry, grade line, cant, earthwork handles are draggable here — and only here 2 Crossings what it has to get past Features · Crossings roads, railways, water, power geometry is LOCKED 3 Stations where the trains stop Stations yards, platforms, throat, signals plateaus are inserted into the grade line 4 Estimate what it costs to build Estimate plan heads, abstract, rates total withheld until 2 and 3 are answered THE GATE — checked before stage 2 opens ✓ An alignment in plan — at least two intersection points ✓ A grade line — at least two vertical intersection points ✓ A ground profile — otherwise there is nothing to compare rail level against ✓ A position on Earth — a georeference, or nothing can be looked up ! No compliance errors — soft: may be waived The first four are hard. Without them stage 2 has nothing to compute from.
Figure 4.1 — The stage model. Every side panel belongs to exactly one stage, and the map is the whole truth: there is no panel shown throughout and none hidden from a stage it would otherwise appear in. Compliance is the exception and is not a panel at all — it left the rail for the floating orb, because a verdict on the whole design belongs on screen in every stage.

Why the geometry locks

Inside stage 2 the plan and profile carry a LOCKED badge and the handles stop dragging. That is not decoration: it is what stops a crossing schedule being invalidated by somebody nudging an intersection point. Every over-or-under decision in the schedule is a comparison of rail level against ground level at a particular place, and moving the line moves all of them. Going back to Location is therefore a deliberate act, and the schedule is recomputed when you return.

The gate

The gate pane listing the four hard prerequisites met and the soft compliance condition outstanding
Figure 4.2 — The gate, shown in place of the stage's panels when a prerequisite is missing. Each line says whether it is met and what would meet it: here the four hard conditions are satisfied and only the soft one — compliance — is outstanding, so Continue anyway is offered.

The gate is about prerequisites, not perfection. Four of the five conditions are hard: without an alignment, a grade line, a ground profile and a position on Earth, the second stage has nothing to compute from. The fifth — compliance — is deliberately soft, because preliminary work proceeds with warnings and often with known errors, and a tool that refuses to continue until every check is green is a tool that gets abandoned. Warnings never block.

Waiving is recorded, not hidden

Continuing with errors does not clear them. The orb still carries the count, the compliance report still lists them, and the exported CSV still contains them with the strictness mode in its footer.

Part Two

The process

  1. The design process, end to end
  2. Designing a route automatically
  3. A line where a line already runs
  4. Drawing and editing by hand
  5. How the geometry works
  6. Compliance, and automatic repair
  7. Crossings, waterways and utilities
  8. Stations and yards
  9. The estimate, and what it costs to own
  10. The workbench: every engine, with a way in
  11. Seeing the design
  12. Deliverables and exports
  13. Working with other people

Thirteen chapters in the order the work happens. Each one says what the step is for, what the software does inside it, what it asks you to decide, and what it refuses to decide for you.

Chapter Five

The design process, end to end

What actually happens between two points on a map and a set of drawings — and which chapter answers each step.

YOU DECIDE THE ENGINE DOES WHAT COMES OUT 1 · Route points A, B and every obligatory point between ch. 6 2 · Standard and speeds design speed, slowest traffic, gauge, limits · ch. 20 3 · Terrain detail 200 / 120 / 60 / 30 m — the grid the design is built on · ch. 6 4 · Considerations structures, crossings, stations, avoidance, inclusion · ch. 6, 8 Accept, or overrule doubling vs. new corridor; which side ch. 7 Fix, or accept the trade-off every finding, or a stated reason ch. 10 Fetch terrain SRTM tiles → grid at the chosen step · dem.js Look for a line already there graph of OSM rail, running lines, curvature · multitrack.js Search the corridor A* over (cell, heading), one search per leg, priced on slope, climb, turning · astar.js, autoroute.js Fit the horizontal geometry thin to IPs (obligatory ones survive), largest radius that fits, cant, transitions · horizontal.js, cant.js Fit the grade line smooth ground, clamp to ruling gradient, simplify to VIPs, shift so cut balances fill · vertical.js Repair until compliant apply, re-solve, look again · checks.js, fixes.js Recommend structures viaduct, tunnel, bridge, bank, cutting · structures.js Stage 2 · crossings and waterways corridor lookup, over/under, hydrology · ch. 11 Stage 3 · stations and yards layout, throat, plateau, signals · ch. 12 Stage 4 · the estimate quantities → plan heads → abstract · ch. 13 A centre line, on the ground with the cost field it was chosen from Setting-out geometry curves, transitions, cant, tangent points, chainage every 20 m · ch. 16 The long section grades, vertical curves, cut and fill, mass haul, land boundary The compliance report every finding, its clause and its remedies Structures and quantities volumes, spans, bores, banks and cuttings Deliverables 5 km plan & profile sheets (DXF) station yard plans (DXF) · LandXML 1.2 multi-sheet workbook (XLSX) · KML every schedule as CSV · project JSON ch. 16 The abstract of cost on IR plan heads, cash and stores re-solve
Figure 5.1 — The process, end to end. The left column is what the engineer states; the middle is what the engine does with it; the right is what falls out. The dashed red loop is the repair pass: apply one fix, re-solve the whole model, look again — stopping when the design is clean, when nothing further can be done, or when two limits are pulling the same value in opposite directions.

The same process, in words

  1. Say where the line has to go. Two ends and any number of obligatory points; the router is free between them and pinned at every one.
  2. Say what kind of railway it is. Standard, design speed, slowest traffic, and the considerations that price the ground — what to avoid, what to serve, what a structure costs.
  3. Say how well you want the ground known. The terrain grid is the single most consequential number in the run, because every bridge opening and every earthwork quantity is read off that surface.
  4. Let it route, fit and repair. Ten seconds to a minute, with a running log.
  5. Read the run report and the compliance report, and decide what to accept.
  6. Look the line up against the world — roads, railways, watercourses, power lines — and settle every crossing.
  7. Place the stations, and let the yards flatten the grade line where they land.
  8. Price it, and read what the total is still missing.
  9. Export the drawings, the schedules and the model.
The order is not a suggestion

Steps 6 to 8 depend on step 4 having produced a grade line and a ground profile, and the gate in Chapter 4 enforces exactly that. Going back is always allowed, but it invalidates what came after — which is why the geometry locks rather than silently letting a schedule rot.

Chapter Six

Designing a route automatically

Two points on a map, the standard and the speed, and the detail you want the ground known to. Everything else is arithmetic — and every piece of that arithmetic reports what it did.

Opening the wizard

Alignment → Design route, Design a route from the opening question, or Ctrl+K and type route.

The Design a route wizard: map with A and B pins on the left, route settings on the right 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  1. 1 Basemap: street map, satellite, topographic or terrain relief. (Blank in this figure — the machine that took it had no access to the tile servers.)
  2. 2 The corridor. A and B are the ends; the dashed line and its label are the direct distance, not the route.
  3. 3 Zoom, and the zoom level the tiles are being drawn at.
  4. 4 Project name — printed on the report cover and used to name the file.
  5. 5 Railway division — the zone and division the line belongs to.
  6. 6 The route points, each with its resolved latitude and longitude. The ◎ button re-centres the map on it; ✕ removes it.
  7. 7 Add an obligatory intermediate point — then click where it must go.
  8. 8 Direct distance, updated as pins move.
  9. 9 Design considerations — seven tabs of what the design is allowed to do (see below).
  10. 10 The standard: IR-BG, IR-MG, EN 13803, AREMA, METRO or HSR.
  11. 11 Design speed. This sets the minimum radius, the cant and the transition lengths.
  12. 12 Slowest traffic — what cant excess is judged against. Capped at line speed, because above it, it is not slow traffic.
  13. 13 Run it.
  14. 14 The map's own instructions: drag a pin to move it, click the corridor to pin a point the route must pass through, right-click a pin to remove it.
Figure 6.1 — Design a route. Below Slowest traffic, scrolled out of this frame, sit the terrain detail buttons and the note that prices them for this corridor.

The route points

A and B are the two ends. C, D, E … are intermediate points the line is obliged to pass through — the junction it has to meet, the gap it has to use, the town it has to serve. The router is free between them and pinned at every one; each leg is searched separately.

Every point can be given three ways:

Way inExampleNotes
Click the map—Drag a pin to move it; right-click to remove it.
Type a coordinate27.175, 78.042
27 10 30 N, 78 02 31 E
Decimal degrees or degrees-minutes-seconds, either order of hemisphere marker.
Search a name or codeAgra Cantt · AGC · NDLS Names are geocoded through Nominatim; station codes are looked up as OpenStreetMap tags directly, because no geocoder indexes them and every railway person has them to hand.
A pin dragged is a pin renamed

A pin dragged away from the station it was found under loses that name, because it is no longer that station.

Terrain detail — the number that matters

Terrain detail names the spacing of the elevation grid the route is designed against: 200 m (Draft), 120 m (Coarse), 60 m (Normal) or 30 m (Fine). Whichever you press is the grid you get. Nothing coarsens it behind you.

It matters because a coarse lattice does not merely smooth a feature — it aliases it. What you get back depends on where the feature happens to fall between nodes. An incised watercourse 15 m deep, swept across one grid cell, reads as:

Depth recovered from the grid, for a 15 m deep watercourse of the given opening
Opening200 m grid120 m grid60 m grid30 m grid
600 m13.2–15.0 m14.1–15.0 m14.8–15.0 m15.0 m
400 m11.3–14.9 m13.0–14.9 m14.6–15.0 m14.9–15.0 m
150 m2.1–14.6 m5.5–14.9 m12.5–14.9 m14.3–14.9 m
80 m0.0–13.7 m0.4–14.9 m7.8–14.7 m12.6–14.7 m

The structures engine reads exactly this surface to decide that a bridge is needed and how big, so on a 200 m grid a small bridge opening is a lottery. Wide valleys were never the problem; the nalas are.

What the setting costs

Under the buttons is what the setting will actually cost for the corridor as laid out — the ground grid, the number of tiles, the peak memory and a rough time — recomputed as the points move. The setting that gives the best detail this corridor carries comfortably is ringed, and the note names it.

Tiles and time by corridor length (bold = the suggestion)
Corridor200 m120 m60 m30 m
60 km8 tiles, <1 s8, 1 s12, 1 s30, 4 s
113 km12, 1 s12, 1 s30, 3 s90, 12 s
400 km28, 2 s28, 3 s104, 12 s350, 45 s
800 km48, 3 s48, 6 s192, 23 s658, 86 s
It suggests, it does not choose

The ring is a suggestion; the button you pressed stays pressed. Choose finer than suggested and the note tells you what it will cost and says it will still run — because it will. Somebody checking a nala crossing over 400 km of corridor, willing to wait a minute and spend 96 MB, is making a legitimate engineering choice. Choose coarser and the note says what a grid that size loses, and then does exactly that.

30 m is the floor worth offering: the source data is SRTM/ASTER-derived at roughly that spacing, and a finer grid would interpolate rather than reveal.

Slope is measured over ground, not over cells

Ground slope is measured over a fixed 100 m of ground — about the length of formation whose cross slope decides whether a cutting or a side-hill bench is being built — rather than across one grid cell. Otherwise choosing a finer DEM would silently re-tune the router's cost surface and give a different route for a reason nobody could see. A 1-in-15 hillside carrying a 3 m ripple every 120 m reads as 1 in 15 at every setting, to within 0.3%.

The design considerations

Seven tabs, reachable from the wizard and from Alignment → Considerations at any time. Changing a limit re-runs every check immediately.

TabWhat it sets
General & SpeedsProject name, division, design speed, slowest traffic, starting chainage.
Design LimitsEvery number in the standard preset — minimum radius, cant and deficiency ceilings, gradient limits, vertical radii, transition criteria. Editable per project; Reset to standard restores the preset.
StructuresThe thresholds that turn cut and fill into a tunnel, a viaduct, a bank or a cutting, and the formation width.
CrossingsHeadroom and clearance figures, deck thicknesses, electrification, and the Dickens coefficient for the hydrology.
StationsWhat a station is expected to have: loops, standing length, platform arrangement, and where they go.
AvoidanceWhat the router pays to keep away from — standing water, built-up land, mines and quarries, forest and protected ground, and the settlement size worth going round.
InclusionGround the route should be drawn towards, multiple-tracking choices including which side of an existing formation, and the takeoff at each end.
The Structures tab of the considerations console
Figure 6.2 — The Structures tab. What counts as a viaduct rather than a bank, a tunnel rather than a cutting, and how wide the formation is — set before the run, because the router's grade line and the structure list are the same decision seen twice.

What the run does, in order

  1. Fetch the terrain. Public SRTM-derived tiles, about 30 m resolution, anywhere in the world, no API key — proxied through /api/dem because the tiles carry no CORS headers, and cached in IndexedDB so a second run on the same corridor fetches nothing.
  2. Check for a line that is already there (Chapter 7).
  3. Search for a corridor. A* over the elevation grid, one search per leg between obligatory points. The state is (cell, heading) rather than just cell, so turning can be priced.
  4. Fit the geometry. Simplify the grid path to an IP polyline, give each IP the largest radius its neighbours leave room for, design cant and transitions, then run the repair engine until it is compliant.
  5. Fit a grade line. Smooth the ground, clamp to the ruling gradient, simplify to VIPs, then shift the finished line bodily so cut balances fill.
  6. Recommend structures. Classify the cut and fill into viaducts, tunnels, bridges at watercourses, embankments and cuttings, and estimate volumes.
the straight ramp between the two end levels the route the search chose — it follows the contour round the hill A B The cost of stepping from one cell to the next blends length · cross slope over 100 m of ground · height gained beyond what the ruling gradient can absorb over that distance · heading change · standing water, built-up land, mines, forest and protected ground · anything painted on the cost surface by hand ground
Figure 6.3 — Inside the corridor search. The dominant term is departure from a straight ramp between the two end elevations. That is what makes the line follow contours around a hill instead of charging over it. Height is summed leg by leg rather than end to end, because a route taken over a ridge and back down is feasible over its total length and not over either half — and it is the halves that have to be built.
The router working through its steps
Figure 6.4 — The router at work. Every step is named as it happens — fetching terrain, checking for a line that is already there, searching each leg, fitting the geometry, fitting the grade line, repairing — with the tile count, the grid size and the memory the run is actually using. A run that will not work says so here rather than at the end.

Reading the result

The designed alignment with the compliance panel open and the result toast at the bottom 1 2 3 4 5 6 7
  1. 1 The run report: 58.15 km, 8 curves, 1 auto-repair, meets IR-BG, neither end ties in. Everything it did, and the one thing it could not.
  2. 2 The intersection points the search produced, each with the radius, both transition lengths and the cant that were designed for it.
  3. 3 The verdict: 0 errors, 12 warnings, 1 note. Warnings do not block.
  4. 4 The STATION TIE-IN note, raised because no existing track data reached the router — so neither end of the line leaves or joins a station properly. It outlives the wizard that raised it.
  5. 5 Two GRADE_COMP warnings: a 1.000% grade through a 1.63° curve, where compensation for curve resistance puts the limit at 0.935%. Each carries Fix, Why? and a mute.
  6. 6 The grade line fitted to the ground, with every vertical curve labelled by length and radius.
  7. 7 Length and outstanding findings, always on screen.
Figure 6.5 — The run report, for the worked example: a 53.6 km direct distance designed as 58.15 km of railway.

When the corridor is not viable

The router reports up front when a corridor cannot be built rather than emitting a profile that floats hundreds of metres off the ground. If the height to be climbed is more than the ruling gradient can deliver over the distance available, it says so and says how much development would be needed.

It will not invent a way up

Where a railway would need spirals, switchbacks or long tunnels to gain height, the tool says so and stops. It does not design those for you.

What survives the thinning

The grid path is thinned into an IP polyline, and thinning is exactly the step that could slide the route past a point you pinned. It does not: where an optional vertex crowds an obligatory one, the optional one goes, and the report names the IPs that were held.

Running it again

The wizard remembers the corridor, so re-running at another design speed or another terrain detail is a matter of changing one control and pressing Design the alignment again — and the terrain cache means the second run fetches nothing. Four runs at four speeds is the input to the speed–cost frontier in Chapter 13. Review → Compare → Compare options puts two of them side by side.

Two route options compared side by side
Figure 6.6 — Compare. Two alignments beside each other on cost, journey time, earthwork and land — which is a comparison of the choice being made, rather than of two files that have drifted apart.
Chapter Seven

A line where a line already runs

Most alignment work is not a new corridor. It is a second line beside a single one, a third beside a double, or a faster pair beside a formation laid out for 75 km/h that cannot be persuaded into 160.

Where a railway already exists between the two points, it is the single most important fact about the corridor: the land beside it is already railway land, the crossings are already built, the gradients are already proven. A router that strikes out across country from A to B has thrown all of that away. So before any geometry is designed, the corridor is checked for a line that is already in it, and the run stops on a step called Checking for a line that is already there:

An existing connection exists: a single line (Nashik Road–Manmad) already runs between these two stations, 32.4 km of it. Doubling — a 2nd line is what a new line beside it would be.

Four questions, answered in order

1 · Is there a line at all? Graph of OSM rail ways, split at every junction, searched station to station. sidings priced at 3× their length 2 · How many running lines? Counted geometrically and from tags, cross-checked; median reported. max reported separately — stations have loops 3 · Will it hold the speed? Curvature measured over a 200 m chord; tested against R needed plus track spacing. right answer whichever side the new line takes 4 · What is built, and where? Parallel where the old geometry complies, new ground where it does not. tie back in at each end of every realignment What comes out on the ground existing formation parallel — the existing centre line offset by one track spacing realignment — the existing curve is too tight for the design speed tie-in tie-in parallel again A parallel stretch is not handed to the router as a polyline. It is read back as an alignment — curvature measured along the offset, samples sorted into straights and curves, a line fitted to each straight, and the intersection of consecutive straights an IP carrying the radius measured between them. Outside a curve that radius is wider by the track spacing; inside it, tighter.
Figure 7.1 — Multiple tracking. Only the realignments cost a search. The parallel stretches are the existing centre line offset by one track spacing, handed to the router finished.

The spacing

The default centre-to-centre spacing of the new running line is 5.30 m. The Indian Railways Schedule of Dimensions puts the obligatory minimum between the centres of adjacent straight running lines at 4.265 m, and new construction is not laid to the obligatory minimum; where traction masts stand between the tracks it goes to 6.0 m, and on curves it is widened again. The governing figure on any particular project is in that project's approved SOD and not in this program — which is why it is a field and not a constant. The takeoff at each end is laid at the same spacing, so the two agree where one hands over to the other.

What it cannot know

Not a capacity study

Whether a corridor needs a third line is a traffic question — trains per day, sectional running time, maintenance blocks, GMT — and none of that is in a map. What this can say is what is there now and what geometry a line beside it would have. It says so out loud in the panel rather than letting the recommendation be read as more than it is.

It also reads OpenStreetMap, which is contributed data: tracks is often absent, sidings are often untagged, and a traced curve carries a few metres of noise. The curvature figures are a screening pass, not a survey.

And it does not choose the side for the right reasons. Both sides are scored against the standing water, built-up land and quarries the router already avoids, because at this stage that is the only thing distinguishing them. What decides it on a real doubling is which side the station buildings are on, which side the land is already acquired, and where the level crossings and traction masts are — none of which is visible here. So the side is a default, offered with both scores, and overridable in Design considerations → Inclusion → Multiple Tracking.

When the track data does not arrive

The takeoff is the only thing tying a new line to what is already built, and it needs the existing track from /api/features. When that lookup does not answer there is no takeoff, and what comes back is a straight line from pin to pin that leaves one station across its yard and meets the next at whatever angle the corridor took. That is wrong in a way the plan does not show, so it is never silent: the router reports both ends as untied, the corridor lookup is asked a second time before it is believed, and the alignment carries a STATION TIE-IN warning in the checks pane that outlives the wizard it was designed in. It is the warning visible in Figure 6.5, and it is there because the machine that took the screenshot had no route to the map servers.

An empty answer and an unanswered lookup are told apart, because they are different claims. No railway mapped near either end is a fact about the ground. A lookup that never answered has not made a claim at all, and the route should be designed again once it does.

What is kept with the project

Whether the alignment is a doubling, a third line or a new corridor; which side of the existing formation it runs on and at what spacing; how much of it is parallel and how much is new geometry; the tightest existing curve and what speed it holds; and every stretch, with the reason it left the formation. It is written into the saved file because it is evidence rather than derivation — the OpenStreetMap extract it was read from is not saved and will have moved on by the time the project is reopened, and a line that cannot say why it is where it is would be indistinguishable from a greenfield alignment that happens to run parallel.

Chapter Eight

Drawing and editing by hand

Every number the router produced is yours to change, and an alignment can be built from nothing the same way. The model is the same either way.

The horizontal alignment

An alignment in plan is an IP polyline: a start, a chain of intersection points, and an end. Each intersection point carries a radius and two transition lengths, and the solver turns that into a continuous chain of straights, clothoid transitions and circular arcs. Drag any point in the plan and the whole chain re-solves as you move.

The horizontal curve schedule, opened under the intersection point table
Figure 8.1 — The curve schedule, one card per intersection point, with everything the curve is made of and everything derived from it. It is a disclosure under the table it is computed from rather than a tab elsewhere — a schedule belongs with the thing it schedules — and the summary line carries the count, so you can tell whether there is anything behind it without opening it. Where a value is being set automatically from the radius and the design speed it is marked A; type over it to fix it by hand, clear the box to hand it back.
FieldMeaning and behaviour
Easting, NorthingThe intersection point in the project grid, in metres. Editable, or drag the point in the plan.
RadiusThe circular arc's radius. Left automatic, the design pass gives each IP the largest radius its neighbours leave room for.
Ls in, Ls outEntry and exit transition lengths. They may differ — asymmetric transitions fall out of the same closed form, so there is no special case.
CantApplied cant in millimetres. Automatic cant balances the imbalance between fast and slow traffic, then pulls the result inside every ceiling in turn and reports which one governed.

+ IP inserts after the selected row; Delete removes the selected point; double-clicking empty space in the plan inserts an intersection point there. Tab and Shift+Tab walk the points, and ↑/↓ in a numeric cell steps the value — ten steps with Shift.

Right-click the plan or the profile for a menu of what can be done where you clicked: add a point there, or select, move or delete the one under the pointer. To work on several at once, Ctrl-click (⌘ on a Mac) puts a point into the selection or takes it out, and a right-drag draws a box that selects every point inside it — with Ctrl held, adding to what is already selected. A group then behaves as one: drag any point of it and the rest follow, keeping their shape; Move on the menu picks the points up so they follow the pointer until a click puts them down, and Esc puts them back; Delete removes the lot in one step that one Ctrl+Z undoes, keeping the two end points, which are where the line starts and stops. In the profile a group stops a metre short of the first VIP outside it, and Shift holds every chainage in it. While the geometry is locked the menu still opens, and says why nothing in it can move a point.

The profile's menu adds two things of its own. Edit level on a VIP — or a double-click on it — opens a small form at the pointer with the VIP's level and the gradients in and out, each typed as 1 in n, as a percentage with %, or as level; whichever is typed, only that VIP moves. Edit grade on empty profile — or a double-click on a gradient's label — opens that gradient and the level at either end, and Keep says which end stays where it is when the gradient is typed. The profile follows as you type; Enter keeps the change as one edit and Esc puts it back, and a gradient steeper than its leg may carry is named in the form before it is kept. The Grade out column of the VIP table takes a gradient typed the same way and moves the next VIP to it.

Regrade to the ground, on the menu of a VIP or of a selection, chooses those VIPs' levels as close to the ground as the ruling gradient lets them be, keeping every chainage. Every gradient it changes is held to its leg's own limit: the ruling gradient of its gradient section, less the compensation of any curve on it, and 1 in 1200 through a station yard. The VIPs either side stay where they are unless a gradient to them would otherwise break that limit; then they move by no more than they have to, and the change stops where it runs out. The ends of the profile, a VIP in a station yard and a VIP whose level is locked are never moved unless they were selected too. A curve the steeper change of grade has outgrown is lengthened with it, and the whole regrade is one edit that one Ctrl+Z undoes.

The vertical alignment

The Profile panel and long section with the grade line over the ground
Figure 8.2 — The profile. VIPs at a chainage and a rail level, joined by constant grades with equal-tangent parabolic curves. Give either a curve length or a radius and the other is derived. Summits and low points are located exactly, and both are always in the setting-out table whatever interval you export at.

Drag a VIP in the profile to reshape the grade line, holding Shift to change the level without the chainage. Shift+wheel changes the vertical exaggeration, which is stated on the drawing so that a 25× picture is never mistaken for the shape of the railway.

Double-click empty space in the profile to add a grade break, the way double-clicking empty plan space adds an intersection point. It goes in at the chainage and level you clicked, in the leg it landed in; click within a few pixels of the grade line and it takes the rail's own level, so the break is a place to bend the profile from rather than a step in it. The vertical curve it arrives with is sized to the room between its neighbours — a break dropped into a short leg carries a short curve instead of a 400 m one that would overlap the curves either side of it before you had touched anything. + VIP does the same in the middle of the selected leg, and Delete removes the selected break. This is how a line is developed in hill country: the grade line is bent to reach down to the ground where the ground can be met, rather than held straight over it and carried on structure.

How far one gradient may run

Max length of one gradient, on Considerations → Design Limits, caps how far the profile may go without a break in it. It ships at 5 000 m on every standard. Its opposite number, the minimum length, is there to stop a train surging between grade changes that come too fast; this one is there for the other failure, and it is the one that costs money in hill country.

A grade line is simplified by deviation, and deviation alone does not care how far it travels: on ground that stays near enough to straight it will return one gradient seventeen kilometres long. Two things are wrong with that. A locomotive on an unbroken pull is working at its continuous rating for the whole of it. And nearly straight is not straight — the metres the simplification called negligible are metres the finished line stands off the ground, and past the crossover depths what holds it off the ground is viaduct and tunnel. Breaking the gradient lets the profile come back down to ground it can actually reach.

Designing a route applies the limit: the router divides an over-long gradient into as few pieces as the cap needs, evenly spaced, and snaps each break to where the chosen grade line bends hardest within its division — so the break develops the line rather than just subdividing it. On the plateau sample this takes the longest sustained pull from 19.3 km to 6.3 km for three extra vertical points. On an alignment you are editing by hand, add the break yourself by double-clicking the profile where you want it.

What is counted, and what is not

Only a gradient pulling a real share of the ruling gradient — a quarter of it, which is 0.25% on IR broad gauge. Ten kilometres at 0.03% across a plain is flat country, not a long climb: no locomotive is working on it and the grade line is already on the ground. Reporting those would be noise, and noise in a compliance list is how the findings that matter get scrolled past. The threshold follows the standard, so it needs no separate setting.

A gradient over the limit is reported as GRADE_LONG and is never repaired automatically. Breaking it without moving the line is a labelled point in the middle of the same gradient and repairs nothing; breaking it usefully means putting the break where the ground asks for one, which moves levels you set. That is a decision, so the finding sets out the choice instead of taking it.

The ground profile

A route designed from the map arrives with its ground profile already sampled from the terrain grid. An alignment drawn by hand needs one: paste or load chainage, level rows in the Profile tab. That gives cut and fill shading, a cut/fill column in the setting-out table, and the terrain rules in the compliance engine something to measure against. Without it the terrain rules stay quiet rather than guessing.

The Structures panel with the thresholds and the resulting structure list
Figure 8.3 — Structures. What the cut and fill turn into: viaducts, tunnels, bridges, banks and cuttings, with their chainages and volumes. The three thresholds that decide it — the height above which a bank becomes a viaduct, the depth at which a cutting becomes a tunnel, and the formation width — are set once, on Considerations → Structures, and this panel says so rather than offering a second set of boxes that would disagree with them.

Putting the drawing on the Earth

Basemap tiles, corridor lookups and every export that carries a coordinate need the project to say where on the earth its plane sits. A route from Design a route already knows. For an alignment drawn by hand, pick a point in the Plan tab — the grid origin, or any intersection point — and give its latitude and longitude, in decimal degrees or as 27 10 30 N, 78 02 31 E. The georeference is saved with the project.

What the georeference assumes

The plane is then treated as a project grid: a transverse Mercator on that longitude, north up, unit scale. The panel reports how far grid distance drifts from ground distance at the point you tied down, in parts per million, so the assumption is on the screen rather than buried. It holds under 50 ppm over 66 km, checked against Vincenty rather than haversine.

Drawing on the plan

Beyond the computed alignment, the plan takes manual drafting for constraints and context. Shapes live on layers with specific meaning rather than being lines on a screen, and they are drawn in map space, so they move with the terrain and not with the viewport.

LayerWhat it is for
notes, sketch, measureVisual markup: annotation, freehand thinking, and dimensions.
traceReference lines you want the alignment to follow.
trackwork, existingPermanent way already on the ground — visual constraints when weaving a new alignment through it.
avoidGround the router must pay to cross. Weighted by default — a cost per metre a pinched corridor may still choose to pay, and which is reported when it does. Marked regulated it is priced the same way but recorded as needing a named authority's consent. Marked prohibited it is not priced at all: those cells are removed from the search, so no weight anywhere buys a way through.
includeA discount: it makes the ground cheaper so the route is drawn towards it. It cannot on its own oblige the line to go there — tick the line must pass through this and it becomes an obligatory point instead, with the corridor searched in legs through it. Either way, an inclusion area the alignment misses is reported rather than passed over in silence.

Each avoidance area can carry a setback in metres and an outer regulated belt, because the statute that constrains an alignment is written that way: the AMASR Act bars construction within 100 m of a protected monument and regulates the next 200 m. Presets for the usual instruments — AMASR, wildlife, forest, CRZ, defence — fill in the distance, the authority and the class.

The Inclusion tab of the considerations console
Figure 8.4 — The Inclusion tab, where ground the line should be drawn towards is set, along with the multiple-tracking choices of Chapter 7 and the takeoff at each end.
A painted cost surface

Every other layer the router prices from is a yes-or-no fact off a map. Real ground is not: a swamp is not forbidden, it is annoying, and how annoying is a judgement only the person who walked it can make. Strokes with a radius, a strength and a sign are rasterised into the search field beside every other layer, with a smooth falloff — a hard edge produces the artefact the polygon layer already has, a route that runs one cell outside the boundary paying nothing.

Re-designing after a change

Redesign runs the whole automatic pass again over the current considerations — radii, cant, transitions, grade line, the outstanding checks, and the station yards that sit on the geometry — as a single undo step, and then says what it did rather than reporting a number. If nothing would change it says so instead of pretending to work.

The checks at the end of it are the same pass Fix all runs, with the same corridor behind them where one has been looked up. The pass can adjust the actual railway alignment towards a more perpendicular crossing and seek the rail level that clears the road. New bridge proposals have square supports; the measured obstacle angle remains separate. A crossing whose full opening or approach arrangement has not been established stays unresolved.

It respects the areas you have drawn. Easing a radius moves the arc away from its intersection point, so a curve widened for a higher speed cuts the corner more deeply than the one it replaces and can land on ground the old one cleared. Where that ground is marked prohibited, the widening stops at the last radius that stays clear: the router bars its search from those cells rather than pricing them, and a rebuild that walked in afterwards would be reversing that decision on the drawing. The same bound applies to every repair in the pass behind it, including the one that would read the held curve as sub-minimum and ease it straight back in.

A held curve is a real conflict, not a solved problem, and it is reported as one: the redesign names the curve, the radius it stands at and the area that held it, and the compliance list goes on reporting the radius as below the minimum for the speed. Something has to give — the route, the design speed, or the outline — and which of the three is not the tool's decision.

A weighted or regulated area is a price or a consent rather than a barrier, so a curve may be eased across one exactly as the router may route across one. What you get there is the sentence, not the refusal: the redesign says how many metres of line it has put inside which area, at the top of the report, rather than leaving a fresh finding on the Checks tab for you to discover later and attribute to nothing. The same note appears where the redesign has taken the line back out of an include area it was drawn to pick up.

An include area you have ticked as one the line must pass through is treated like a prohibited one, the other way round: a curve is not widened so far that the line leaves it, and no repair after the rebuild may take the line out of it. The report names the curve and the area, and the curve is reported as below the minimum radius until the route, the speed or the outline changes.

Chapter Nine

How the geometry works

The arithmetic the tool is doing on your behalf, stated plainly enough to check by hand — because a number you cannot check is a number you cannot sign.

Why a curve has a curve at each end

Curvature and cant have to rise together, or the resultant force swings out of the plane of the track while the train is still on the transition. The clothoid — the Euler spiral — is the curve whose curvature increases linearly with distance travelled:

1/r(l) = l / A²,        A² = R · Ls
θ(l)   = l² / (2A²)
x(l)   = ∫ cos θ ds,    y(l) = ∫ sin θ ds

so a linear cant ramp along a clothoid keeps the two in step throughout. The integrals are evaluated by series expansion in θ, which for railway spirals (θ well under 0.25 rad) is exact to about one part in 10¹², with Simpson quadrature as a fallback for pathological cases — and as the independent reference the test suite checks the series against.

O — arc centre (foreshortened) R IP T₁J₁ J₂T₂ Δ T₁ T₂ shift p increasing chainage straight clothoid, length Ls_in circular arc, radius R clothoid, length Ls_out straight T₁ = k₁ + [ (R+p₂) − (R+p₁)·cos Δ ] / sin Δ T₂ = k₂ + [ (R+p₁) − (R+p₂)·cos Δ ] / sin Δ p — the shift: how far the arc is pushed off the tangent to make room for the spiral k — spiral origin to the foot of the perpendicular from the arc centre Both are derived per spiral, so the two ends may differ. Equal spirals reduce this to the familiar T = k + (R + p)·tan(Δ/2). Asymmetric transitions fall out of the same expression, which is why the tool supports them without a special case — and why Ls in and Ls out are two fields, not one.
Figure 9.1 — Anatomy of a curve. The four points the DXF marks as T1 · J1 · J2 · T2 and the setting-out table always includes, whatever interval you export at.

Cant, deficiency and excess

Cant follows the standard relation, parameterised by the dynamic gauge G so that one equation covers every track gauge:

C = G · V² / (127 · R)      [mm]     V km/h, R m, G mm

G = 1750 mm  →  the Indian Railways form   C = 13.76 V² / R
G = 1500 mm  →  the standard-gauge form    C = 11.81 V² / R
The track, canted dynamic gauge G C horizontal The outer rail is raised by C. At the equilibrium speed the resultant of gravity and centrifugal force is normal to the plane of the rails, and nothing is felt sideways. One curve, two traffics mm equilibrium at the design speed applied cant C what is built equilibrium for the slowest traffic cant deficiency what the fast train is short of cant excess what the goods train rides on its inner rail Automatic cant balances the two, then pulls the result inside every ceiling in turn — and names the one that governed.
Figure 9.2 — Cant, deficiency and excess. A single curve serves two speeds, and the cant that suits one is wrong for the other. This is why slowest traffic is a field: cant chosen for 160 km/h is cant a goods train rides on its inner rail.

How long the transition has to be

Transition length follows from the cant by the three usual criteria, and the longest wins:

CriterionWhat it limitsCode when it fails
Rate of change of cantHow fast the vehicle is twisted, in mm/s at the design speed.DCANT_DT
Rate of change of cant deficiencyHow fast the unbalanced lateral acceleration builds, in mm/s.DCD_DT
Cant ramp gradientThe slope of the ramp itself, as 1 in N — a twist limit on the track structure.CANT_GRAD
A curve with no transition still has one

A curve entered with no transition steps the curvature. The vehicle bridges that step over its bogie centres, so the deficiency builds over the virtual transition rather than over a designed length. The VIRT_TRANS check measures it, and it runs even when the curve carries no cant at all.

The vertical alignment

VIPBVCEVC summit — located exactly, and always in the setting-out table e mid-ordinate L curve length — or give the radius Rv and this follows g₁ = +1.000% (1 in 100) g₂ = −0.517% Equal-tangent parabolic vertical curve. Give either a curve length or a radius; the other is derived. Rv = L / |g₁ − g₂| with the grades as ratios — and the vertical acceleration V²/Rv is checked directly, not only Rv.
Figure 9.3 — Anatomy of a vertical curve. Circular vertical curves are not offered: over the flat grades railways use, the two are indistinguishable at construction tolerance.
Why AV_MAX exists as well as RV_MIN

A standard whose minimum vertical radius was written for a slower line will pass RV_MIN and still shake the train. AV_MAX states the quantity the radius limit was derived from — the vertical acceleration V²/Rv at the design speed — directly.

Reading the two together

The plan with the centre line coloured by permitted speed
Figure 9.4 — Colour by permitted speed. The plan will colour the centre line by element type, radius, cant, cant deficiency or the speed the geometry actually permits. The last is the one to look at before an argument about journey time: it is the running profile's view of the alignment, not the design speed written on the cover.

What is not modelled

Chapter Ten

Compliance, and automatic repair

Every curve, transition, straight, gradient and vertical curve is tested against the active standard — and where a ground profile exists, so are the works the profile implies. Each finding says what was measured, what the limit was, why the limit exists, the clause it answers to, and the ways out.

The panel

The compliance panel on the deliberately non-compliant demonstration project: 22 errors, 5 warnings 1 2 3 4 5 6 7 8
  1. 1 The verdict, in three numbers. Errors break the standard's exceptional limit; warnings sit between the normal and exceptional limits, or flag desirable practice; notes are neither.
  2. 2 Filter by code, chainage or a word from the message; the strictness selector; and group, which sorts forty findings into the profile is the problem rather than a wall of text. A report of more than three hundred findings — which a long line with no ground profile easily reaches — draws the worst three hundred and says so; the filter box is how the rest are reached.
  3. 3 Fix all — apply every repair that can be applied, in one pass. It runs in slices so the page stays usable, reports progress on a card at the bottom left with a Stop on it, and comes back after forty-five seconds whether it has finished or not; whatever it repaired stands as one undo, and pressing it again carries on. It will not run while a variant is in use, because the findings are then indexed against the line on screen and the points belong to the base alignment.
  4. 4 A finding. Title, plain-English measurement, and — in the monospace line — the code, the chainage, and the measured value against the limit.
  5. 5 Per-finding actions: Fix applies the repair, Why? opens the rule behind it, and ⊘ mutes that rule for this project.
  6. 6 A second finding on the same curve, from a different rule. Repairs interact, which is why Fix all re-solves between them.
  7. 7 The curve annotation the plan draws for every curve: radius, transition length, cant, deflection angle and hand.
  8. 8 The stage gate, which this project fails on two hard conditions — it has no ground profile and no position on Earth, so the terrain rules stay quiet and stage 2 is out of reach.
Figure 10.1 — A design that does not comply. The sample non-compliant-demo.json exists to be looked at: 22 errors and 5 warnings on 2.5 km of line. Do not build it.

Fix all revisits a blocked repair when another change makes it possible, then tries coordinated curve, profile and station adjustments. It preserves the project's design requirements, fixed points and movement bounds, and keeps the best checked result. Remaining findings stay visible.

For an unresolved crossing, use Make it fit in the crossings panel. It searches local adjustments and coordinated profiles, including approach ramps and station yards. A result is applied only when the selected crossing fits without worsening a hard compliance failure or breaking a crossing that already fits. The chosen structure is preserved. Progress and Stop appear during the search; stopping or failing to find a verified fit leaves the design unchanged. A successful fit is one undo.

What a finding contains

Take the first horizontal error in Figure 10.1, as it reads on screen:

Radius below the minimum for the design speed. IP1: radius 600.000 m is below the absolute minimum 696.229 m for 120 km/h. Maximum speed here is 110 km/h.
R_MIN · 0+816.1 · 600.00 vs 696.23 m

and the one below it, which is the more instructive of the two:

Radius cannot serve both speeds. IP1: radius 600.000 m cannot serve both 120 and 50 km/h. The fast train needs at least 231 mm of cant and the slow one tolerates at most 132 mm — no value at the 5 mm setting-out step satisfies both. Ease the radius to 964.567 m …
PartWhat it is for
TitleThe rule, in the words an engineer would use.
The measurementWhat was found, where, and what the limit was — with the units.
The consequenceWhat follows if it stands: a permanent speed restriction, a rough ride, a structure built to a twisting surface.
The codeStable across a re-solve, and the same string that appears in the exported CSV. See Chapter 19.
Why?The clause it answers to, the reason the limit exists, and every way out — on every finding, not only the ones something can repair.
A finding with Why? opened, showing the clause, the rationale and the remedies
Figure 10.2 — A finding, explained. Why? is the difference between a checker and a colleague: it says which clause the limit comes from, what the limit is protecting, and what may be done about it.

Repair

Findingsgrouped, filtered, ranked Apply one repairthe safest available Re-solve the modelwhole chain, not one curve Check againrepairs interact until it is clean, until nothing further can be done, or until two limits are pulling the same value in opposite directions Clean or an honestrefusal Fix all — one pass, and it says what it did
Figure 10.3 — The repair loop.

Each repair explains itself in the language of the decision it took:

Eased IP1 from 600 m to 975 m — below that no single cant can serve both 120 and 50 km/h.

Where only a change of route or design speed would resolve something, the engine declines and explains the trade-off instead. Those are design decisions, not the tool's to make:

IP1 and IP2 are 608 m apart, but at 120 km/h the minimum radius is 965 m and two such curves need about 960 m between them. Your options: move the two points at least 352 m further apart; drop the design speed to about 95 km/h; remove one of the two intersection points.
An honest refusal is a result

A repair engine that guessed here would produce a compliant drawing of a railway nobody intended. Advisory findings are marked as such and carry the arithmetic you need to choose between the options.

Severity is yours to set

ControlEffect
normal / strictStrict reports every warning as an error. Use it before a submission; use normal while the line is still moving.
Per-rule overrideAny individual rule can be turned off, or re-graded to a note, a warning or an error, for this project — cant excess on a passenger-only line, say.
Mute (⊘)The same thing from the finding itself.
A silenced check is louder than a failing one

Overrides are stored in the project file and listed above the report, because a check that has quietly stopped running is worse than one that fails. The exported CSV carries them in its footer for the same reason.

One broken rule does not blank the report

Each group of checks runs inside its own guard. A rule that throws on a degenerate geometry reports itself as RULE_ERROR, naming the group that failed, and the rest of the report stands. The test suite verifies this by making a rule throw on purpose.

What is checked, and when

Twelve categories, with reference codes in Chapter 19. The terrain rules only run when a ground profile has been loaded or generated; without one there is nothing to measure against and the engine stays quiet rather than guessing. The crossing and station rules likewise wait for stage 2 and stage 3 to have produced something to check.

The compliance panel on the designed worked example: no errors, twelve warnings
Figure 10.4 — The same panel on a design that passes. No errors, twelve warnings and one note, on 58 km of line — of which two are gradients not compensated for curve resistance, and the note is the untied station ends of Chapter 7.
Chapter Eleven

Crossings, waterways and utilities

Stage 2. Every place the alignment meets a road, a railway, a watercourse or a power line — with the chainage, the angle, the height difference, and what it takes to get past.

Looking the corridor up

Roads, railways, watercourses, land use, power lines and pipelines come from OpenStreetMap by way of Overpass, through /api/features. It is a server route rather than a fetch from the page for two reasons: Overpass is slow, rate-limited and periodically down, so extracts are cached in Postgres keyed by a normalised bounding box; and the cache is written with a key that must never reach a browser.

The crossing schedule panel with the geometry locked and the corridor not yet looked up
Figure 11.1 — The crossing schedule. Note the LOCKED badges on the plan and the profile: inside stage 2 the geometry cannot be dragged. Size waterways and ≈ Hydrology run the catchment work; Dickens C is the coefficient the discharge is computed with, with the usual ranges beside it — 11–14 plains, 14–19 central, 22+ ghats. The panel says the corridor has not been looked up yet, which is what it says rather than showing an empty schedule that would read as no crossings.
The corridor features panel
Figure 11.2 — The corridor features panel, which lists every layer the lookup asked for and what came back from it. A layer that did not load is named as such — never shown as an empty result.

The over-or-under decision

The decision is one comparison. With d as rail level minus ground level at the intersection, a road passes under when d ≥ headroom + deck, and over when −d ≥ clearance + deck. Between those, both ways out are quoted rather than the tool refusing to answer.

d = rail level − ground level, at the crossing measured on the alignment, re-measured whenever the grade line moves d ≥ headroom + deck the road passes under the railway RUB · LHS neither fits both ways out are quoted, with the shortfall CONFLICT — no level crossing on a new line −d ≥ clearance + deck the road passes over the railway ROB The figures that decide it 5.5 m headroom for a highway · 4.5 m for a village road · 2.5 m for a subway 6.25 m above rail level for a road over an electrified line at 25 kV, less where it is not electrified plus the deck: a structure has a thickness, and it is the clear dimension that has to be found An oblique obstacle needs a longer square opening; include its position at both deck edges, not only at the centreline.
Figure 11.3 — The over-or-under decision. All of these figures are project settings on the Crossings tab of the considerations console.
TypeWhat it is
RUB / LHSRoad under bridge, or a limited-height subway.
ROBRoad over bridge.
ROR / RURRail over or under an existing railway.
BRIDGE / AQUEDUCTOver the water, or the canal carried over the line.
CONFLICTNeither fits — and a level crossing is not permitted on a new line.
PARALLELMet at under 20°, so not a crossing but a conflict of alignment.

Any of them can be set by hand. The override is respected and the engine keeps its own opinion beside it — but whether the chosen type actually fits is still measured, and a forced type that does not fit is a compliance error. A vertical shortfall may be addressed by changing the grade line; a missing square opening, approach or hydraulic arrangement needs its own resolution.

What is a crossing and what is not

The schedule holds roads, railways, watercourses and power lines — what the line has to be carried over, under or across. Farmland, forest and a town boundary are not crossings: they are ground the corridor is taken from, priced by the acquisition schedule and by the router, with no near and far side to bridge between. Any layer left out this way is named in the result rather than dropped quietly.

Waterways

Fill the pitsdepressions filled beforeanything is accumulated D8 flow accumulationcatchment area, in km²,from the terrain grid Dickenspeak discharge Q fromthe catchment and C Laceyregime waterway, then aneconomic span arrangement Bridge Manual classculvert · minor · major ·important From the terrain to a bridge class A figure that cannot be believed is refused rather than shown: where the catchment runs off the edge of the terrain that was fetched, or the map says river and the arithmetic says culvert, the class is withheld and the reason given instead.
Figure 11.4 — Sizing a waterway. Two things this gets right that a naive implementation does not: depressions are filled before accumulating — a 30 m sample of a plain is full of metre-deep pits that are pure noise, and each one swallows the flow reaching it — and an unbelievable answer is refused.
Large rivers

Take a large river's catchment from a published figure. Nothing computed from a corridor strip will be right: a strip of terrain cannot hold the basin of a large river.

Design a bridge in its own workspace

Open Structures, choose a saved bridge or an eligible crossing in the bridge selector, then choose Workspace. Structures → New bridge starts a manual bridge. A crossing card's Design bridge… and a proposed viaduct's Design viaduct… open the same editor. The main bridge command uses the Crossings stage prerequisites; satisfy the alignment, grade, ground and georeference requirements first.

  1. Open Bridge settings. Check the centre chainage, carried axis, structure type, carried level, ground/bed level, actual crossing obliquity and recorded hydraulic evidence before adjusting members.
  2. In Design, select a span or support in the component tree. Set the span family and length, pier/abutment dimensions, caps, bearings and foundation arrangement. Spans can differ; at least one span remains. Each span boundary has a support.
  3. Inspect the linked plan, longitudinal elevation and transverse section. Click an individual member or use its detail list to inspect parts hidden behind others. Yellow handles change span lengths; purple pier handles redistribute spans while retaining total length. Select a support or enter a section offset to inspect the cut there.
  4. Add protection and approach components, then inspect them in Simulation and the A1 drawing preview. Work through Review findings and record the drawing references actually checked for this project.
  5. Choose Apply bridge to update the working project, or Save project to apply and save it to its normal destination. Check the main save indicator for completion.
Bridge workspace with linked plan, elevation and section and the selected wing wall dimensions
Figure 11.5 — Editing a bridge. An illustrative bridge draft, with a wing wall selected in the component tree and its root, tip and footing dimensions on the right. The three drawings describe the same components. This demonstration is not an approved site design.

The five tool groups are Design, Drawings, Simulation, Review and Export. Switching groups keeps the draft. The alignment overview locates the structure on the corridor; schematic mode works without imagery, while street or satellite backgrounds need a project georeference and reachable tile service. Undo and redo inside the editor affect its draft. Applying the bridge creates one undo step in the main project. Closing a changed draft offers apply, discard or continued editing.

Choose the steel family and floor arrangement

Select a span and set Superstructure. The steel families have different members and load paths; changing the family installs its preliminary dimensions and resets that span's individual member overrides. Review the resulting dimensions and quantities.

FamilyWhat the model shows
Composite plate girderSteel I-shaped girders below an RCC deck, with flanges, webs, stiffeners, cross framing and indicative shear connectors. The steel and concrete must be designed to act together.
Open-web through girderTwo side trusses with chords, end posts, verticals, diagonals, floor beams and stringers, plus portal, sway and lateral bracing. The railway runs between the trusses.
Through plate girderTwo solid-web girders beside the track, connected by a floor system. No side truss or overhead truss portal is added.

For a through family, Track floor arrangement offers Open deck · sleepers on stringers or Ballasted RCC deck · requires adopted floor design. An open deck has no generated concrete deck slab or ballast bed. A ballasted floor adds geometry and quantities; it does not check the extra dead load or make the main trusses composite. Composite plate girders retain their RCC deck.

Set Outer girder centre spacing from the adopted arrangement. For a railway carried between side girders, also set Required track clearance width and Required track / OHE clearance above rail. The section and A1 GAD show the rectangular envelope, and Review reports obstructing members. The initial 4.8 m × 7.0 m envelope is an editable planning assumption. Verify it against the project's Schedule of Dimensions, OHE, cant, vehicle movement and curve requirements; it is not an approved swept vehicle envelope.

The family defaults and depicted connector pattern are conceptual. They do not reproduce an authenticated RDSO standard drawing or a complete fabrication schedule. In particular, composite construction stages, shear connectors, member capacity, fatigue and rail–structure interaction still require the applicable design calculations. A road bowstring arrangement has no dedicated component family and remains unresolved in this editor; a through-plate placeholder does not establish that bowstring's geometry.

Keep square supports separate from the obstacle angle

New automatic arrangements use square support lines. In Bridge settings, Structural support skew (degrees) is separate from Crossing obliquity from square (degrees). The latter describes the actual river, road or railway. Keep this evidence: making supports square does not straighten the obstacle or remove its extra opening length.

A square span must cover the obstacle at both deck edges. For a straight corridor of normal width W, carried width D and acute intersection angle a, its longitudinal envelope is W/sin(a) + D·|cot(a)|, before support setbacks and other allowances. A mapped width already measured along the railway is not divided by sin(a) again. For example, a 30 m corridor crossed at 60° occupies about 34.64 m at the centreline and 39.17 m across a 7.85 m-wide deck.

Proposals extend a square span where an available arrangement can cover that envelope. The crossing stays unresolved when the span is insufficient, the crossing is nearly parallel, or the surveyed layout is missing. Oblique culverts need inlet/outlet and barrel arrangements; oblique multi-pier waterways need flow-aligned piers and independent obstruction, afflux and scour checks. Overline water structures and rail-under-rail arrangements need their own surveyed square layout and approaches. Change the actual alignment or crossing location, or develop the missing arrangement; a change to an angle field is not a site solution.

Older saved bridges retain their structural skew. Use square support lines changes those supports while retaining crossing obliquity. Inspect support positions, the complete opening, foundations and hydraulic evidence before applying. Square bearing lines alone do not establish a suitable river-pier orientation.

Levels, foundations and box cells

Foundation choices include open footings, pile groups and caps, and wells. For piles, the pile-cap base RL and pile length define the toe. For wells, the foundation base RL is the top of the sinking section and its depth defines the bottom. An individual member's Z override is an absolute centre RL; it is different from an ancillary wall's datum-relative base. Reset this detail restores the generated member. Check connections after overriding a member's length or position.

For a box, Barrel length (m) is the transverse passage or flow length. It is separate from the cell wall centre spacing, clear height and wall thickness. Bridge settings can set it across all cells; a selected cell can differ. Clear openings exclude the cell walls, so increasing wall thickness changes the effective waterway. Check the actual bank section against the illustrative earth cover shown over a buried box.

Wing walls, return walls and their footings

Add a wing or return wall from the ancillary components. Choose its abutment or box-mouth anchor, end and side, then its ground/bed/carried-level datum, offsets, plan angle and material. A wing wall splays away from the opening; a return wall follows the retained approach. Anchored walls follow span and barrel resizing. An explicit abutment wall replaces the generated wing at that corner rather than adding a second wall over it.

  1. Set Stem thickness, Root stem height and Tip stem height. The wall top joins the root and tip; inspect the elevation to confirm the intended taper.
  2. Set Wall footing width and Wall footing depth. The separate footing lies below the stem; inspect a root section to check the projection and levels.
  3. Duplicate to the opposite side or end as needed, then check each anchor and plan angle. Review joins to the abutment, approach slope, pitching, apron and drainage.

The editor also includes approach slabs, walkways, parapets, drains, pitching, aprons and filters. Their dimensions describe preliminary geometry; a drain envelope does not establish hydraulic capacity, and a wall with a footing has not passed sliding, overturning, bearing or reinforcement checks.

Review after a route, hydraulic or member-model change

A saved bridge remains when the route or hydrology is recalculated. Changed source chainage, ground/rail levels, crossing angle or hydraulic evidence produce a review notice. Refresh location and crossing evidence adopts the current crossing location, obliquity and requirements while keeping component dimensions and structural support skew; review the carried RL and foundations afterwards. A bridge whose original crossing disappeared remains saved with a finding. It is not silently deleted or redesigned.

Older bridge documents show a separate notice for the corrected member model. Their explicit dimensions remain; through-family spans without a saved floor choice retain the previous ballasted-floor intention. Review the members, obsolete member overrides, floor choice, clearances and changed quantities. Apply bridge accepts the current geometry model for that design. Existing detailed-estimate items remain separate snapshots: review and update or re-import their quantities deliberately, checking for duplicate items.

The review checks geometry, support arrangement, opening, track clearance, recorded flood clearance and foundation depth. In RDSO drawing and design review, record the engineer's adopted drawing number, revision and source URL after checking the original document. Complete Adopted railway loading, Adopted track arrangement and Construction / erection method from that design basis. Legacy recommendation labels are unverified review aids. Entering an adopted reference does not certify RDSO compliance.

In Simulation, use cutaway/transparency to inspect buried members, component opacity and exploded separation to inspect overlaps, and the recorded HFL water plane to inspect levels. Assembly progression reveals geometry in generation order; it is not a construction programme. The moving train is a visualisation, not a moving-load or capacity calculation.

Preview and export an A1 general arrangement

Open the workspace's A1 GAD preview or Export group. Check the plan, longitudinal elevation, typical span section, support/foundation section, span dimensions, chainages, RL references, schedules, notes and title block before downloading. Wing and return walls have W1–Wn schedule identifiers and dedicated root/profile details where required. Sections cut the actual resolved members; concealed edges are dashed and centrelines use long-short lines.

A1 general arrangement preview with plan, elevation, sections and schedules
Figure 11.6 — A1 GAD preview. The visible portion of the illustrative bridge's sheet; the preview continues below the viewport. The exported sheet carries the full drawing and its notes, with continuation sheets when schedules require them.

Choose A1 GAD PDF or A1 general arrangement DXF in the workspace. Output → Export deliverables → Bridge GAD sheets packages saved bridges and current proposals and can produce a PDF of all bridges. Individual drawing SVGs, component/quantity CSV and bridge JSON backup/import are also available. Engineering downloads use the deliverables access policy; previews and working-file backups remain available with the design tools.

A1 landscape is 841 × 594 mm; print the exported PDF at 100% / actual size. Plan and elevation share a stated scale; details can use different stated scales. Sheet geometry and written dimensions are in millimetres, with chainages and RLs in metres as labelled. Do not infer a ground distance from the screen preview's size.

General arrangement, not structural approval

The drawings and quantities describe the entered arrangement. Member capacity, geotechnical bearing and pile capacity, seismic/fatigue/prestress design, reinforcement and fabrication connections still require detailed engineering. Drawing conventions and family names do not establish an approved standard design. Concrete/stone volumes and steel geometry are resolved from the components; reinforcement density and foundation excavation remain stated assumptions.

Applied bridge components feed the generated bridge quantities and replace that bridge's default cost. A detailed estimate is a separate fixed bill: apply a bridge before importing a design snapshot, and revise the bill deliberately after later bridge changes.

Power lines and pipelines

The corridor query asks for transmission lines and pipelines too, and the clearance is measured over an overhead contact wire that is already 5.5 m up — so a line that comfortably cleared the road it was strung over may be nowhere near clearing an electrified railway. It is re-checked every time the grade line moves.

Indicative

The clearance table for power lines is indicative. Check it against the current schedule of dimensions and the electrical inspectorate's requirements before anybody signs a drawing.

When a layer does not arrive

Nothing in an Overpass response separates no watercourses in this corridor from a mirror that is misconfigured or half way through a reload: both are a 200 with an empty element list, and an empty corridor is legitimate. A second mirror can tell them apart, so an empty answer is put to the next mirror before it is believed, and a mirror that finds the river overrules the one that did not.

SituationWhat the tool does
An extract with contentCached for 90 days.
An empty extract, confirmed by a second mirrorCached for one day, and served as a real answer.
An empty extract nothing could confirmNot returned as an answer at all. The layer is reported as unknown and the panel shows it as did not load rather than as a plausible zero.
One layer fails, four succeedThe schedule is built from what did arrive, with the missing layer named. The waterway sizing knows the difference: a layer that did not load is not a corridor without rivers.
The lookup takes too long/api/features works to a 45-second wall-clock budget inside the 60 the platform allows, and answers 504 with a sentence rather than letting the platform reply for it in plain text.

Look up again sends fresh=1, which goes straight past the cache — kept for a season, one wrong no rivers here would take the bridges out of every schedule through that cell.

Chapter Twelve

Stations and yards

Stage 3. Yards laid out as conceptual plans directly on the alignment, carrying standard clearance and operating geometry without a separate CAD session.

The stations panel with the stations placed along the worked example
Figure 12.1 — The station stage. Each station carries its chainage, what kind of stop it is, and what the yard is expected to hold; the plan draws the yards where they land and the profile grows the plateau under them.
A station's own card, with its chainage and what it is
Figure 12.2 — A station, in detail. What kind of stop it is, its chainage, the block section it sits in, and — where the takeoff found one — the connection into the existing yard at the end of the new line.

The yard editor

Pick a station and the editor sets out the running lines and everything that goes with them:

ElementWhat is laid out, and to what
Running lines and loopsMain running lines, passenger loops, goods sidings and shunting necks, at 6.10 m track centres for broad-gauge running-loop clearance, with 800 m clear standing length.
PlatformsIsland or side, each called by the kind it is, with standard clearance envelopes.
Turnouts1 in 8.5, 1 in 12, 1 in 16 and 1 in 20, numbered T-1 onwards along the yard, with fouling markers computed and placed where converging tracks drop below safe clearance — so the declared standing length is genuinely available for rolling stock.
The station sideThe circulating area, the building, the cabin, the parking, the wall around it and the road in — drawn as it was laid out.
Depot linesStabling, pit, washing and inspection lines and shunting necks: dead-end roads that trail off the road inboard of them, each with its buffer stop and drawn with what it carries — the pit, the washing plant, the shed.
SignalsHome, starters and advanced starter, drawn and chainaged with everything else.

Working the drawing

The editor is laid out like a drawing tool made for this one trade. The objects are down the left, grouped as track and junctions, station and depot, buildings, and site; drag one onto the drawing, or click it and then click where it goes, and it lands in the nearest place the section can hold it. Beside them a Layers tab turns each layer off, solos one so it can be read on its own with the rest ghosted behind it, or locks it so it stays drawn but cannot be picked. The properties of whatever is selected are down the right, grouped as general, geometry and design.

Add parallel track — from the library, from a right-click on a road, or with P — lays a road immediately outside another at a track centre you state. A road given its own track centre is held to it and to the 5.30 m SOD minimum rather than to the yard's plain centre, so a yard road at 5.30 m is a design, and one at 4.20 m is a conflict drawn on the drawing where it is. Every turnout is numbered along the yard, T-1 onwards, and clicking one shows its hand, its toe and fouling-mark chainages, its lead and lead radius, the crossing angle, and the speed its route may be taken at.

Under the drawing, the Checks tab lists every conflict and takes you to the thing at fault when you click it; the Longitudinal Profile draws the rail level and the ground over the whole yard, with the yard limits the 1 in 400 rule is measured over; and the Cross Section cuts square across the yard wherever the chainage probe was last used, with offsets to scale and the track centres dimensioned. A summary beside them gives the yard in figures. Generate yard takes a brief — loops, platforms, the longest train, depot lines — and lays out candidate yards side by side, each solved and checked, to start from.

The throat is a ladder

main running line loop 1loop 2siding fouling markfouling markfouling mark 1 in 121 in 121 in 8.5 Each road takes off from the road immediately inboard of it, not all of them from the main line, so no two sets of switch blades ever stand on the same stretch of stock rail. A turnout can only be laid on straight track, so the fouling marks step outward as the roads go out — which is why a six-road yard reaches further along the line than a two-road one with the same loops.
Figure 12.3 — The throat is a ladder. The gradient and radius limits are tested over all of it, which is why a long throat can force the plateau — and the vertical alignment — further than the platform alone would.

Plateau grading

A yard cannot sit on a steep gradient. The vertical alignment is checked and flattened into a yard plateau at a maximum of 1 in 400 (0.25%), inserting vertical curves to tie it back to the ruling grade — which is what the Indian Railways Schedule of Dimensions requires. This is why entering stage 3 changes the profile: the plateau is real geometry, in the same VIP list as everything else, and it will show up in the setting-out table and in the earthwork.

Signals, and the station limits

The signalling follows from the throat once it is laid: the home an adequate distance outside the first points, a starter on each running line at its fouling mark, and the advanced starter beyond the last points, where the block section begins. The distance between them is what each running line can berth — and a loop too short to hold the train the line is planned for is reported with both figures, and lengthened for you.

What comes out of it

The finalised layout drops straight into the DXF export, so the 5 km sheet packages carry fully modelled station limits on standard CAD layers rather than a centre line. The signalling and interlocking schedule comes out beside it as a CSV and as a sheet of the workbook: every point with its number and how it is worked, every signal with what it reads over, the berthing lengths, and the equipment the standard of interlocking asks for.

Preliminary engineering packages

SOD plateaus, 800 m standing lengths, standard turnouts and complete sheet packages are generated — but signalling interlocking proper and OHE catenary layouts are finalised in a detailed project report, not here.

Chapter Thirteen

The estimate, and what it costs to own

Use the generated design estimate while developing the alignment, or prepare an editable detailed estimate of component bills, measurements and adopted rates. Both report their basis and outstanding work.

Start a detailed estimate · Enter measurements · Select rates · Apply, save and export

The generated design estimate

The estimate schedule in Stage 4 prices quantities from the current geometry, structures, crossings and stations. Its missing-work checklist applies while the generated estimate is the active cost source. A detailed bill has its own item and rate review instead.

The estimate panel listing the decisions still outstanding before a total will be shown
Figure 13.1 — The abstract of cost, withholding a total. Two decisions are outstanding: the corridor has not been looked up, so no bridge, culvert or level crossing is in the total; and no station has been decided, so buildings, platforms and yard track are all unpriced. The tool lists the missing decisions instead of showing a false number.
The rule

A cheap total missing all its bridges is worse than no total, because it reads as the cost of this line. So the total is withheld until the works it is made of have been worked out, and the cost readout says what remains outstanding. In a detailed bill, missing quantities, missing rates and unresolved rate-basis findings similarly prevent a ready total.

The general abstract

The full general abstract on IR plan heads with cash and stores columns
Figure 13.2 — The generated general abstract, shown in the earlier full-abstract layout with the corridor and stations answered. Plan heads 1110 to 1170, split into cash and stores columns, with contingencies at 1% (except on land and preliminary expenses) and departmental charges at 5.33% less a 10% efficiency cut. The tabs across the top open each plan head in detail. Here: ₹6,062.83 Cr for the project, ₹104.26 Cr per route kilometre — on indicative rates.
Plan headWhat it collectsWhere the quantity comes from
1110Preliminary expensesRoute length × the adopted survey/preliminary rate per km
1120LandThe land boundary schedule — banded offsets, area actually acquired
1130Formation — earthwork and tunnelsThe structures pass: cut and fill volumes, tunnel bores
1140Permanent way — rails, fastenings, points and crossings, ballast, fencing, road crossingsRoute length, the station schedule's turnouts, the crossing schedule
1150Bridges — viaducts, major and minor bridges, culvertsThe crossing schedule and the hydrology sizing
1160Stations and buildings — offices, stations and platforms, service buildings, staff welfareThe station schedule
1170Equipment, plant and machinery — signalling and interlockingThe signalling schedule

Twenty-six plan heads are offered on the selector — new lines, gauge conversion, doubling, traffic facilities, road safety works, track renewals, electrification and the rest — so the abstract can be classified under the head the work is actually being sanctioned against.

Start a detailed estimate

Open Output › Detailed estimate, or press Detailed estimate… in the estimate panel. This workspace can be opened without completing the alignment stage gates; a stand-alone bridge, building or other component bill does not need a routed corridor.

  1. For a new bill, use Start blank estimate or add the first component. For a bill based on the alignment, choose Import current design.
  2. Open Basis & charges. Check the estimate title, project railway zone, location and adopted rate authority before choosing rates.
  3. Choose a Component head and + Add component. Rename it for the actual work package: for example, “Bridge 14 — foundations” or “Station A — platform works”. Enter its reference code and scope notes.
  4. In Component bill, use Add schedule item for a published catalogue entry or Add custom item for work with a project rate or analysis.
  5. Complete quantities and rate evidence, check Review, then apply and save as described below.
Detailed estimate workspace with component bills, combined costs, charge summary and review status
Figure 13.3 — The detailed estimate workspace. Separate component bills feed one combined summary. Cash, stores, charges and review findings remain visible; Apply and Save are separate project actions.
Import is a fixed snapshot

Import current design replaces the current detailed bills after confirmation. It captures the quantities and rates at that moment; moving the alignment or resizing a bridge afterwards does not update them automatically. Review the affected bill, or reimport knowing that your existing detailed edits will be replaced. Imported assemblies and allowances remain provisional until their quantity and rate basis have been checked.

Use separate components for packages you need to issue independently. Assign the correct railway head, especially Land and Preliminary expenses, because charge exclusions follow that classification. Include component and each item's include control let you retain an option without adding it to the total. Excluding a record preserves its data; deleting it removes it from this draft.

Enter billing quantities and measurements

Select an item in the bill to open its details. With no measurement rows, Quantity is the quantity in the displayed billing unit. Once measurement rows exist, those rows determine the quantity and direct entry is disabled. Remove the measurement rows to return to direct entry; check the resulting quantity before proceeding.

  1. Press Add measurement. Give the row a description that can be checked against a drawing, chainage range or site record.
  2. Enter number, length, breadth and depth. A row measures number × length × breadth × depth. Enter 1 for a dimension that does not apply.
  3. Choose addition or deduction. Deduction rows subtract openings, voids or other excluded work from the measured total; retain their descriptions.
  4. Set the Measurement divisor to convert the measured total to the published billing unit. The displayed bill quantity is net measured quantity ÷ divisor.
Two examples of a quantity that can be checked by hand
MeasurementCalculationBilling quantity
Two concrete blocks, less two openings 2 × 12.5 × 4 × 1.2 − 2 × 1 × 0.5 × 1.2118.8 m³ with divisor 1
250 m² of work priced per 100 m²250 ÷ 100 2.5 billing units, multiplied by the published rate per 100 m²
Selected component item with quantity measurements, deduction rows, billing unit and adopted rate details
Figure 13.4 — Measurements behind a bill item. Additions and deductions retain their descriptions. The measurement divisor is explicit so a measured area or volume is not confused with the unit in which the schedule quotes its rate.

Changing the unit label alone does not convert a quantity or rate. Check conversions between kg and tonnes, per-unit and per-hundred rates, and compound units such as tonne-kilometres. Record measurement units and assumptions in the item notes. Replacing an item with a catalogue rate in a different unit asks to clear its existing quantities and measurements; re-enter them on the new basis.

A blank quantity or rate means Unpriced, not zero-cost work. A genuine zero is retained as zero. Negative published rates can represent credits; check the combined signs of any credit rate and deduction quantity. Invalid number text stays visible and prevents Apply or export until corrected, including invalid entries in another component.

Choose schedule rates and record the local basis

The Rate library holds 4,249 extracted item variants: 1,065 from Central Railway USSOR 2021 and 3,184 from CPWD DSR 2023. Search by item code or description; filter by schedule and chapter. Check the selected row's scope, unit, rate and variant before adding it. Carriage lead bands are separate variants, not interchangeable prices for the same movement.

Selected rows keep the published item code, unit and rate, source document, and available page or volume references in the project. Reopening the file uses that saved rate snapshot; it does not silently substitute a newly fetched price. Follow the source link to verify inclusions, exclusions, lead conditions and applicable correction slips.

Basis & charges fieldWhat to enter
Project railway zone and locationThe railway and actual project locality. Review any values initialized from the project. A location does not calculate a cost index.
Adopted rate authorityThe schedule or authority on which your adopted prices rely.
Local adjustment basis / authorityThe applicable circular, approved index, quotation or other source, with enough detail for another engineer to check it.
USSOR index and DSR indexSeparate indices, each with base 100: 100 uses the saved source rate; 110 increases it by 10%. They affect matching schedule items only.
Published source is not local approval

IRUSSOR provides common item numbering; the included monetary rates are Central Railway's. DSR 2023 is a Delhi civil schedule. Verify rates for the project's zone, locality and price level. An index does not update an item's scope or implement a correction slip. The extracted catalogue is not a certification that every item, amendment and source value has been checked.

Ambiguous units or incomplete source descriptions remain review findings. For example, a row with an unnamed thousand-unit basis must be checked against the original schedule before its quantity is entered. Most DSR entries record a volume rather than a page. Carriage coverage is partial. Use a sourced custom item for a missing entry and for specialist electrical or signalling work outside these civil schedules. See Appendix B for source links and extraction limits.

To adopt a different project price, select Project / quoted rate, enter the adopted value and record its authority in the notes. Keep the original schedule reference as evidence where useful. A schedule item's published-rate field is not a place to disguise an unrecorded override.

Build an analysed rate

  1. Add a custom item, enter its description, billing unit and quantity, and select Rate analysis as the rate type.
  2. Add constituent lines for material, labour, plant or subcontract work. Each line carries a description, coefficient quantity, unit, adopted rate and source. Coefficients are the resources needed for one billing unit of the finished item.
  3. Enter overhead and profit percentages explicitly. The analysis sums constituent costs, applies overhead, then profit. Review the resulting adopted unit rate against the scope.
  4. Record leads, lifts, wastage, tax treatment and anything else included in that rate. Imported reference analyses remain provisional until you review them and choose Analysis.

For example, a constituent subtotal of ₹1,000 with 5% overhead and 10% profit gives 1,000 × 1.05 × 1.10 = ₹1,155 per billing unit. Project and analysed rates are already adopted prices; neither is automatically multiplied by the USSOR or DSR index.

Cash, stores and project charges

Enter an item's Stores share (%) to allocate its amount between stores and cash. A 25% stores share on ₹1,000 gives ₹250 stores and ₹750 cash; it does not add ₹250 to the item price. The combined summary adds included components and applies project charges once.

ChargeCalculation basis
ContingencyIncluded works excluding land and preliminary expenses.
D&G / departmental chargesThe same works base including contingency, at the entered percentage reduced by the efficiency reduction. A 10% efficiency reduction multiplies the D&G percentage by 0.90.
Environmental and sports chargesThe same base used for departmental charges.
Additional GSTThe subtotal including the preceding charges. The default is zero; verify taxes already included in the adopted rates before adding it.

Item amounts, stores allocations and payable charges are rounded to paise; summaries add those rounded amounts. Set a charge to zero when it is not applicable or is already included in your adopted price. Review the stated bases against the sanction and contract requirements.

Review, apply, save and export

Open Review before issue. Select a finding to reach the relevant component, item or basis field. Missing quantities or rates are excluded from the priced subtotal and remain flagged. Provisional allowances can contribute money but still need review. Local-rate and source warnings are not resolved merely because all arithmetic cells contain numbers.

ActionWhat it changes
Apply estimateCopies the draft into the working project as one application undo step. With Use this detailed estimate for project cost summaries enabled, the cost pane, toolbar and reports read this bill. The generated estimate is not added to it.
Save projectApplies the draft and invokes normal project saving. It writes to the selected cloud project or local .rads, or asks for a destination. If saving is cancelled or fails, the applied estimate remains in the working project; retry the save.
Workspace Undo / RedoMoves through estimate draft edits. Closing an unapplied changed draft asks whether to discard it. Apply before relying on the project's recovery copy.
Disable detailed cost displayIn Basis & charges, clear Use this detailed estimate for project cost summaries and Apply. The bill remains saved and editable; project summaries use the generated alignment estimate again.

Use Excel workbook or Combined CSV for the full draft, and Component Excel / Component CSV for the selected component. Exports use the current draft; exporting does not apply it or save the project. Engineering downloads follow the site's Pro deliverables access policy. Review-mode and visitor projects cannot apply edits; return to the base alignment before editing a project with an active variant.

The Excel workbook contains the general, head and component summaries; individual component bills; measurements; rate analyses; pinned source rates; settings; and review findings. Editable input cells feed live formulas, with calculated results supplied for viewers that do not recalculate. CSV carries the item register and summary; it is not the measurement and formula workbook, nor a replacement for the project file.

Combining component issues

A component-only workbook applies the project charge settings to that component alone. Do not add independently charged component grand totals and then charge the project again. Combine the works subtotals in the project bill and apply its charges once. Independently rounded component charges can differ from the combined calculation.

With a detailed bill active, the full project workbook and cost-estimate export carry its sheets. The DPR identifies components by their saved names and heads, includes GST when applied, and marks incomplete totals as priced subtotals. Custom component names do not establish depreciation lives; classify the assets before completing the report's terminal value calculation. Recheck report quantities and bill scope after any design change.

What it costs to own, not only to build

A first cost is the number a comparison table has always carried, and on its own it points at the wrong corridor with some regularity: a shorter route through the hills is cheaper to build, and then trains climb its ruling gradient every day for sixty years. Four engines address that, all reachable from the Workbench.

EngineWhat it produces
Traction energy
energy.js
kWh per train-km, kWh per thousand gross tonne-km, what the gradients cost as a share of traction drawn, annual energy and carbon, and the same alignment priced as diesel against electric. Regeneration is two fractions, not one — what the traction chain recovers, and what the network will actually accept. Both directions are computed, because a ruling gradient is a fact about one of them.
Whole-life cost
wholelife.js
Capital at year zero, energy and maintenance every year, renewals at the years they fall in. Maintenance is driven by the geometry rather than by route length — each curve charged against its own radius — because a flat per-kilometre rate says nothing about an alignment and hands the argument back to the shortest option. The discount rate is a policy choice, so it never appears alone: the sensitivity across 4–12% travels with the result, and two options can be asked for the rate at which they change places.
Cost risk
risk.js
P50, P80 and P95, and where the deterministic figure sits in its own distribution. The tornado is the real output: each driver swung P10 to P90 with the others held, ranked, so the engineer knows which single assumption is worth an afternoon. A share of every driver's swing comes from one common market factor, because independent sampling lets the central limit theorem cancel the extremes and report a confident, wrong answer. Quantity uncertainty widens with the terrain grid the design was built on.
The speed–cost elbow
pareto.js
Given the same corridor designed at several speeds: which options are dominated, where the knee is on normalised axes, and — the figure that actually persuades anybody — what each step costs per minute saved.
The design speed is the most expensive decision on the project

and it is taken from a dropdown before anything has been designed. Designing the corridor three or four times at different speeds costs minutes, because the terrain is already cached.

Chapter Fourteen

The workbench: every engine, with a way in

One window, a list of engines down the side, tables in the middle. A panel that cannot run is still listed, and opening it says which input is missing and what produces it.

The workbench with the engine list and the ground-provenance panel open 1 2 3 4 5
  1. 1 The engines, grouped: cost, ground, corridor, review.
  2. 2 needs input — the panel is listed but cannot run yet, and opening it says what would make it run.
  3. 3 A panel that can run against this project.
  4. 4 The verdict, in a sentence, before any table.
  5. 5 The table, reach by reach, with the units and the source of every figure.
Figure 14.1 — The workbench, open on How well the ground is known. The whole of the worked example rests on public 30 m terrain with a vertical σ of 8 m — which the panel says in one sentence before it shows a single number.

The engines

PanelWhat it answers
Cost riskWhat range the total is really in, and which assumption is worth an afternoon.
Whole-life costWhat the alignment costs over sixty years, and at what discount rate two options change places.
Trade-off frontierWhich speed options are dominated, and what each step costs per minute saved.
How well the ground is known
provenance.js
A band along the chainage axis saying what each length of ground is known from, with the vertical accuracy each source's own specification quotes. It produces a quantity, not a score: a six-metre clearance measured off a surface with eight metres of error in it is not a clearance, and the module says which reach to survey. Errors stay correlated over hundreds of metres, so a reach contributes w·σ·√(L·Lc) — which makes the band invariant under how the reaches happen to be subdivided, and shows that one surveyed kilometre inside forty barely moves it.
Ground and batters
geology.js
Chainage ranges each naming a material and how well it is known — logged from a hole, inferred between two, mapped, or assumed. Each material carries its batter, the depth it stands to, the rate it is dug at and how a bore through it is supported, so a cutting in rock is narrower than the same cutting in clay and takes less land with it. Boreholes become reaches by interpolation, and nothing is extrapolated past the last log.
Cross-sections
section.js
Sections cut on the normal, with benching, berms, side-hill sections and drains; volumes by Simpson's rule over a section cut at the midpoint. Where no terrain grid is available the old trapezoid behaviour returns exactly — and every section says it is assumed.
Cross-sections, on paper
sectiondxf.js
The same run as a CAD drawing: a grid of sections a sheet, each over its own datum on a figured graticule, with the surface, the works and their setting-out points, the cut and fill hatched with the ordinates the areas were integrated over, the track, the channels, the bore and the deck — each on its own layer. The plotting scale is chosen off a standard ladder by the widest and tallest section in the set and stated on every sheet; horizontal and vertical are equal, because an exaggerated vertical makes every batter a lie.
What only shows from the side
findings.js
The section engine already knows, per section, whether each batter found the ground, how far the toes ran, whether the ground was sidelong and whether any of it was assumed — and then reduces all of it to two volumes. This reads those flags back out as findings over a length of railway: neither batter meets the ground; one daylights and the other does not; cut one side and fill the other; the boundary runs well past the median for this line; deep works cut against ground nobody measured. None of them breaks a rule — these are the lengths where the quantities are standing on an assumption the ground does not support. Every one carries a Show me that opens the ride on the worst section in the run, off the line and from the shot that shows it.
How far the driver can see
sightline.js
Where the straight line from a driver's eye to a target ahead first passes through something, and what it passes through. A hillside is the country; the inside of this railway's own cutting is a batter slope, a bench width or twenty metres of shift, and every one of those is a decision that can be unmade. On ground nobody measured the distinction cannot be made at all, and it says so instead of guessing. It is not a stopping distance: no braking curve, no reaction time, no adequacy judgement, and findings only for the shortest quarter of this line's own sights.
What the land is
landcover.js
The land-take corridor split into built up, vegetation, water and bare, classified from the imagery already on the ground in the ride. Three bands and no near infrared: it tells a green field from a metalled roof and it cannot tell an orchard from a plantation. Two numbers say how far to trust it — coverage is how much of what was asked for arrived, confidence is how much of what arrived fell into any class.
Haul and borrow
masshaul.js
Where the material goes: the mass-haul curve, the free-haul and overhaul, and what has to be borrowed or wasted.
Utility crossings
utilities.js
Transmission lines and pipelines, with the clearance measured over the contact wire rather than over the rail.
Land to acquire
parcels.js
Given the cadastral layer, the acquisition schedule plot by plot: how much is taken, what is left, which holdings are severed by the line, and which are bought whole because the residual cannot be worked. The number of owners, rather than the area, is what sets the acquisition programme.
What changed
diff.js
Two saved states compared at three altitudes at once: what a person changed, what it did to the line, and what it did to the quantities and the cost. Two lines of different lengths are compared at equal proportion along, not at equal chainage. A rule that has been turned off is the first thing in the list.
Review comments
review.js
Comments anchored to a place in a design — and the design moves. An anchor is stored as the chainage, the fraction along, and the revision it was written against, so when the two readings stop agreeing the comment is flagged rather than silently re-pointed. A comment on a control point follows its name, because a name survives an insertion and an index does not.
Alternatives
alternatives.js
Other ways of running the same line inside one project. Each is a whole plan, profile and set of stations; the standard, speeds, limits and rates are shared. The option on the plan is the project's own points, so every edit changes that option and no other, and switching is an ordinary undoable edit. They are solved and priced side by side, and cost is only compared once every option is priced. Projects saved with the older variants (variants.js) open with each variant as an alternative. Free includes one alternative beside the base route; creating further alternatives requires Pro. Existing saved alternatives are preserved.
Draft report
report.js
The document that goes in the envelope, with every figure read from the model at the moment of writing so the prose cannot drift from the schedules annexed to it. It refuses to write what the model does not know and lists those gaps. Its best page is the register of assumptions, gathered from every module.
The cross-sections panel
Figure 14.2 — Cross-sections. Every earthwork quantity used to come from one unstated assumption: that the ground is level across the formation. On a hillside that is wrong in the direction that flatters the estimate — a formation on ground falling at 1 in 4 has its centre line at ground level, so the old model reported no earthwork at all where a cutting, a bank and half as much land again are actually built.
The haul and borrow panel
Figure 14.3 — Haul and borrow. The mass-haul view of the same earthwork the profile shades: what is cut, what is filled, how far it has to be moved, and what has to come from somewhere else.

Importing a survey

Points, a schedule of cross-sections, LandXML from a total station, or an ASCII grid — the format is worked out from the file. What the panel reports is not 4,812 points loaded but the coverage: which reaches of the line the survey actually covers, and what the volumes over the rest are still worth.

A survey does not extend past where it was taken

Outside the surveyed area the module returns nothing rather than the nearest value, and the section engine falls back to the project's own ground profile. A survey covering two kilometres of an eight-kilometre line gives you two kilometres of quantity and six of estimate, and the report says so.

The polish pass

optimise.js asks whether the design could be better, which nothing else in the chain does. Five objectives — cost, earthwork, balance, running time, traction energy — minimised by a hill climb that never accepts a candidate introducing a compliance error. Never a penalty: there is no exchange rate between breaking the standard and saving four crore. It produces a trace that names every move and can be rewound to any step on it, because a design that improved for reasons nobody can name is not a design anybody will sign.

Asking in words

Tools → Ask handles supported requests locally first, using the current project, application guidance and engineering engines. Local answers make no AI calls and need no AI key. Ask identifies its sources and reports missing inputs.

Inspect an alignment, explain a finding, review cost or quantity results, or prepare a supported change. Review the proposal's target and parameters, then choose Apply change. Accepted edits use normal undo. Invalid inputs, read-only projects and stale proposals are refused. Unsupported edits open the relevant workspace for you to finish; opening it is not a completed design change.

Automatic Gemini fallback is on by default. For requests the local resolver cannot handle, the question, relevant conversation and project/tool context pass through this site's /api/assistant to Gemini. Ask settings can disable fallback, set the Gemini model or hold an optional personal Gemini key. An empty key field uses the site's configured key. Both paths require sign-in and use the same server route.

Conversations and personal keys stay in this browser, separately from project files, and can be cleared in Ask. They do not follow a file to another device. Map/source lookups and cloud saves retain their own network requirements when Gemini fallback is off.

Review the sources and the proposed change

Ask does not support every edit, replace a survey or certify compliance. Engine limits and missing data still apply, and Gemini explanations need review. Use current source results and formal engineering reports before relying on an answer.

Chapter Fifteen

Seeing the design

A plan and a profile are two orthogonal projections of one object, and an engineer reads them fluently. Neither shows what the line looks like.

Cab ride 2: inspect the corridor in 3D

With Pro, open Review → 3D & cab rides → Cab ride 2 (3D) after an alignment is present. This is the newer 3D renderer, with modelled station scenery, trees and buildings. The original Cab ride remains a free, separate view and is documented below; its three-camera controls and rendering limitations do not describe Cab ride 2.

  1. Start in Cab, use the chainage control to reach the area under review, and play or pause the ride. The running information relates to the current alignment.
  2. Change to Chase to see the train and track ahead, Orbit to inspect slopes and structures from the side, or Lineside for a view beside the railway. Keys 1–4 select those four cameras.
  3. Use the Now, Trip, Ride, Stations and Findings panels to relate the picture to chainage, grade, cant, station locations and reported checks. Inspect a station from both ends and from Orbit before interpreting a single cab frame.
  4. If scenery looks out of place, check the saved station, bridge and section parameters first. Reopen the ride after applying changes. A plausible picture does not close an engineering finding or add a missing bill item.

Reading the stations

Platforms follow the station schedule, their declared ends and the grade of the line. Pitched shelters use visible steel rafters, purlins, roof sheets, gutters and downpipes. Footbridges include trusses, cross girders, bracing, foundations, covered stairs and landings. Stair access is kept clear of shelters and furniture. Short or narrow platforms omit facilities that do not fit, rather than forcing a full-size layout into the space.

Yellow station boards sit near platform ends and face the tracks; supplied local-language and Hindi names can appear alongside the main name. Benches, bins, drinking-water points, tactile strips and lighting provide context. The station building has windows, verandah and circulation spaces. These are procedural visual details, not a survey of an existing station or a complete building, accessibility or fire-safety design. An explicitly empty footbridge schedule draws none; illustrative fallback placement is reserved for older stations without a schedule.

Reading the earthwork, bridges and water

Cutting benches and berms follow the section geometry. Cutting cess and bench U-drains are drawn only on terrain-trimmed treads that exist; they stop at missing benches and structural transitions. They are not automatically added to fill berms or the embankment toe. Section drainage dimensions override the defaults, and narrow channels can reduce the depicted size. Inspect the section and drainage design before treating any visible channel as an engineered drainage solution.

Return walls are seated against approach slopes, tunnel portal cover joins the hillside, and bridges use the shared resolved family and floor geometry, with the scheduled openings and pier positions. Square support lines retain the actual obstacle direction. Road traffic follows the road grade. Rivers use a water surface over a recessed channel; an aqueduct's water is within its supported trough. Water levels without recorded evidence remain illustrative.

Scenery does not alter survey or quantities

Station pads and channel shaping adjust the terrain used to draw the scene. They do not rewrite the project's ground profile or survey surface, calculate earthwork quantities, or add amenities and drainage to the estimate. Check the source schedules, sections and active estimate when reviewing scope. Neither ride certifies sight distance or the structural adequacy of what is visible.

The original cab ride

Cab ride puts the eye on the track, two and a half metres above rail, and runs it along the alignment. It is a picture of the design, not of the ground: the formation and batters the earthwork model assumes, the structures the profile implies, the platforms the station plan placed, and the crossings the schedule resolved, draped on terrain sampled at thirty metres. This original renderer does not add the trees, buildings or detailed station scenery of Cab ride 2. Its engineering objects follow the design modules.

The cab ride inside a tunnel at chainage 24+424 1 2 3 4 5 6 7 8 9 10
  1. 1 The readout: chainage, direction, radius, cant, grade, the works being built, the permitted speed and what governs it, the scheme's cut and fill, and what is coming next.
  2. 2 Callouts for the deepest cut and the highest fill in shot, each with its chainage.
  3. 3 The cut/fill key — three bands a side, in the same red and blue the long-section uses.
  4. 4 The long-section strip: the whole line with cut and fill shaded, the structures banded, the stations ticked, and a marker that moves with the ride.
  5. 5 Transport: run/stop, speed multiplier ×1 to ×8, and the direction of travel.
  6. 6 The three cameras, and the chainage slider.
  7. 7 Layers — cut/fill, terrain, earthwork, furniture, track, long-section and the panel, each independently off, folded behind one button that carries the count of what is off.
  8. 8 Scene (the ground, the detail, the lens, the light, and a variant beside this one), Reset view, the sound with its level and the horn, Full screen, and Save.
  9. 9 Which way is north.
  10. 10 A plan inset showing where on the line the eye is, and which way it is looking.
Figure 15.1 — Cab. Riding into a tunnel at 24+424 on the worked example: straight, no cant, 1 in 100 rising, permitted 100 km/h and traction-limited, with a 20 m cutting at 24+736 and a 12 m bank at 26+575 in shot.
ControlWhat it is for
CabWhat the driver sees.
ChaseSixty metres astern and seventeen up, aimed past the train at the line ahead — the shot that shows whether a curve is comfortable.
OrbitOff the line altogether, looking back at it, but still anchored to a chainage and to the track's own heading, so the shot holds its composition as the line turns underneath it. Drag to swing round, wheel to close in, double-click to reset. It is the shot that answers what a plan and a long section between them cannot, because both of those look along the line and this one can be swung square across it. The panel gains two rows the other two do not have — how far out the eye is and what angles it is at — because without them the same cutting looks the same from 80 m and from 800.
Scene · groundWhat the terrain takes its colour from: shaded relief, or any of the rasters the plan view draws. It opens on satellite wherever the project is georeferenced — a ride opening on shaded relief over a corridor with no terrain loaded is a flat green plane, and almost nobody changed it. Where the plan is already showing a raster that drapes well the ride follows that instead, so the two views agree about the ground; where the plan is showing a drawing (marked †) it is not followed, because following it into a bad picture is a worse kind of agreement than none. With no georeference there is nothing to place a tile against and the ground stays shaded, silently.
Scene · detailCoarse, normal, fine or ultra — the section spacing, the number of ground columns, and how far down the line is built. Coarse is for a laptop on battery and ultra for a still going into a report; neither is the one to ride at.
Tangent pointsTS, SC, CS and ST on the plan curves, BVC, EVC and the turning point on the vertical ones, pegged either side of the formation at the chainages the solvers produced.
Scene · sunA date and an hour. Empty is the fixed studio light, which shows landform best; a real date puts the sun where it actually was at this corridor's latitude, which turns the picture into a check on which cutting faces stay wet. See The light, and what it is for below.
Save · sample land coverClassifies the land in the land-take corridor from the basemap now on the ground, and puts the split in the workbench under What the land is.
Scene · besideOpens a variant of this project in a second frame, locked to the same chainage and the same camera. Only offered where the project has a variant.
Save · every structureEvery structure, station and finding, shot from the same angle at ultra detail into one ZIP with a manifest. The This frame entry above it is for the picture in front of you.
RunPlays the line at the speed the running profile permits — braking into every restriction and accelerating out of it — not at the design speed. The readout says which of the two is being used. ×1 to ×8 runs it faster than real time; the elapsed clock still counts the minutes the train takes.
Up / DownRides the other way. The grades change sign, the curves arrive in the other order, and the hand of each curve swaps with them.
◀ ▶Jumps to the previous or next thing on the line: a station, the start or end of a structure, a resolved crossing. A 90 km alignment is three quarters of an hour at line speed.
LookDrag the picture to look out of the side window, wheel to change the lens from 24° to 85°, double-click to reset. The batter closing in on the driver's side and the far end of a curve are only visible off-axis.

Keys: space run/stop · 1 2 3 cab, chase and orbit · ← → nudge 25 m (Shift 250 m) · , . previous and next feature · Home End · R reverse · L reset the view · F full screen · S save the frame · Esc close the open panel, then the window.

Why the horizon tilts

The horizon is derived from the camera frame rather than drawn level, so it tilts with the applied cant and drops down the frame on a climb — which is what makes a canted curve look canted.

The chase camera, over the leading cars and past the nose
Figure 15.2 — Chase.
The orbit camera, looking back at the line
Figure 15.3 — Orbit.
What it will not tell you

It does not report a sight distance. Measured against uniform batters on 30 m terrain, a stopping-distance figure would carry an authority it has not earned and would be believed. It says instead how far ahead the centre line stays in shot, which is a fact about the picture rather than a claim about the railway.

Where a DEM has been kept, the terrain mesh stops at the top of the batter rather than running across the corridor, and the batter is drawn out to where its design slope actually meets that surface. This is a drawing, not a quantity: the structures engine still prices earthwork against level ground across the section, and the difference between the two is the error that assumption carries.

Original ride controls

The ground sampling, lighting, variant comparison and frame export instructions below refer to the original Cab ride. Cab ride 2 has its own 3D renderer and controls.

The ground under the picture

The terrain fan takes its colour from whichever basemap is chosen in the ground selector — the same rasters the plan view draws. A corridor that runs through orchard, dry scrub and a village reads as one green wedge under slope shading and as three obviously different things under satellite, and the difference is the difference between land that costs money to take and land that does not.

Sampled, not draped

It is one colour per facet — box-filtered over the ground that facet covers — and still lit: an image flattened onto a mesh with the lighting taken off it reads as a bedsheet rather than as a hill. It is not a projective texture, so a facet lying diagonally to the tile grid averages a little ground outside itself, and a very large one is averaged from a sample of its pixels rather than all of them. The footer says colour sampled from and carries the source's attribution, every time. Without a georeference there is nothing to place the tiles against and the ground falls back to slope shading; if a source serves its tiles but will not allow their pixels to be read, the whole layer stands down and the footer says so rather than the picture quietly staying green.

Why the centre of a facet was not enough

The first version of this sampled the middle of each facet. The terrain fan spaces its columns by a power of the distance from the toe, so an outer facet on an orbit shot is tens of metres across while a tile pixel is about three — one pixel speaking for a patch of ground hundreds of times its own area, and whichever roof or road casing it happened to land on won the lot. The ground came out as a quilt of arbitrary rectangles. Averaging the footprint instead cut the hard edges across the terrain by about two fifths on photographic imagery, and the columns are eased towards linear whenever a basemap is on the ground, which roughly halves the widest facet.

Not every basemap is a photograph

Under the plan this makes no difference: a map under a map is a map. Draped over a mesh it matters. A cartographic raster is flat-filled polygons with hard edges and lettering, and a facet averaging a patch of one is averaging somebody's diagram rather than the ground it stands for; the terrain relief is worse still, because it is already shaded and the ride lights every facet itself, so the two multiply. Those three are marked † in the ground picker with the reason in the tooltip, and the footer repeats it so a frame saved into a report carries the caveat with it. Satellite is the one that drapes like ground.

Setting-out marks

TS, SC, CS and ST on the plan curves; BVC, EVC and the summit or low point on the vertical ones — a peg either side of the formation with a bar across it, at the chainages the solvers produced. They are already on the curve schedule and in the setting-out table. They are here because the question a ride answers that a table cannot is what a transition looks like, and that is unanswerable if you cannot see where it starts. A curve with no spiral in it is marked TC and CT, not TS and ST, because calling it otherwise would be a lie about a geometry that has no transition.

A software renderer, not a modeller

It paints a few thousand quadrilaterals with the painter's algorithm on a 2D canvas — no WebGL, no 3D library in this original renderer. Ordering is by depth within a layer, which is exact for a strip and could in principle be wrong for two long faces that each partly overlap the other. There is no shadow and no occlusion query, and the basemap on the ground is a sampled colour rather than a texture.

The light, and what it is for

The ground is lit from a fixed bearing chosen so the light comes across the line: an aspect that shades every north-facing slope the same as every south-facing one shows no landform at all. That is the right choice for a picture and the wrong one for a question, and there is a question. A cutting whose face is turned away from the winter sun stays wet; the identical cutting fifty metres on, whose face happens to point the other way, does not. Give the sun control a date and an hour and the light goes where it actually was — NOAA's solar position at this corridor's own latitude, on the clock its own longitude keeps — and the panel gains the bearing, the elevation and the day's length. Below the horizon the ground goes to ambient, because lighting a hillside from a sun that has set is the kind of thing that makes a drawing quietly untrue.

A position, not a shadow

Knowing where the sun is says which way a slope faces relative to it. It does not say whether the hill opposite is in the way: that needs a horizon read in every direction, and this application has a corridor rather than a horizon and no occlusion query to ask with.

Two alignments, one camera

Where the project has variants, beside opens one in a second frame. The two share the chainage, the direction, the camera and every layer switch, so that anything different on the screen is a difference in the railway. Letting them drift apart is what makes a side-by-side of two pictures worthless — the eye cannot tell a changed alignment from a changed camera, and it believes whichever it saw first. The comparison panel already puts two options side by side as numbers, and numbers are how a decision is justified rather than how it is made: somebody looking at a variant that saves eleven crore wants to see what eleven crore bought.

No permitted speed on the variant

The running profile is computed for the alignment that is loaded. The second frame's panel therefore omits the permitted speed rather than printing the base alignment's figure beside the variant's geometry, which would be a quietly wrong number in the one place the two are being compared.

A set of frames

Frames shoots every structure, every station and every finding from the same angle at ultra detail — off-screen at 1600 × 900, so a picture going into a document at that width was drawn at that width and not enlarged from nine hundred — into one ZIP with a CSV manifest naming the chainage and subject of each. A folder of thirty PNGs with no index is thirty pictures nobody can caption. The ride is put back exactly as it was found when the capture ends.

Project sheets

A 5 km Final Location Survey sheet: plan strip above, L-section data grid below, title block at the right 1 2 3 4 5 6 7
  1. 1 Which sheet: the corridor is partitioned into 5 km packages — twelve of them here.
  2. 2 Export this sheet, or all twelve, as DXF.
  3. 3 The plan strip: track, land boundaries tagged at 25 m, boxed kilometre posts, curve data apex boxes and bridges.
  4. 4 The profile band at 1:5000 horizontal and 1:500 vertical, on an independent 10 m datum per sheet.
  5. 5 The seven-row L-section data grid — formation, ground, cut/fill, alignment, gradients — with exact chainage vertical callouts.
  6. 6 Curve and track constant tables, and the legend.
  7. 7 The title block: project title, division, sheet number and km range.
Figure 15.4 — Project sheets. Production-standard Final Location Survey drawing sheets, viewable on screen with zoom, pan and sheet paging before export. Everything sits on named CAD layers.

Basemaps

LayerSourceGood for
street mapOpenStreetMaproads, settlements, existing railways
satelliteEsri World Imagerywhat is actually on the ground now
topographicOpenTopoMapcontours, watercourses, relief
terrain reliefEsri World Hillshadereading the shape of the country

Each tile is drawn through an affine transform built from the plan coordinates of its own three corners, rather than the whole image being stretched to fit, so registration against the alignment holds to a small fraction of a pixel at any zoom. Each source is credited in the corner of the view.

Context, not control

Tile imagery carries its own positional error, and the plane is placed on the earth from a single tied point on a north-up unit-scale grid. Good enough to see that a curve clips a village; not a substitute for a survey or a real coordinate transformation.

Chapter Sixteen

Deliverables and exports

What comes out, and what is inside it.

The Export Deliverables dialog
Figure 16.1 — Export deliverables. An earlier layout of the packaged deliverables, then every individual schedule as a CSV, then the interchange formats.

Review and finish a PDF in PDF Studio

On the main and corporate websites, a PDF export first opens a preview. Check the page, use Search PDF or Text to inspect its existing text, and add highlights, text, comments or freehand marks. Choose Download to save an annotated copy, or Edit PDF to carry the document and your annotations into a dedicated editor page.

RAD PDF Studio displaying a sample feasibility report with page organisation tools, annotations, search and Download PDF 1 2 3 4 5
  1. 1 Annotation tools: text, highlights, comments, drawings, shapes and images.
  2. 2 Page operations, including merge, rotate, remove, extract and split.
  3. 3 Page navigation and zoom; search is on the right of the same row.
  4. 4 Download the edited document. Undo and redo sit beside the download control.
  5. 5 Page order, with controls to move each page earlier or later.
Figure 16.1a — RAD PDF Studio. Actual editor showing a demonstration feasibility report. Its sample inputs are not an approved project or estimate.

Open Export → PDF Tools to start with your own PDF or images. Pages combines files and inserts, removes, extracts, reorders or rotates pages; split ranges produce separate files. Markup edits the objects you add. Layout crops page edges and adds page numbers or text/image watermarks. Use Download PDF when the result is ready. Original PDF text and drawing geometry are preserved; they are not converted into editable Word paragraphs or CAD entities.

Convert exports PDF pages as JPG images, adds JPG/PNG pages, and extracts existing text to basic HTML or Markdown. Camera/document photos can become PDF pages. Image-only scans do not gain searchable text: OCR, Office conversion, compression, repair and PDF/A conversion are not included. These tools process documents on your device; they do not send the PDF to a conversion service.

The editor keeps a local draft for up to 24 hours in the same signed-in browser session, subject to available browser storage. Download important work before clearing storage or signing out. Existing Pro, company and project-allocation checks still apply to engineering exports and restored project documents. Editing a PDF does not update the alignment, estimate, design approval or original project file.

In company chat, PDF attachments open in the compact viewer with search, page controls and annotation tools. Download saves your annotated copy; it does not replace the shared attachment. The document page is rendered as needed so that opening a long file does not wait for every page to be drawn.

A project presentation for technical review

Actual project presentation export showing preparation fields, current operation status and the bottom-left progress indicator 1 2 3
  1. 1 Complete meeting particulars and state the decision required from the review.
  2. 2 The export describes the stage currently running and disables duplicate downloads.
  3. 3 The activity strip remains at the bottom left while figures are being prepared.
Figure 16.2 — Project presentation in progress. Actual export interface while preparing a demonstration project. The indicator reports work; it does not guarantee that every required engineering or appraisal input is present.

Save the adopted design, then open Export and choose the project presentation (.pptx) named Project presentation. Enter the employer, revision, meeting title, objective and decision sought, then choose Download project .pptx. This export requires Pro. It assembles the route, alignment and profile imagery, design basis, structures, quantities, costs and review findings from the current project. Check the named alternative and cost snapshot before presenting it. The alignment and profile use engineering coordinates; the editable line diagram follows station chainages. Include the current plan and profile views adds images of the present zoom, overlays and annotations; a saved CAD drawing can also be included. Add an approved geographic location plan when the meeting requires one.

Use the deck as a starting point for a PEC or other project review: explain the objective, compared options, evidence for the recommendation, remaining risks and decisions requested. Complete traffic evidence, economic/financial appraisal, funding, stakeholder approvals and other scheme-specific inputs that the alignment does not contain. No universal mandatory PEC slide template or sanction is implied by exporting a presentation.

The Estimate justification and evidence fields and Review BOQ / EPC allocation are shared with the estimate justification report and tender exports. Complete them once, choose Apply export settings, then Save project to retain the notes and allocation decisions in the project. The presentation uses that same estimate and package split, so its cost explanation can be reconciled with the Word report and Excel schedules. A download alone does not save changes to the project.

Open PEC meeting evidence and observation replies to describe the Existing scenario and Proposed scenario, traffic-study and financial/economic appraisal evidence, land and clearances, and consultation with other agencies. Use Add observation / reply for each committee comment, its response/action, evidence reference and stated closure status. These entries give the presentation a traceable review record; a typed closure status is not an independent verification of closure. Save them with the same shared export settings.

In PEC / DPR studies and slide sequence, choose Detailed DPR / PEC review or NPG / network planning review. Additional proposal particulars accepts reviewed total track length, completion cost in INR, FIRR/EIRR percentage points and the appraisal reference for the opening proposal table. Use Study table template and Add study table to include project particulars, alternative comparisons, station facilities, bridges and tunnels, GIS constraints, land, commodity traffic, capacity, cash flows, sensitivity, implementation or consultation records. The templates provide headings with no example client figures. Paste an Excel range including its header row, or CSV, then choose Preview study table. The preview shows eight rows; the presentation includes every row with repeated headers and continuation slides. Add the study source, interpretation and its order within the chapter.

Mark numeric columns and select an optional editable column or line chart. Choose the category column and the series with consistent units. Declare units under Column types when needed. Missing observations remain gaps; explicit zeros remain zero. A series with no numeric observations or incompatible units is retained as a table; the preview explains why its chart is omitted. RAD does not calculate or infer traffic forecasts, FIRR or EIRR. Study tables and their references are retained by Apply export settings and Save project. Empty studies do not create placeholder slides; outstanding evidence is grouped at the end.

Expand Maps, station plans, drawings and project photographs to add local PNG/JPEG figures in batches, up to 10 MB each and 80 MB in total. Include the approved location and network maps, alternative plans, station drawings, GADs, tunnel sections, traffic maps and site photographs relevant to the project. Assign each figure to a section, enter its title, drawing/source reference, caption and order within that section. Every figure gets a slide with its full aspect ratio preserved. Related study beside figure pairs a compact table with the map or drawing when it fits legibly; larger tables continue separately. Remove individual figures when needed. Images are embedded in that presentation download; select them again after reopening the dialog.

Choose a coordinated document layout

Project presentation dialog with Executive review selected and a live document layout preview 1 2 3
  1. 1 Choose one of six document layouts before preparing the export.
  2. 2 The preview explains the visual treatment. Its demonstration blocks are not project quantities.
  3. 3 Download the actual project in the selected layout after completing the issue details.
Figure 16.3 — Document layouts. Executive review selected in the project presentation dialog. Word/PDF publication and tender dialogs offer the same named layout choices.

The Document layout selector shows six visual templates with a live Document layout preview. Choose the layout before downloading; its colour palette, typography, cover and section treatment apply to the supported document. The project data, quantities, rates, scope gaps and review findings remain the same across layouts.

LayoutCharacterCover / sections
Railway corporateNavy and teal with a clear engineering hierarchy and a vertical cover accent.Vertical accent / Rule and heading
Executive reviewInk, warm ivory and restrained gold with an editorial cover for decision meetings.Editorial / Numbered sections
Infrastructure deliveryGraphite and burnt orange, strong section bands and compact technical schedules.Horizontal band / Section bands
Landscape and sustainabilityForest and sage with generous spacing for land, environment and corridor discussions.Editorial / Rule and heading
Technical submissionCobalt and slate, numbered sections and compact evidence tables for detailed review.Vertical accent / Numbered sections
Print and tenderA restrained grayscale layout with economical bands for printed review copies.Horizontal band / Rule and heading
OutputWhat the layout changes
Project presentation (.pptx)Cover and section layouts, typography, tables and engineering infographic presentation.
Feasibility / DPR (.docx, .pdf)Report covers, headings, tables and infographic appearance. Choose Word or PDF in the publication dialog.
EPC draft (.docx)Document cover, headings, table and infographic styling; contractual content still requires completion.
Estimate justification report (.docx)Report cover, section hierarchy, evidence tables and cost/route infographic styling.
Tender schedules (.xlsx)Coordinated font, header and row-band palette. The workbook sheets, formulas and payment inputs stay equivalent.

Project presentation, estimate justification and tender dialogs can retain the layout with their shared export settings: choose Apply export settings, then Save project. A project without saved settings starts with Railway corporate. The separate feasibility and DPR publication dialogs retain their own export controls. Templates are RAD presentation choices and do not imply a prescribed Railway Board submission format. Other CSV, interchange and drawing exports retain their own established formats.

Explain the estimate to the client

Choose Output → Export deliverables → Estimate justification report to prepare an editable narrative in Word. This Pro export explains why the work and estimate provisions are needed, alongside the current applied route, quantities, head-wise costs and their source evidence. It complements the detailed estimate and tender schedules.

  1. Enter the employer and revision. Expand Estimate justification and evidence and supply the Estimate / sanction reference, Price level / rate date, purpose, authority/survey background, estimate coverage, construction period and basis, necessity, scope, quantity basis, rate sources, land provision, other charges, exclusions and the recommendation or decision required.
  2. If revising an earlier estimate, enter its amount in INR, date and reference, with the reasons for change. A blank previous estimate is unknown; do not enter zero to stand for missing evidence.
  3. Expand Head-wise estimate justification to explain the physical provisions, quantity and rate changes, and drawing/source references for each estimate head.
  4. Open Review BOQ / EPC allocation and choose Load allocation review. Review the suggested package for each estimate item and record contract-specific exceptions.
  5. Choose Apply export settings, then Save project if these particulars should be available next time. Applying settings changes the project and is subject to its normal editing controls. Downloaded Word or Excel edits do not write back into the project.
  6. Choose Download justification .docx. Check the explanation, rate and measurement evidence, cost reconciliation and outstanding items before submitting it to the client. The same download is also available in Tender schedules & EPC draft.

Missing quantities, rates or explanatory evidence remain identified in the report. Generated indicative rates are distinguished from saved detailed estimate rate sources. Entering a preparer, checker or approval authority name records a name only; it does not certify an estimate, record a sanction or establish that review has taken place.

Schedule G / G1 and the EPC preparation draft

Tender export dialog with employer, revision, tender reference, shared justification settings and Excel and Word download buttons 1 2 3
  1. 1 Identify the employer and revision for the draft; demonstration data is clearly named.
  2. 2 Enter the actual tender reference and approved completion period. Blank fields remain to be completed.
  3. 3 Apply shared settings or download Excel schedules, the justification narrative and EPC draft.
Figure 16.4 — Tender export preparation. Current dialog over an applied demonstration alignment, with justification notes, allocation review and saved export settings. The output needs scope, commercial and engineering review before issue.
  1. Choose Export → Tender schedules & EPC draft. Enter Prepared for / employer, Revision, Tender reference and the Approved completion period. These deliverables require Pro.
  2. Expand Review BOQ / EPC allocation and choose Load allocation review. Confirm the suggested scope and record any whole-item overrides before downloading.
  3. Choose Download schedules .xlsx. It separates Civil, Electrical/OHE and Signalling & Telecommunications, retaining the source quantity and rate basis, EPC scope, separate BOQ and items still requiring allocation review.
  4. Review Schedule G stage/payment allocations against the adopted component prices. Enter the approved stage weights; do not assume a default percentage is a contract rule.
  5. Review Schedule G1 itemised BOQ work separately. Reconcile inclusions and avoid counting the same scope in both the EPC price and a separate itemised payment.
  6. Choose Download EPC draft .docx and complete employer details, dates, eligibility, securities, terms, approvals and annexures using the applicable issued tender.

Review the EPC and separate BOQ boundary

BOQ and EPC review panel with priced subtotals, per-item allocation selector, review notes and Apply export settings 1 2 3
  1. 1 EPC, BOQ and unresolved totals show priced amounts and unpriced item counts separately.
  2. 2 Review each suggested allocation; use an override and note for a contract-specific exception.
  3. 3 Apply the settings, then save the project to retain the decision across exports.
Figure 16.4a — Shared scope review. A demonstration estimate; the actual split comes from the current project and its reviewed overrides.
ScopeSuggested allocationReview required
Bridge foundations and substructures; ordinary project retaining walls and toe wallsSeparate BOQ / G1Confirm the measured component and the applicable contract.
Other identified works, including bridge superstructure and building/OHE foundationsEPCReview project-specific inclusions and exceptions.
Combined bridges, culverts, mixed wall assemblies or ambiguous descriptionsReviewSupply measured component items or an explicit reviewed whole-item allocation. No percentage split is guessed.
Land, preliminary expenses and separate project chargesReconciliation outside automatic works allocationConfirm whether and how the contract treats each provision.

This starting convention follows the user's recent project packaging; the issued contract can require a different allocation. An override moves the whole estimate item and does not split or reprice it. Prepare separate measured component items when one aggregate contains both BOQ and EPC work. Unresolved allocation and unpriced work remain visible; neither is silently added to both packages. Valid zero values and signed credits retain their meaning.

A changed work description, component or unit invalidates an earlier inferred classification or fingerprinted override and returns that item to review. Recheck the scope and choose its allocation, or use Confirm for current item for a previously saved choice. Quantity and rate changes preserve the allocation; their current values are used at export time.

Use Apply export settings and Save project to retain the reviewed allocation. The Word justification, EPC draft and project presentation use the same scope result. Recheck the allocation when the source estimate changes. Schedule G's adopted contract price and milestone weights still need explicit employer-approved inputs; the estimate split alone does not approve a contract price or payment percentage.

Preparation documents

These exports are editable working documents, not an issued or legally complete EPC agreement. Missing quantities, rates, scope, payment weights and commercial particulars must remain visible for review. The latest applicable Railway Board model, amendments and the employer's prescribed schedules govern the final document; schedule numbering alone does not establish compliance.

CAD drafting in project coordinates

Actual CAD workspace with a 300 by 10 metre island platform template rotated 20 degrees on dedicated layers 1 2 3 4
  1. 1 Open Templates or import DXF / DWG; the toolbar also provides drawing and history commands.
  2. 2 The inserted component has dedicated geometry and annotation layers; visibility and locks remain editable.
  3. 3 A dimension records the length in project metres. This platform is demonstration geometry.
  4. 4 Exact coordinates, grid/object snaps and Ortho control placement. Save project retains the drawing.
Figure 16.5 — CAD drafting. An island platform template, 300 m long and 10 m wide, inserted at a 20° rotation. These CAD entities do not change the engineered alignment model.

Choose Alignment → CAD drafting to prepare railway layout details and annotations in project metres. Use the alignment as a reference, organise geometry on layers, and draw lines, polylines, rectangles, circles, arcs, text and dimensions. Snaps and numeric properties help place and check details. Enter exact coordinates as E,N or relative coordinates as @dE,dN; F8 toggles Ortho. Use endpoint, midpoint, centre, quadrant or grid snaps as appropriate. Save the project to retain the CAD drawing in its .rads file.

Use the CAD workspace to develop station or platform outlines, access arrangements and review markup. Imported geometry must use compatible units and coordinates. Export DXF or DWG for CAD exchange, and SVG for a vector drawing; these exports require Pro. Import DXF / DWG preserves supported planar geometry, including ellipses, splines and hatch loops. Block inserts and arrays expand into editable geometry; multiline text and dimension graphics are flattened. The import report identifies expanded content, approximations, conversion warnings and skipped entities. Check that report and the source drawing before adopting the result.

DWG conversion runs locally through the packaged WebAssembly adapter. Conversion is not a promise of complete AutoCAD fidelity: 3D solids, meshes, external references and proxy objects remain outside the supported editing model. Native block/dimension associations, font placement, layouts and advanced multiline-text formatting require review. Drawing or moving a CAD line does not itself change the computed alignment, bridge design or engineering quantities.

Drawing import report after local DWG conversion showing expanded block inserts, text approximations, skipped entities and conversion review notes 1 2 3
  1. 1 Imported blocks and arrays become editable entities. This example expanded three INSERT references.
  2. 2 Sheared and mirrored text need comparison with the source. An approximation is reported separately from a skipped entity.
  3. 3 Review the codec warnings and local DWG conversion notes even when no entities were skipped.
Figure 16.6 — Drawing import report. Actual local DWG import with transformed blocks. A successful read does not by itself establish complete source-drawing fidelity.

Insert a reusable railway component

Railway drawing template library with island platform dimensions, insertion coordinates, rotation and generated preview 1 2 3 4
  1. 1 Search or choose a category, then select the component variant.
  2. 2 Edit the model dimensions and labels; the preview regenerates from these values.
  3. 3 Set project coordinates and rotation. Drawing extents include the rotated annotations.
  4. 4 Insert the component as editable geometry in one Undo step.
Figure 16.7 — Railway component library. Parameterised island platform example. The component remains a drafting schematic; tracks, offsets and clearances require their own design.
  1. In CAD drafting, choose Templates. Search the library or filter a category.
  2. Choose a variant, then edit its labelled dimensions. Geometry uses project metres; track gauge fields explicitly use millimetres, and title-block scale uses a 1:N denominator.
  3. Inspect the generated preview and its drawing extents, including annotations. Enter the insertion Easting, Northing and counterclockwise Rotation.
  4. Choose Insert editable template. The component is added on dedicated layers as editable CAD entities in one Undo step. Save the project to retain it.

The library contains schematic starting points for layout coordination and drafting. A turnout symbol does not generate a switch design; a clearance-study outline does not encode an adopted SOD; a bridge or retaining-wall section does not establish structural capacity. Template-specific review notes identify the intended scope. Edit the drawing to match the adopted design.

44 editable components across 8 categories, generated from the actual library catalogue.

CategoryAvailable variants
Track and junctionsSingle-track straight · Double-track straight · Triple-track straight · Left-hand turnout schematic · Right-hand turnout schematic · Single crossover schematic · Scissors crossover schematic · Buffer-stop end-of-track symbol
Stations and buildingsSide platform outline · Island platform outline · Equipment-room outline · Station building · three bays · Station building · six bays · Platform shelter plan · Foot overbridge and stair footprint
Bridges and structuresSingle-span bridge plan · Multi-span bridge plan · Single-cell box culvert section · Twin-cell box culvert section · Triple-cell box culvert section · Gravity retaining-wall section · Cantilever retaining-wall section
Electrical and OHEOHE single-mast cantilever elevation · OHE portal elevation · OHE headspan elevation
Signals and equipment2-aspect signal elevation symbol · 3-aspect signal elevation symbol · 4-aspect signal elevation symbol · Ground/shunt signal symbol · Equipment cabinet elevation · Twin equipment cabinet elevation
Drainage and crossingsTrapezoidal drain section · U-drain section · Covered cable-trough section · Road crossing plan schematic
Clearance studiesRectangular clearance-study envelope · Chamfered clearance-study envelope
Sheet and annotationsA1 landscape drawing frame · A3 landscape drawing frame · North arrow · Four-point north marker · Segmented metric scale bar · Chainage leader and marker · Drawing notes panel

Title blocks are model-space frames converted from paper millimetres at the entered scale; they do not create a paper-space viewport or set printer scaling. Scale bars have actual model-space lengths. Chainage labels and drawing annotations are editable text rather than live links to the alignment model.

The packaged deliverables

DeliverableWhat is inside it
Full Report (.xlsx) One workbook carrying the cover, setting out, curves, vertical curves, structures, earthwork with the mass-haul balance, land acquisition pegs, the land boundary and its detail, the signalling and interlocking schedule and the compliance report — each sheet with a frozen header, a filter, banded rows and columns wide enough to read. Numbers go in as numbers, so a column will sum, chart and sort. There is no spreadsheet library: an .xlsx is a ZIP of XML parts and both halves are written by hand, which is what keeps the page independent of a spreadsheet application.
Feasibility Report (.docx, .pdf) The package report the tender goes out with, as a Word document: the particulars page, the stations with the points and crossings each yard carries, the bridges by category with the span arrangement of every one, the tunnels, the buildings, the traction arrangement, the standard of interlocking, the land, the priced abstract and the register of assumptions. The schedules are real Word tables whose header row repeats across a page break; the headings are real heading styles, so the contents page builds itself on opening and your own office template can be dropped over the document without touching a paragraph. Sections no alignment can fill are marked in place rather than invented. As with the workbook there is no library behind it — a .docx is a ZIP of XML parts, written through the same ZIP writer. Choose Word or PDF in the publication dialog; the Word version remains editable. The report is also available as Markdown under the raw exports.
Detailed Project Report (.docx, .pdf) The DPR publication dialog offers Word or PDF, issue particulars and the six document layouts. It assembles the saved engineering evidence, quantities and cost basis; missing scheme-specific investigations and approvals remain visible for completion.
Cost estimate (.xlsx) The active project estimate. A detailed bill carries component and head abstracts, item measurements, pinned rate sources, analyses, stores and project charges. To export an unapplied draft or one component, use the detailed editor's Excel/CSV commands instead. See Chapter 13.
Bridge GAD sheets A1 general arrangements for saved bridges and current proposals, including plan, elevation, actual sections, schedules, wall details and title blocks. Preview and select a bridge, or export all bridges as PDF. See Chapter 11 for units, print scale and design limitations.
Plan & Profile CAD (.dxf) The 5 km Final Location Survey sheet packages of Figure 15.4 — an annotated plan sheet, not bare geometry.
Station Yard Conceptual Plans (.dxf) Running lines, loops, sidings and necks; island and side platforms with clearance envelopes; 1 in 8.5 and 1 in 12 turnouts with fouling markers; crossovers; the station side; signals and station limits, drawn and chainaged.
Cross-sections (.dxf) The line across rather than along: every section of the run, plotted in a grid a sheet over its own datum, with the natural surface, the works line and its setting-out points, the cut and the fill hatched, the blanket, ballast, sleeper and rails, the channels as the cast units they are, the bore where the line is driven and the deck where it is carried, a graticule figured in levels and offsets, and under each one the datum, the rail and formation levels, the areas and the land width. The plotting scale is not baked in — the widest and tallest section in the set choose the finest scale off a standard ladder at which the sheet still fills, and every sheet says which scale that was. Horizontal and vertical are equal, because an exaggerated vertical makes every batter a lie. Drawn from the same run as the section schedule and generated estimate. An imported detailed bill remains a fixed snapshot and must be reviewed after the section design changes.
Project Sheets (interactive) The same sheets on screen, with zoom, pan and paging, before anything is exported.
Google Earth 3D Model (.kml / .kmz) Terrain-clamped centreline, a 3D rail elevation ribbon, boxed kilometre posts and station yard footprints, for walkthroughs and stakeholder presentations.

When a detailed estimate is active, the feasibility/DPR cost summaries use its named components, head totals, charges and GST, with missing/unpriced items and provisional status carried into the report. They do not infer a bridge sub-breakdown from a custom component name. Confirm the active bill and its date before publishing a report.

The schedules

CSVContents
Setting-out tableChainage, easting, northing, rail level, radius, cant, bearing, grade, cut/fill — at the interval you name. Tangent points, summits and low points are always included whatever the interval.
Horizontal curve scheduleFull geometry per curve: deflection, tangent lengths, shift, arc length, all four tangent-point chainages, cant and the governing criterion.
Vertical curve scheduleGrades, curve lengths and radii, BVC/EVC, mid-ordinate, turning points.
Cut & fill reportEarthwork by reach, with the mass-haul balance.
Compliance reportEvery finding with its measured value, limit, units, rule title, category, clause reference and remedies — plus a footer naming the strictness mode and any rule the project has overruled.
Station & yard scheduleEvery station, its yard, loops, platforms and standing lengths.
Signalling & interlocking scheduleEvery point with its number and how it is worked, every signal with what it reads over, berthing lengths, and the equipment the standard of interlocking asks for.
Bridges & structures scheduleEvery structure with its type, span arrangement, skew and chainage.
Earthwork structures / quantitiesWhat is built where, and how much of it.
Land acquisition schedule
Land boundary schedule
The banded boundary offsets and the areas they buy — both what the toe line plus margin covers and what the banded schedule acquires.
Mass haul scheduleHaul, borrow and waste.
Speed restrictionsWhere the geometry permits less than line speed, and why.
Abstract of costThe general abstract on plan heads, cash and stores.
Hydrology & crossingsCatchment in km² from D8 accumulation, Dickens and Lacey figures, span arrangements, and the consolidated road over/under schedules after minor roads have been rationalised into grade-separated crossings.

Interchange

FormatContents and destination
LandXML 1.2CoordGeom with Line, Spiral and Curve elements and a ProfAlign profile. Reads into Autodesk Civil 3D, Bentley OpenRail and 12d Model.
DXF (R12)Centre-line 3D polyline, land boundary offset either side, IP legs, the four curve points marked T1/J1/J2/T2, CH:nnnnnn chainage ticks, gradient markers, structure callouts carrying the skew, and a curve data box per curve. Named layers, real-world metres, R12 so that nothing refuses it.
Project file (.rads)Complete round-trip save file with JSON content. See Chapter 21.

The narrative report

The draft report panel in the workbench
Figure 16.8 — The draft report, assembled in the workbench from the model as it stands, with the gaps listed rather than written around.

Separately from the schedules, report.js writes the document that goes in the envelope, with every figure read from the model at the moment of writing so the prose cannot drift from the schedules annexed to it. It refuses to write what the model does not know, and lists those gaps rather than leaving them to be noticed. Its best page is the register of assumptions, gathered from every module — the page a hand-written DPR always omits, because whoever writes it does not have them all in front of them.

Chapter Seventeen

Working with other people

Your account keeps cloud projects, sharing permissions and plan access together. Projects can also be saved as local files. Free includes the design workspace; Pro adds the features identified by a PRO tag.

Accounts

Way inBehaviour
PasswordAt least eight characters, checked in the browser before anything is sent. The password never leaves the request that carries it: it is not written to storage, not held on any object, and not logged.
A link by emailNothing to choose or remember, and the one route in that cannot be phished out of somebody.
RecoveryResolves identically whether or not the address has an account — the interface must not become a way of testing who is registered here.

Signing out empties the workspace and puts the gate back: the alignment, the cloud id, the save target, the undo history and the autosave draft all go — that last one especially, because a draft left behind would have been offered back by name to whoever opened the application next.

Requesting Pro access

Open Explore Pro from your account or profile to submit an access request. You can add a short message, see the request status and cancel a pending request. An administrator reviews it; submitting a request does not activate Pro. After approval, use Refresh access to read the current plan and expiry. Decision notes from the administrator are shown with the request. This workflow does not take payment or send an email.

Authorised administrators use /pro-admin with a separate sign-in. Approvals default to 365 days, with 30 days, 90 days and no expiry also available. The database controls who may approve or revoke access. See the approval setup guide for the required migration and administrator configuration.

The project hub

The header account menu’s Project hub opens My projects and Shared with me. Both are the same list from the database — row level security answers with your own projects and with anybody else's that has been handed to you, and the only thing telling them apart is who owns it. Each row carries what the project is (length, standard, where on the earth, the revision, when it was last touched) and who else is in it — shared with 2 people, or from Asha Rao · can edit. A box filters by name, because a hub that is useful is a hub with too many projects in it to read.

Sharing

Pro is required to share a project or create a read-only review link. The project owner and each participating editor need active Pro access for shared-editor writes and live team editing. Owners can still edit and save their own projects on Free. Read-only viewing stays free. Existing review links stay available until their normal expiry or revocation. Cloud comments, replies and review updates also require Pro for the owner and participant; reading existing comments and local notes stays free. Removing access, revoking a link and leaving a project stay available after Pro expires.

LevelWhat it allows
Can viewThe project opens read-only. Saving does not write back; it asks where to put it and makes a project of their own.
Can editSaving writes back to the same project, into the same revision history, exactly as the owner's would.

Only the owner can delete a project, change who has it, or share it onward. Being handed a project is not being handed the right to destroy it, and the database policies say so: an editor may write the document but never take it. An address with no account yet is not a refusal — it is held as an invitation and becomes a real share the moment somebody registers with that address. Nothing has to be accepted at the other end.

A deliberate disclosure

Sharing tells the owner whether the address they typed has an account, which is a way of testing whether an address is registered here. That is made deliberately: somebody who has just handed a colleague a design has to know whether the colleague can open it now or has to sign up first. It is available only to a signed-in account, and only for a project that account owns. Recovery, where there is no such need, stays deliberately silent.

Your profile

The profile page
Figure 17.1 — The profile page. The panel in the designer stays what it was — sign in, change a name, get out of the way. The page is for everything that wants room: who you are, what you have built, your work on both shelves, and the account itself.

Every figure on it is read off the rows the hub already fetched, and none of them are flattering by construction: a project that has never been solved is counted as unmeasured rather than as zero kilometres. A field nobody filled in is left out of the page rather than filled with a placeholder that reads like somebody's own words.

Deleting the account outright is the one thing the page says it cannot do. The key the browser holds identifies the project and grants nothing beyond what row level security already allows, and removing an account is an administrator's operation on the auth schema — so the page says so, and says what it can do instead, rather than offering a button that fails.

Review, and what changed

Comments are anchored to a place in the design — a chainage, a fraction along, and the revision they were written against — so when the design moves and the two readings stop agreeing, the comment is flagged rather than silently re-pointed. What changed compares two saved states at three altitudes at once: what a person changed, what it did to the line, and what it did to the quantities and the cost, with a rule that has been turned off first in the list.

Part Three

Reference

  1. Keyboard and the command palette
  2. The compliance code catalogue
  3. Design standards and limits
  4. File formats and schemas
  5. Architecture and the module map
  6. Verification, and rebuilding this manual
  7. Deployment, server routes and the cloud half
  8. Troubleshooting
  9. Limitations, and professional responsibility

The part to keep open beside the work: every code, every key, every column, and the honest statement of what none of it is entitled to claim.

Chapter Eighteen

Keyboard and the command palette

The command palette

The command palette open over the workspace
Figure 18.1 — Ctrl+K. Fuzzy search over every command in the application, grouped by VIEW, TOOLS and FILE, with the keyboard shortcut beside anything that has one. A match at the start of a word beats one in the middle, consecutive characters beat scattered ones, and something used a minute ago breaks a tie without overturning a better match. It opens from inside a text box and over an open dialog, because it is how somebody who cannot find a thing finds it.

Editing

FZoom to extents
Tab / Shift+TabNext / previous point
DeleteDelete the selected IP
↑ ↓Step a numeric cell (Shift = ten steps)
[Fold the side panel to its icons

Files

Ctrl+ZUndo
Ctrl+Shift+ZRedo
Ctrl+SSave
Ctrl+OOpen
Ctrl+KFind any command

Views

wheelZoom · drag the background to pan
drag a pointReshape in plan, or a VIP in profile
Shift+dragIn profile, level without chainage
Shift+wheelIn profile, vertical exaggeration
Shift+FPlan full screen (Esc leaves)
double-clickInsert an IP in empty plan space, or a grade break in the profile
DeleteRemove the selected IP or grade break
CCompliance

Original Cab ride

spaceRun or stop
1 2 3Cab, chase, orbit
← →Nudge 25 m (Shift 250 m)
, .Previous / next feature
Home EndEither end
R · LReverse · look ahead again
HSound the horn
F · S · EscFull screen · save frame · close the open panel, then the window
A dialog owns the keyboard

While a dialog is open, a bare letter typed into it reaches it rather than the plan behind. The cab ride's keys reach the ride, not the workspace.

Chapter Nineteen

The compliance code catalogue

Reference codes in the twelve categories the report groups them into, each with the reason the limit exists. These entries come from the catalogue the Why? button reads from, and the same code strings that appear in the exported CSV.

How to read this

A code's severity is not fixed here: the standard preset decides whether a given breach is an error or a warning, strict mode promotes every warning to an error, and a per-rule override can re-grade or silence it for one project. Anything overridden is listed above the report and in the CSV footer.

Geometry closes — 12 codes

CodeTitleWhat it protectsClause
TOO_FEW_POINTSNot enough pointsAn alignment needs a start, an end and something in between before any geometry can be solved.—
IP_NO_RADIUSIntersection point without a radiusA deflection with no radius is a kink: the track would change direction instantly.—
LS_TOO_LONGTransitions longer than the curve allowsThe two transitions plus the arc have to fit inside the deflection. Beyond Ls1 + Ls2 = 2·R·Δ there is no curve left for them to join.—
IP_OVERLAPCurves overlapTwo curves want the same length of track. The tangent lengths are longer than the leg between them.—
START_TOO_CLOSEFirst curve runs off the startThe first curve begins before the start of the alignment, so part of it has nowhere to sit.—
GEOMHorizontal geometry errorThe horizontal solver could not close the chain.—
TOO_FEW_VIPSNot enough vertical pointsA profile needs at least a start and an end level.—
VIP_DUPLICATETwo vertical points at one chainageTwo levels at the same chainage make the profile ambiguous.—
VC_OVERLAPVertical curves overlapNeighbouring vertical curves want the same length of track.—
VC_PAST_ENDVertical curve runs past the endA vertical curve extends beyond the end of the profile.—
VC_BEFORE_STARTVertical curve starts before the profileA vertical curve begins ahead of the first vertical point.—
PROFILEProfile errorThe vertical solver could not build the profile.—

Horizontal — 11 codes

CodeTitleWhat it protectsClause
MOUNTAIN_CLEARANCEMountain return clearanceNon-adjacent parts of the alignment enter the same track envelope without the required vertical separation.Design requirement
R_MINRadius below the minimum for the design speedRadius, cant and cant deficiency are one equation. Below this radius no applied cant keeps the deficiency inside the comfort limit at the design speed.IRPWM 405 / EN 13803 §6
R_MIXEDRadius cannot serve both speedsOne cant has to satisfy the fast train’s deficiency limit and the slow train’s excess limit at once. Below this radius the two windows do not overlap, so no cant works.IRPWM 406 (cant for mixed traffic)
R_ABSRadius below the structural minimumThis is a vehicle and structure-gauge limit, not a comfort one — below it rolling stock will not negotiate the curve at all.Schedule of Dimensions
ARC_SHORTCircular arc too shortA very short arc between two transitions gives the vehicle no time to settle, and is hard to maintain to alignment.IRPWM 407 / EN 13803 §7
OVERLAPCurves overlapTwo curves cannot occupy the same track.IRPWM 407
NO_STRAIGHTNo straight and no transition pair between curvesWhere two curves meet, the cant has to get from one value to the other. With neither an intervening straight nor a transition each side, it would have to step.IRPWM 407 / EN 13803 §7
STRAIGHT_SHORTStraight between curves too shortA short straight between curves — especially a reverse — is felt as a lurch, because the lateral acceleration reverses before the vehicle has stopped rolling.IRPWM 407 / EN 13803 §7
REVERSE_OKReverse curve, transitions meetingTwo transitions meeting end to end at zero cant is an accepted way to build a reverse curve.IRPWM 407
ARC_CONTINUESOne arc carried across two intersection pointsA curve turning through more than a right angle — a loop in a hill section — is set out from more than one intersection point. Where two curves of the same hand, radius and cant meet with no straight and no transition between them, they are one circular arc, and the cant carries straight through the join.—
R_RATIOCompound curve radii too differentWhere two same-hand curves join without a straight, the jump in curvature — and so in lateral acceleration — is proportional to the difference between 1/R₁ and 1/R₂.IRPWM 407 (compound curves)

Cant and comfort — 4 codes

CodeTitleWhat it protectsClause
CANT_MAXApplied cant over the maximumCant is limited by what a train stopped on the curve can tolerate: too much and the load shifts onto the inner rail, and freight can shift or overturn in a high wind.IRPWM 406 / EN 13803 §5
CD_MAXCant deficiency over the maximumDeficiency is the unbalanced lateral acceleration the passenger feels and the outer rail carries. It governs both ride comfort and the lateral force on the track.IRPWM 406 / EN 13803 §5
CE_MAXCant excess over the maximumSlow traffic on a curve canted for fast traffic leans into the inner rail, wearing it and loading it beyond what it is designed for.IRPWM 406
VIRT_TRANSCurvature step with no transitionA curve entered without a transition steps straight from no curvature to full curvature. The vehicle bridges that step over its bogie centres — the "virtual transition" — and the deficiency builds over that short length instead of over a designed one.EN 13803 §8 (virtual transition)

Transitions — 5 codes

CodeTitleWhat it protectsClause
NO_TRANSCant with no transition to run it inCant has to be applied along a ramp. With no transition the ramp has no length, so the cant would be a step in the rail level.IRPWM 407
LS_SHORTTransition shorter than requiredThe transition length is the longest of three requirements: running the cant in slowly enough, running the deficiency in slowly enough, and keeping the cant ramp flat enough.IRPWM 407 / EN 13803 §8
DCANT_DTCant changes too fastHow fast the vehicle is rolled about its axis. Above the limit the roll is felt as a sway, and the wheel unloading on the twisting bogie rises.IRPWM 407 / EN 13803 §8
DCD_DTCant deficiency changes too fastThe rate at which unbalanced lateral acceleration builds — the lateral jerk. It is what makes an otherwise compliant curve feel abrupt.EN 13803 §8
CANT_GRADCant ramp too steepThe cant ramp twists the track. Too steep and a long, stiff vehicle lifts a wheel — the twist criterion behind most derailments on good track.IRPWM 407

Vertical — 6 codes

CodeTitleWhat it protectsClause
NO_VCURVEGrade change with no vertical curveA change of gradient without a curve is an angle in the rail: a vertical impact at every wheel, and on a crest a loss of wheel load.IRPWM 419
RV_MINVertical radius below the minimumThe vertical radius sets the vertical acceleration at the design speed — upward through a sag, and unloading the wheels over a crest.IRPWM 419 / EN 13803 §9
AV_MAXVertical acceleration over the limitV²/Rv is what the passenger feels in the seat and what changes the wheel load. It is the quantity the minimum vertical radius is derived from, stated directly.EN 13803 §9
VC_SHORTVertical curve shorter than the minimum lengthIndependently of radius, a vertical curve too short to span a vehicle is not a curve the track can be built or surveyed to.IRPWM 419
V_OVERLAPVertical curves overlapTwo vertical curves cannot occupy the same length of track.IRPWM 419
V_COVERProfile does not cover the planLevels outside the surveyed profile are extrapolated from the end gradient, which is a guess, not a design.—

Gradients — 6 codes

CodeTitleWhat it protectsClause
MOUNTAIN_TIE_LEVELMountain endpoint level movedMountain development holds its endpoint rail levels fixed.Design requirement
MOUNTAIN_GRADEMountain compensated grade exceededThe solved profile, including vertical curves, exceeds the gradient remaining after curvature compensation.Design requirement
GRADE_MAXGradient over the ruling gradientThe ruling gradient fixes what a locomotive can haul over the section. Exceeding it derates every train on the route, not just the ones on this length.IRPWM 402
GRADE_COMPGradient not compensated for curvatureA curve adds resistance. On a gradient inside a curve the two add, so the gradient has to be eased by roughly 0.04% per degree of curve to keep the total within the ruling value.IRPWM 403
GRADE_SHORTGradient section too shortA run of very short gradients makes a train surge and snatch as the couplers load and unload, and gives the profile no useful shape.IRPWM 402
GRADE_LONGGradient runs too far without a breakA gradient held for tens of kilometres asks a locomotive to work at its continuous rating for the whole of it, and no ground is straight for that far — so where the ground departs from the grade line, structure is what carries the difference. Breaking the gradient lets the profile come back down to the ground it can reach, which is how a line is developed through hill country rather than carried across it. Only a gradient pulling a real share of the ruling gradient is counted — ten kilometres at 0.03% across a plain is flat country, not a long climb.Project limit

Coordination — 1 codes

CodeTitleWhat it protectsClause
V_ON_TRANSVertical curve over a transitionA vertical curve on a transition twists the track while the cant is already running in. The two twists add, and the total is what lifts a wheel.IRPWM 419 (desirable practice)

Terrain and works — 13 codes

CodeTitleWhat it protectsClause
CUT_DEEPTunnel far deeper than the crossover depthReaching the depth at which a bore beats a cutting is the analysis doing its job. Reaching a multiple of it means the profile is being driven through a hill rather than round it, and the cost and the construction risk both climb with cover.Judgement
FILL_HIGHViaduct far higher than the crossover heightA structure this far above the ground is a major piece of civil engineering in its own right — deep foundations, long spans, and a construction programme of its own.Judgement
STRUCT_BEYOND_LIMITStructure past the limit this project setA structure past the height or the cover the project set is not a big version of an ordinary one: it is its own design problem, wanting its own ground investigation, its own erection scheme and its own programme. Nothing in a corridor study can stand behind a number for it, so the line as drawn is not one this can price or build.Judgement
GRADE_BOUNDStructure the grade line cannot come out ofThe line runs into this structure at the ruling gradient, so it is already coming down to the ground (or up to it) as fast as it is allowed to. The ground is going faster, and what makes up the difference is height of viaduct or depth of tunnel. Moving VIPs cannot help: lowering the rail here needs more line between the top and the bottom of the climb, about the excess height divided by the gradient.Judgement
STRUCT_ON_TRANSStructure spans a transitionCant varies along a transition, so a deck under one has to be built with a twisting surface, and bearings have to take the rotation. It is buildable, and expensive.Constructability
SECTION_NO_TOEBatter never meets the groundA bank tipped onto a hillside that falls away as fast as the batter does never finds a toe: the two surfaces are parallel and the fill runs on for ever. The same happens to a cutting driven into a rising hillside steeper than its own face. Neither is a bank or a cutting — it is a retaining wall, a viaduct, or a line somewhere else — and the volume reported for it is whatever the corridor width happened to cut it off at, which is not a quantity.Constructability
CUT_SLOPE_DESIGNCutting deeper than the material stands atEvery material has a depth beyond which a standard batter stops being a detail off a drawing and becomes a slope somebody has to design — benched, drained and analysed. Stiff clay left at 1 in 1.5 is fine at 8 m and a landslip at 20 m. The depth is not the problem; the depth WITHOUT an analysis is.Geotechnical judgement
GEOLOGY_ASSUMEDDeep works in ground nobody has looked atA deep cutting or a bore is where the ground actually decides the cost, and it is the ground least worth guessing about. A corridor-wide assumed material is the single rock percentage in a better coat: adequate over a plain, and not adequate under the one ridge that carries most of the excavation.Judgement
TUNNEL_DRAINGradient inside a tunnel too flat to drainWater gets into every tunnel. Below roughly 0.2% it does not run out, and standing water in the invert attacks the track and the lining.Judgement
TUNNEL_XPASS_SPACINGCross passages further apart than the requirement allowsCross passages are the way out of a running bore, and the requirement is a maximum of 500 m between them. Half that interval is how far a passenger walks along a smoke-filled tunnel from wherever the train stopped, so spacing them further apart saves money on the one thing that is there to save lives.Safety
TUNNEL_WATER_COVERTunnel passes under water body with insufficient rock coverTunnels beneath rivers, canals, or water bodies require adequate rock cover (typically at least 30 m) to prevent water ingress, hydraulic blowout, and crown collapse during construction and operation.Judgement & Safety
EARTH_BALANCECut and fill badly out of balanceMaterial that has to be imported or carted away is one of the largest single costs on an earthwork-heavy route, and it is set by the profile.Judgement
EXG_LEVELThe new formation is not at the level of the one it runs besideDoubling is a parallelogram of earthwork laid against the bank that is already there, widening it: one formation, one set of side slopes, one drainage system. A new line at a different level from the one beside it is not that. It is two railways with a retaining wall or a ditch between them, and it costs the wall, the land the wall stands on, and a maintenance problem for as long as both lines run. The existing level this is measured against is ESTIMATED from terrain unless a survey has been imported, so it is a screening figure: good enough to catch a grade line that has wandered several metres, not good enough to set a rail level by.Judgement

Crossings — 14 codes

CodeTitleWhat it protectsClause
UTIL_CLEARANCEPower line or pipeline does not clearEverything else the corridor meets is crossed by building something. A transmission line is crossed by leaving a gap, and the gap is set by statute. On a 25 kV line the clearance is measured over an overhead contact wire that is already 5.5 m up, so a line that comfortably cleared the road it was strung over may be nowhere near clearing a railway. Raising it means new towers, a longer span, an outage to string it, and a utility whose programme is not the railway's — which is a line in the estimate if it is found now, and the thing that holds up energisation if it is not.Statutory clearance
UTIL_ASSUMEDUtility crossing on an assumed rating or heightOpenStreetMap rarely records the voltage of a line and almost never records how high the conductor hangs at mid-span, which is the number the whole clearance turns on. An assumed voltage is taken high deliberately: assuming a crossing is low-tension and finding a 220 kV line is the failure that costs money, and assuming the reverse only costs a survey.Judgement
XING_CONFLICTCrossing the profile cannot clearThe formation is too close to the ground here for the road to pass either over or under. A level crossing is not permitted on a new line, so one of the two has to move.IRSOD / IRBM
XING_OVERRIDE_UNFITChosen crossing type does not fitThis crossing was set by hand to a type the levels do not support. The choice is kept — it may well be right, and the profile the thing that has to change — but the shortfall is real and has to be closed before it can be built.IRSOD
XING_PARALLELFeature clips the alignmentA road or watercourse meeting the line at a very acute angle is not crossing it, it is running alongside and touching. No structure resolves that; the two alignments conflict and one of them has to give way.Judgement
XING_MARGINALCrossing decided on a marginal clearanceThe clearance here is within a metre of the limit, and the ground level it rests on is a terrain sample accurate to a few metres at best. That is the wrong precision for the decision, so it should be settled on survey rather than taken from this.Judgement
XING_EXISTINGPasses under an existing road bridgeThe road is already on a bridge where the line meets it, so nothing new is built for it — the line goes underneath. Whether it fits depends on the height of that bridge, which the map does not give: the soffit is taken at the height a flyover over a railway is built to, and the span is not known at all. Both have to be measured before the crossing is relied on, and the opening has to have room for the new track beside whatever it already spans.Judgement
XING_SKEWOblique crossing needs a longer square openingThe crossing angle describes the mapped obstacle, independently of the proposed square bearing lines. A square bridge over an oblique corridor must cover the obstacle at both deck edges, with supports outside the required opening. Changing the structural skew field does not straighten a river or road.Project square-bridge policy
XING_SQUARE_UNRESOLVEDSquare bridge arrangement unresolvedThe automatic arrangement has not established a suitable square opening, approach, barrel or pier layout. No skew bridge or unconstructed road realignment is substituted for that missing design. Where only a survey is missing — flow-aligned piers or an oblique barrel — the preliminary square structure stands and this is a warning; where the levels, span or angle do not admit it, an error.Project square-bridge policy
EXG_CROSSThe new line crosses the existing main lineThe whole point of a second, third or fourth line is that it runs BESIDE the one that is already there. A new line that crosses the main line has bought a flyover or a burrow — two abutments, a pier line, an approach either side and a possession to build it in — and, far worse, it has put a conflicting movement into a block section that did not have one. Where a crossing genuinely cannot be avoided, a rail over rail flyover is what is built, and it should be a deliberate decision with a reason written beside it. Most of the time it can be avoided: the line leaves the station on the wrong side, and changing which side it leaves on costs a change of trajectory and nothing else.Judgement
EXG_SPACINGNot at a track centre anybody builds toThe Schedule of Dimensions puts the obligatory minimum between the centres of adjacent straight running lines at 4.265 m, and new construction is never laid to the obligatory minimum. 5.30 m is the figure for a new line beside an existing one; 6.10 m where the existing line has to be kept open to traffic while the new one is built, which is almost always. Anything much wider is not one formation widened but two railways with a gap between them: more land, more earthwork, a longer crossover at each end, and every overline structure spanning further for no benefit.IRSOD
XING_REPEATThe same feature crossed several timesA road or a watercourse running roughly where the railway wants to run gets woven across — over, back, over again — because the route was chosen on ground cost and nothing was counting structures. Each crossing on its own is reasonable; the set of them is not. Every one after the first is a bridge, an approach, a set of foundations and a maintenance liability bought for nothing, and the cure is almost always a change of trajectory well before the first crossing rather than anything at the crossings themselves. Where the feature genuinely has to be crossed twice — a highway that loops round the town the line is going to — twice is the right answer, and this is a question rather than a verdict.Judgement
XING_NO_GROUNDCrossing with no ground levelThere is no terrain at this chainage, so nothing can be said about whether the railway passes over or under. It is left undecided rather than guessed.Engine
XING_WATERWAY_DOUBTWaterway size cannot be trustedThe catchment behind this crossing was counted over the strip of terrain fetched for the corridor, and it does not fit inside it. Every figure that follows — discharge, waterway, span, class — is understated by an unknown amount. A large river is the worst case: its basin may be four orders of magnitude larger than the window, so the arithmetic will confidently return a culvert.IRBM

Stations & Yards — 8 codes

CodeTitleWhat it protectsClause
STN_YARD_GRADEStation yard gradient exceeds 1 in 400 SOD limitStation yards must not exceed 1 in 400 (0.25%) gradient to prevent uncoupled wagons and trains from rolling away downhill under gravity.IR SOD & IRPWM
STN_YARD_GRADE_RECStation yard gradient exceeds recommended 1 in 1200Recommended station yard gradient is 1 in 1200 (0.083%) or level for ease of shunting and starting heavy freight trains.IR SOD 2(b)
STN_WATERWAYStation yard placed across a waterway or major bridgeStation yards, turnouts, and platforms cannot be placed across major river bridge spans or open water.IRS & IRPWM
STN_VIADUCTStation yard placed on a viaduct structureStation loop lines and island platforms cannot be constructed along elevated viaduct runs.IRS & IRPWM
SIG_BERTHINGRunning loop too short to berth the train it has to crossA loop exists to hold a train clear of the main line while another passes. Its clear standing length is measured between its fouling marks, and a train longer than that stands foul of the running line however the signals are set. The loop is then unusable for the traffic the line is being built for.IRSEM & SOD
SIG_PLATFORM_PAST_STARTERPlatform runs beyond the starter signal on the line it servesA train berthed at the platform would be standing past its own starting signal, which is not a position a train may be brought to. Either the platform or the signal is in the wrong place, and the signal follows the fouling mark.IRSEM
SIG_LIMITS_STRUCTUREStation limits fall across a viaduct or major bridgeThe home and advanced starter signals define the station limits, and a signal has to be founded on the ground and read from a distance. A signal on a viaduct or over a river span is a special structure and a sighting problem, not a standard post.IRSEM & IRS
SIG_SIGHTINGSignal stands on a curve too sharp to be sighted from adequate distanceA driver must read a stop signal from far enough back to stop at it. On a sharp curve the signal is out of sight until the train is too close, and the answer is a repeater, a co-acting signal or a realignment — each of which costs money that belongs in the estimate.IRSEM

Land and consents — 9 codes

CodeTitleWhat it protectsClause
RESTRICTION_INTERSECTIONAlignment intersects a restriction zoneOfficial boundaries and OSM candidates retain their own source meaning. A mapped contact needs review.Source-attributed planning review
RESTRICTIONS_STATUSRestriction screening statusNot checked, pending, incomplete and historical results cannot establish a clear route.Coverage and freshness
ZONE_PROHIBITEDAlignment enters a prohibited areaThis ground was outlined and marked prohibited, which says construction is not permitted in it at all rather than that it is expensive. The statutory case is the AMASR Act 1958 §20A, where the 100 m around a protected monument admits no construction, public or private; a defence or safety exclusion behaves the same way. No weight in the cost surface resolves this, because it is not a price.Project constraint (see the zone note)
ZONE_REGULATEDAlignment enters a regulated areaBuilding here is permitted, but only with a consent from the authority named on the zone — the AMASR regulated belt of 200 m beyond the prohibited area is the pattern, where the National Monuments Authority decides. The design is not wrong; it carries an approval it will not get by default, and the programme has to allow for it.Project constraint (see the zone note)
ZONE_AVOIDAlignment crosses an area drawn to be avoidedAn area outlined with the avoidance tool was crossed anyway. The weight is a price, not a wall, so on a pinched corridor the search will pay it — which is the right behaviour and the wrong thing to discover by reading the drawing.Project constraint
ZONE_INCLUDE_MISSEDAlignment misses an area drawn to be picked upAn inclusion area is a discount in the cost surface, never an obligation: it biases the route towards the ground and cannot compel it there. Where the detour costs more than the discount is worth, the line goes straight past, and nothing said so.Project constraint
LAND_PROTECTEDCorridor takes protected or reserved landLand inside a national park, sanctuary, eco-sensitive zone or notified reserve cannot be acquired at all until it has been cleared centrally. That approval is not a step in the acquisition — it comes before it, and it is the item most likely to set the date the line opens.Wildlife (Protection) Act 1972 / Forest (Conservation) Act 1980
LAND_FORESTCorridor takes forest landForest land is not bought. It is diverted by the Union government, in a Stage-I and Stage-II process with compensatory afforestation attached, and the quantity matters because the sanctioning level rises with it.Forest (Conservation) Act 1980
ZONE_NO_GEOREFAreas are drawn but cannot be placed on EarthZones are drawn in the project plane. Without a georeference they can still be checked against the alignment, which is in the same plane, but nothing can be said about the mapped land use underneath them.Engine

Engine — 2 codes

CodeTitleWhat it protectsClause
MOUNTAIN_REQUIREMENTSMountain requirements changedThe current speed or ruling gradient differs from the accepted search.Design requirement
RULE_ERRORA compliance rule failed to runOne group of checks threw an error, so the design has not been fully tested. The rest of the report is still valid.—
Chapter Twenty

Design standards and limits

Six presets, every value of which is editable on the Design Limits tab of the considerations console. Editing a limit re-runs every check immediately.

Starting points, not certified values

The presets are taken from the usual sources and are not a substitute for the governing code of practice on any particular project. Check every number against your own specification before relying on it, and against the policy circulars governing your zonal railway or division.

Generated from the shipped standard presets. Project overrides are not included.

PresetBasis
IR-BGIndian Railways — Broad Gauge (1676 mm). IRPWM / SOD values for Group A–B routes. Cant equation C = G·V²/(127·R) with G = 1750 mm.
IR-MGIndian Railways — Metre Gauge (1000 mm). Metre-gauge limits; G = 1058 mm.
EN13803EN 13803 / UIC — Standard Gauge (1435 mm). EN 13803:2017 normal limits for V ≤ 200 km/h. Cant equation C = G·V²/(127·R) with G = 1500 mm.
AREMAAREMA — North American mainline (1435 mm). AREMA Chapter 5 practice, converted to millimetres (3 in ≈ 76 mm unbalance).
METROMetro / Urban rail (1435 mm). Typical urban-metro design limits — tight radii, generous cant deficiency, steep gradients.
HSRHigh Speed — 250–350 km/h (1435 mm). High-speed practice: large radii, restrained cant and cant deficiency for ride comfort.

The presets, side by side

LimitIR-BGIR-MGEN13803AREMAMETROHSR
Track gauge (mm)167610001435143514351435
Dynamic gauge G (mm)175010581500150015001500
Cant, normal (mm)16590160152110150
Cant, exceptional (mm)185100180178125170
Cant deficiency, normal (mm)10050130768580
Cant deficiency, exceptional (mm)10050153102100100
Cant excess (mm)7565110766090
Rate of cant, normal (mm/s)353550355040
Rate of cant, exceptional (mm/s)555570507060
Rate of deficiency, normal (mm/s)353550355040
Rate of deficiency, exceptional (mm/s)555590508060
Cant ramp, normal (1 in N)7207204005004001000
Cant ramp, exceptional (1 in N)360360250320250600
Ruling gradient (%)111.2513.52.5
Minimum gradient length (m)200150200150100300
Maximum gradient length (m)500050005000500050005000
Absolute minimum radius (m)1751001901751202000
Vertical radius, sag (m)4000250020002900150016000
Vertical radius, crest (m)4000250020001800150016000
Vertical acceleration (m/s²)0.30.30.350.30.450.22
Minimum vertical curve length (m)302020302040
Grade change requiring a curve (%)0.4—————
Compound radius ratio, max1.51.51.51.51.51.5
Virtual transition length (m)14.811.612.217.412.217.5
Tunnel drainage grade (%)0.20.20.20.20.20.2
Structure depth review factor222222
Transition rounding step (m)101055510

Minimum straight and circular-arc lengths also depend on speed; review the computed findings for the project design speed.

The Design Limits tab of the considerations console
Figure 20.1 — The Design Limits tab. Every value in the table above, editable for this project. Reset to standard puts the preset back.

What the design speed does

The minimum radius for a speed is not a table lookup: it is derived from the cant relation and the two ceilings above it. At speed V, the equilibrium cant for a radius must be reachable within the maximum applied cant plus the maximum deficiency —

R_min = G · V² / [ 127 · (C_max + Cd_max) ]

— and the answer is checked again for the slowest traffic, because the same curve has to be ridden by a goods train at 60 km/h without exceeding cant excess. Where no single cant satisfies both, the engine says so in exactly those terms and offers the radius that would (R_MIXED).

The considerations console
Figure 20.2 — The considerations console, on the first of its seven tabs. Nothing here is buried in code: what the design is allowed to do is a project setting, saved with the project, and visible to whoever opens it next.
Chapter Twenty-one

File formats and schemas

What is in the save file, what the columns mean, and what a receiving package will find in the interchange formats.

The project file

Saved to this computer, a project is one Name.rads file: the JSON object below, including the available terrain grid and the OpenStreetMap extract used for its crossings. The project hub also keeps the OpenStreetMap extract; terrain tiles are downloaded again when a cloud project is opened. Imported survey surfaces and the design's ground levels are retained in both kinds of save.

Older .rads/.radsupport pairs still open together. If the support file is missing, the app can download the missing data again. The next save includes the available data in one .rads, without a separate support file. Older .json projects also open and are saved as .rads the next time. Output → Export deliverables → Project file (.rads) writes the same complete .rads for sending to somebody as a single attachment.

One JSON object, round-trippable; this abbreviated example shows the main design inputs:

{
  "format": "railway-alignment",   "version": 1,
  "name": "Rolling plateau — Beed to Kalamb",   "division": "",
  "created": "…", "saved": "…",
  "standard": "IR-BG",
  "design":   { "V": 110, "Vslow": 60, "startStation": 0 },
  "limits":   { "gauge": 1676, "G": 1750, "cantMax": 165, … },
  "considerations": { "structures":…, "crossings":…, "stations":…,
                      "recon":…, "avoidance":…, "takeoff":…, "multitrack":… },
  "routeDesign":    { "from":…, "to":…, "via":[…], "demRes": 60, "V": 110 },
  "ips":    [ { "E": 487384.997, "N": 2099077.668, "name": "IP1",
                "R": 1075, "cant": 95, "Ls1": 90, "Ls2": 90,
                "autoCant": true, "autoLs": true }, … ],
  "vips":   [ { "station": 5050, "z": 553.128, "name": "V1", "L": 50 }, … ],
  "ground": [ { "station": 0, "z": 512.62 }, … ],
  "geo":    { "lon0": 75.88985, "lat0": 18.78225,
              "E0": 500000, "N0": 2077565.203,
              "from": {"lat":…, "lon":…, "name":"Beed"},
              "to":   {"lat":…, "lon":…, "name":"Kalamb"},
              "zoom": 11, "demRes": 60 },
  "crossings": { "overrides": { … } },
  "stations":  [ … ],
  "bridges": { "bridge-id": { … } },
  "estimate": { "planHead": 11, "detailed": { … } },
  "terrainSurface": { … }, "surveySurface": { … },
  "survey": { … }, "support": { "terrain": true, "osm": true },
  "compliance": { "strict": false, "overrides": { … } },
  "land": …, "existingYards": …, "multitrack": …,
  "overlay": { "layers": […], "shapes": […], "nextId": 1 }
}
KeyWhat it holds, and why it is stored rather than derived
ips, vipsThe alignment itself. The alignment geometry is solved from these two lists; bridge documents and station layouts hold their own component geometry. autoCant and autoLs record that a value is being derived rather than fixed by hand.
estimate.detailedThe active/disabled detailed bill, basis, project charges, components, items, measurements, rate analyses, pinned source records and review notes. These are authored inputs; opening or rerouting does not rebuild them.
bridgesSaved bridge documents keyed by stable identity: spans and floor choices, girder spacing and clearance envelopes, supports, member overrides, ancillary walls, levels, quantities settings and adopted drawing/design references. Structural support skew and actual crossing obliquity are separate. Older member models retain a review marker until explicitly applied. These survive both local and cloud saves.
surveySurfaceThe imported survey surface. It remains in local and cloud saves; it is not a downloadable DEM grid.
groundThe existing ground as chainage/level pairs — sampled from the terrain grid by the router, or imported.
limitsA full copy of the standard's numbers, not a reference to the preset, so that reopening the project years later cannot silently re-check it against a preset that has since changed.
compliance.overridesEvery rule this project has silenced or re-graded. Kept with the design because a check that has quietly stopped running is worse than one that fails.
crossings.overridesCrossing types set by hand. The engine keeps its own opinion beside them.
multitrackEvidence, not derivation: what was found on the ground, which side the new line runs, how much is parallel, and why each realignment left the formation. These design decisions are kept alongside the map extract they came from.
geoThe tie to the earth, and the terrain resolution the design was built against.
overlayEverything drawn by hand, on its layers — including the avoidance and inclusion zones the router priced from.
terrainSurface, surveyThe downloaded terrain grid and compact OpenStreetMap extract. A local .rads includes both when available; the cloud keeps the map extract and restores terrain on opening.
supportWhich downloaded data belongs to the project (terrain, osm). Only data missing from this copy is restored on opening. Older two-file saves may also name a .radsupport and its id; new saves do not depend on a separate file.

The CSV columns

Setting-out table

Chainage · Station (m) · Easting · Northing · Rail level · Radius (m) · Hand · Cant (mm) · Bearing · Grade (%) · Ground level · Cut(−)/Fill(+) · Notes

The ground columns appear only when the project has a ground profile. Tangent points, summits and low points are always present as rows whatever the interval, and the Notes column is what says which is which.

Horizontal curve schedule

Curve · IP Easting · IP Northing · Deflection · Hand · Radius (m) · Degree (30.5 m) · Ls entry (m) · Ls exit (m) · Tangent T1 (m) · Tangent T2 (m) · Shift p (m) · Arc length (m) · Total curve (m) · External (m) · TS · SC · CS · ST · Cant (mm) · Eq cant (mm) · Cant def (mm) · Cant excess (mm) · Lat accel (m/s²) · Ls required (m) · Governed by · Vmax (km/h)

TS · SC · CS · ST are the four tangent-point chainages — tangent-to-spiral, spiral-to-curve, curve-to-spiral, spiral-to-tangent — the same four points the DXF marks T1/J1/J2/T2 in Figure 9.1. Governed by names which of the three transition criteria set the length.

Vertical curve schedule

Curve · VIP chainage · VIP level · Grade in (%) · Grade out (%) · Change (%) · Type · Length (m) · Radius Rv (m) · BVC · BVC level · EVC · EVC level · Mid-ordinate (m) · Turning point · Turning level

Compliance report

Level · Reported as · Category · Code · Rule · Location · Chainage · Description · Value · Limit · Unit · Reference · Options

Level is the rule's natural severity and Reported as is what it was reported as after strictness and overrides — so a re-graded finding shows both. The footer names the strictness mode and every overruled rule.

Cut and fill report

Chainage · Difference · GL · FL · Level diff · Track centre · Curve · Formation top width

Signalling and interlocking schedule

Station · Chainage · Item · No. · Type · Reads / Connects · Turnout · Operation · Locking · Aspects · Remarks

LandXML 1.2

ElementCarries
<Alignment>Name, length, starting station.
<CoordGeom>The chain, in order.
<Line>Each straight, with start and end points.
<Spiral>Each clothoid: length, radius at each end, the spiral constant, rotation and type.
<Curve>Each arc: radius, rotation, and the three points.
<ProfAlign>The grade line: PVI stations and elevations with vertical curve lengths.

Reads into Autodesk Civil 3D, Bentley OpenRail and 12d Model.

DXF (R12 / AC1009)

R12 is deliberate: it is the dialect nothing refuses. Everything is in real-world metres on named layers, so a receiving office can freeze what it does not want.

LayerContents
ALIGNMENT / CLThe centre line as a 3D polyline.
IP_LEGSThe intersection-point polyline.
CURVE_PTST1, J1, J2 and T2 marked and labelled.
CURVE_DATAA curve data box per curve.
CHAINAGECH:nnnnnn ticks and kilometre posts.
LAND_BOUNDARYThe banded boundary offset either side.
STRUCTURESStructure callouts, carrying the skew.
PROFILE / PLANThe two halves of a sheet, with their grids and datum.
STATION_*Yard geometry by kind: LOOPS, SIDING, TURNOUTS, PLATFORMS, SIGNALS, LIMITS, BUILDINGS, SITE, FOB, CSB, TUNNEL, FUTURE, DATA.
TEXTAnnotation that belongs to no other layer.
overlay layersNamed after the drawing layer they came from, sanitised for DXF and truncated to 26 characters.

Ground and survey imports

ImportAccepted
Ground profilechainage, level rows — pasted into the Profile tab or loaded as CSV/TXT.
Intersection pointsA CSV of easting/northing, with optional radius and transition lengths.
SurveyPoints, a schedule of cross-sections, LandXML from a total station, or an ASCII grid. The format is worked out from the file.
Chapter Twenty-two

Architecture and the module map

The calculation engine is separate from the interface. React supplies panels and Three.js supplies the newer 3D views; Vite builds the application. Core calculations also run under Node so they can be checked without opening the interface.

Pages index.html landing · app.html the designer · profile.html the account · help.html reference · sw.js service worker · manifest.webmanifest js/ui — the interface (touches the DOM) app.js viewport.js planview.js profileview.js cantview.js tables.js tools.js wizard.js mapview.js basemap.js terrainlayer.js ribbonview.js ribbonmodal.js drape.js masshaulview.js sheetsmodal.js comparemodal.js exportmodal.js palettebox.js considerations.js workbench.js variantspanel.js surveypanel.js yardeditor.ts assistantpanel.js files.js account.js hub.js profilepage.js js/core — the engine (no DOM; runs under Node) Geometry geom · clothoid · horizontal · vertical · cant · alignment · projection · georef · standards Compliance rules · checks · fixes Ground dem · terrain · tilecache · section · geology · provenance · survey · masshaul · land · parcels Routing astar · autoroute · costsurface · optimise · recon · takeoff · multitrack · water · landuse · overlay The corridor features · crossings · hydrology · utilities · structures · railways · stations · yard · signals Cost & ops speed · energy · estimate · wholelife · risk · pareto · compare · variants Output io · xlsx · workbook · report · ribbon · sightline · findings · landcover · sun · yardplot · diff Plumbing store · api · panels · palette · stages · profile · config · search-worker api/ — serverless routes dem.js terrain tiles, proxied (no CORS upstream) features.js Overpass extracts, cached in Postgres places.js Nominatim names + Overpass station codes supabase/ — the optional cloud half migrations/ projects, revisions, profiles, sharing, review check/ applies them to a throwaway Postgres and asks the policies what they actually allow
Figure 22.1 — The module map. The rule that matters is the boundary around js/core: nothing in it touches the DOM, so the whole engine loads under Node — which supports independent engine regressions alongside browser and interface tests.

How a route becomes a drawing

SRTM tiless3 · via /api/dem DEM.Gridat the chosen step Search field+ every cost layer Grid pathA* per leg The projectips · vips · ground The modelsolved chain Checksand repairs Structuresand quantities Estimateon plan heads Deliverablesio · workbook · report One direction, and one place where it loops back a repair edits the project, and everything downstream is recomputed The project retains alignment inputs, bridge documents, detailed bills and their evidence. The solved alignment and checks are recomputed. Local .rads files also embed available terrain and OSM and can be large. Detailed estimate snapshots do not recalculate when geometry changes.
Figure 22.2 — How a route becomes a drawing.

Notable implementation choices

ThingHow it is done, and why
The .xlsx writerAn .xlsx is a ZIP of XML parts, and both halves are written by hand in xlsx.js. The export itself needs no installed spreadsheet application. Serve the application through the development or production build.
The 3D rendererribbon.js and ribbonview.js paint quadrilaterals with the painter's algorithm onto a 2D canvas. One renderer, three cameras. No WebGL, no library.
The PNG decodertools/png.js exists so that the tests can read real terrain tiles under Node.
The search workersearch-worker.js keeps a long A* off the interface thread.
The terrain cachetilecache.js in IndexedDB — which is what makes running the router four times at four design speeds reasonable.
The service workerKeeps a complete, versioned application for offline use. A new version waits for older tabs to close; API responses are outside this application cache.
The panel registrypanels.js holds every workbench panel as data — which engine, what it needs, what comes back — so a panel can be opened and checked in Node rather than only by clicking.
The logoGenerated from a real Euler spiral by tools/make-logo.js; the RAD mark's D is a real half turn.
Chapter Twenty-three

Verification

What is checked, how, and to what residual — because a tool that cannot say how it was tested is asking to be taken on trust.

The test suite

Automated checks cover geometry, compliance rules, terrain, persistence, estimates and exports. The repository also has interface tests, TypeScript checks and a production build check. The geometry is verified three ways:

  1. Against closed-form results derivable by hand.
  2. Against an independent numerical method — Simpson quadrature for the Fresnel integrals, finite differences for curvature and grade.
  3. By invariants that must hold for any valid chain: position, azimuth and chainage continuous at every element joint, curvature from dθ/ds matching 1/R, sampled spiral arc length equalling Ls, and the projection round-tripping chainage and offset.

The compliance engine is verified on its own terms: that every rule carries a title, a real category and a rationale; that issue ids are stable across a re-solve; that strict mode and per-rule overrides resolve as documented and survive a save and reload; that each new rule fires on a case built to trip it and stays silent otherwise; that terrain rules stay quiet without ground data; and that a rule made to throw reports itself as RULE_ERROR without taking the rest of the report with it.

Multiple tracking is verified end to end rather than in pieces: a corridor with a known railway in it — twelve kilometres straight, a 700 m radius curve through 60°, sixteen kilometres straight — is analysed, planned and then actually designed through the router, and the finished centre line is measured against the existing one. It comes back one track spacing off it, to within 50 mm, over four hundred samples; the 700 m existing curve reappears as a 705 m curve on the new line, which is the radius offset to the outside; and the same corridor at 160 km/h leaves the formation for the curve, comes back, and is shorter for it. Both designs finish with no compliance errors.

Current residuals on the worked examples
Position continuity at element joints~10⁻¹³ m
Azimuth continuity~10⁻¹⁶ rad
Tangent lengths against the closed form10⁻¹³ m
UTM round-trip across four zones< 20 mm
Project grid over 66 km, against Vincenty< 50 ppm

test.html provides browser geometry checks; the full repository suites also exercise project saving/reopening, bridge geometry, estimate measurements and paise rounding, workbook formulas and application integration. A passing software test does not validate a project’s field data or rate applicability.

Checking the database policies

supabase/check/run.sh applies every migration to a throwaway local Postgres and then asks the policies what they actually allow: that Bob can read the project he was given and not write it, that an editor can write it and not take it, that Carol can see none of it, that an invitation survives until the account exists. It needs a local Postgres and an account that can create roles, and it never touches the real project.

Worth the two minutes

The SQL editor is otherwise the first thing that ever runs a migration, and production is a poor place to find out that a function does not compile. One did not: the output columns of share_project() are also plpgsql variables, so on conflict (project_id, email) could not tell which email was meant. Nothing else in the build could have caught it.

How this manual is kept true

The screenshots are captures of the running application. Earlier corridor figures use the Beed–Kalamb worked example; this edition adds current task navigation, saving, detailed estimates and bridge workspace figures using explicitly illustrative project data. Older retained figures may show earlier toolbar layouts. Follow the command paths in the text.

The newer captures are reproducible with tools/shoot-workspaces.js. The earlier docs/manual/shoot.js covers the original route walkthrough and needs adaptation to current navigation and sign-in before a full recapture. Neither script turns demonstration quantities into an approved engineering design.

The compliance catalogue in Chapter 19 and the standards table in Chapter 20 come from the engine's rule and standard definitions. npm run manual:sync regenerates their values; npm run manual:check detects stale tables and missing links or images. The weekly documentation workflow runs Mondays at 03:17 UTC and opens a review pull request only when generated content changes. It also rebuilds the training page and PowerPoint from their reviewed course source. It does not invent instructions, refresh screenshots, update the editorial date or claim a review happened. The workflow must reach the default branch and Actions must be permitted to create pull requests. Check links, captions and printed pagination after editing this book.

Network context in the figures

Some earlier captures could not reach basemap or corridor services; their blank basemaps and lookup notices are part of the captured state. The new estimate and bridge illustrations use controlled local demonstration data and do not claim that a live corridor query was completed.

Chapter Twenty-four

Deployment, server routes and the cloud half

Cloud project storage and the server feature cache are separate services. A locally configured deployment can use files; the configured public website requires sign-in. Saved OSM can be reused even without the shared feature cache.

The three server routes

RouteWhat it does, and why it is a server route
/api/dem Terrain tiles. Public SRTM-derived terrarium tiles carry no CORS headers, so the page cannot fetch them directly. The route validates z/x/y, proxies the tile, and marks it immutable so the browser and the tile cache never ask twice.
/api/features Corridor features from OpenStreetMap by way of Overpass. Overpass is slow, rate-limited and periodically down; a corridor query can take half a minute and then fail. Extracts are cached in Postgres keyed by a normalised bounding box, so the second person to route through a district gets an instant answer. The cache is written with the service role key, which must never reach a browser.
/api/places Place and station search. Nominatim handles names and ranks by importance; Overpass handles station codes, which are a map tag (railway:ref) that no geocoder indexes. Both are queried in parallel and merged, so one directory being down degrades the answer rather than breaking it. Nominatim also requires a descriptive User-Agent, which a browser cannot set.

Every reply is read through js/core/api.js, which turns a gateway page, a stopped function or a missing /api into a sentence saying what happened and what to try next — rather than the JSON parser's complaint, which names no status and suggests nothing.

Keys, and where they go

SecretWhere it belongs
Supabase project URL and publishable key js/config.js, committed on purpose. That key names the project and grants nothing: every row the app can reach is decided by row level security against the signed-in user.
SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY The hosting environment only, read by /api/features to write the feature cache. The service role bypasses row level security and must never reach a browser or the repository. .gitignore already excludes .env*.
GEMINI_API_KEY, optional GEMINI_MODEL and GEMINI_ALLOWED_MODELS Server settings for Ask's optional Gemini fallback. Local Ask needs no AI key. The site key never reaches the browser; model and allow-list settings affect shared access.
SUPABASE_URL, SUPABASE_ANON_KEY Server account checks for Gemini requests, including personal-key requests. Shared usage also requires the assistant-usage database migration.
Optional personal Gemini key for Ask Held in this browser, removable in Ask settings and never included in project files. On a Gemini request it passes through this site's /api/assistant to Google; the application does not persist it on the server. It does not bypass sign-in.

Without the two environment variables /api/features still answers; it just says overpass (uncached) and pays the full round trip every time.

Hosting

vercel.json carries the whole of the hosting contract: a 60-second maxDuration for the functions, clean URLs, a cache policy per path, and a strict content security policy that names every host the page may reach — the Supabase project, the tile servers, the terrain bucket and Nominatim, and nothing else. The service worker is served no-store so a deploy is picked up.

HeaderValue
X-Content-Type-Optionsnosniff
Referrer-Policystrict-origin-when-cross-origin
X-Frame-OptionsSAMEORIGIN
Strict-Transport-Securitymax-age=63072000; includeSubDomains; preload
Permissions-Policycamera=(), microphone=(), geolocation=(self), payment=()
Content-Security-PolicySelf, plus the named tile, terrain, geocoder and Supabase hosts. Workers from blob:; images from data: and blob:; audio from blob:.

Links in email

A confirmation or sign-in link is opened from a mail client, and often on a different device from the one that signed up. http://localhost:8731 on a phone means that phone's own machine, which is running nothing — so the link cannot be the address bar of whoever asked for it. Config.siteUrl states the public address once and every auth email uses it, whichever host the request came from. Blank it and links fall back to the current origin, which is what a purely local install wants.

The other half is in the dashboard

Supabase validates every redirect target against an allow-list and does not report a failure: an unlisted address is quietly replaced with the project's Site URL. Under Authentication → URL Configuration, set Site URL to the public site, and put the public site (a /** entry covers every page) plus http://localhost:8731/** in Redirect URLs.

The database

Apply the migrations in supabase/migrations in order. Every one is idempotent and safe to re-run — from the SQL editor in the dashboard, or with supabase db push.

MigrationWhat it addsSkipping it
0001_init.sqlProjects, revision history, share links and the feature cache.Not optional.
0002_profiles_and_avatars.sqlThe display name and picture, the trigger that gives every new account a profile row, and the avatar bucket with its policies. Backfills accounts created before it ran.Survivable. PostgREST answers could not find the table 'public.profiles', which reads like a fault in the account — so the account panel says which it is and carries on offering the parts that work.
0003_sample_projects.sqlThe worked examples, as rows anybody may read.Survivable: the application falls back to the files in samples/.
0004_project_hub_and_sharing.sqlPerson-to-person sharing: project_shares, project_invites, the policies that widen projects to a named reader, and the functions that grant and claim.Survivable: the hub draws your own projects and never finds anybody to have shared them with.
0005_profile_details.sqlThe rest of a profile — what you do, where you are, one link and a paragraph — capped in the database as well as the browser.Survivable and visible: the profile is read once for everything and, if a column is missing, read again for the columns 0002 guarantees. The page says which migration is outstanding.
0006_review.sqlReview comments anchored to a place in a design.Survivable: the review panel reports itself as needing input.

Seeding the worked examples

After 0003, paste supabase/seed_samples.sql into the SQL editor. For a script, or a rebuild that should not involve a browser:

SUPABASE_URL=https://xxx.supabase.co \
SUPABASE_SERVICE_ROLE_KEY=eyJ... \
node tools/seed-samples.js

That path needs the service role, because the table has row level security on and no write policy, so a browser key is refused by design. node tools/seed-samples.js --sql regenerates the SQL after changing an example. Either way it upserts on the slug, so running it again corrects rather than duplicates. tools/seed-samples.js is JavaScript and will not run in the SQL editor; the file to paste there is supabase/seed_samples.sql.

The access model, in one page

QuestionAnswer, and where it is enforced
Who can read a project?Its owner, and anybody it has been shared with. Enforced by row level security on projects.
Who can write it?The owner, and an editor. Ownership is pinned in the same trigger that owns rev and updated_at, so an editor may write the document but never take it — a with check could not express that on its own, since the row it inspects is the one that would be lying.
Who can delete or re-share it?Only the owner. select and update widen to a named reader; insert and delete do not.
How is recursion avoided?A policy on projects that reads project_shares, and a policy on project_shares that reads projects, is an infinite loop Postgres reports at query time. Every cross-table test is therefore a security definer function — owns_project, shared_with_me, can_edit_shared, shares_person — which runs with row level security off inside it and so cannot re-enter the policy that called it.
Why is there no insert policy on the share tables?A row in project_shares grants access, so it is written only by share_project(), which checks ownership first. Left to a plain insert, any account could grant itself the run of any project whose id it could guess.
How wide is the profile read?One account wide of your own, and no wider: the people you have given a project to, and the people who have given you one.
Where do avatars go?A public avatars bucket, squared and shrunk to 256 px in the browser first. Writes are confined by policy to a folder named for the user's own id, which is what stops one account overwriting another's picture. Each upload takes a fresh name, so a changed picture is never served stale.
Chapter Twenty-five

Troubleshooting

Most of these are the software telling you something true about the world. The table says which.

What you seeWhat it means, and what to do
Sign-in or the manual cannot finish loading Check the connection to the configured authentication service and retry. On the public website, blocking the cloud host does not bypass the sign-in gate. A prepared offline project or already downloaded PDF can be used within the access already available.
could not find the table 'public.profiles' Migration 0002 has not been applied. The account panel says so and carries on offering the address, the password, signing out and the whole project hub.
column profiles.headline does not exist Migration 0005 has not been applied. The profile is re-read for the columns 0002 guarantees, and the page says which migration is outstanding.
A confirmation link goes to the wrong place Either Config.siteUrl or the Supabase dashboard's redirect allow-list. An unlisted address is quietly replaced with the project's Site URL — see Chapter 24.
A corridor layer shows as did not load An empty Overpass answer that no second mirror could confirm. It is not being reported as zero watercourses. Press Look up again, which bypasses the cache.
504 from /api/features The 45-second budget ran out before a mirror answered. Try again — a busy mirror is the normal cause — or reduce the corridor.
No terrain data covers that area Every DEM tile fetch failed. Check the network, and check that /api/dem is reachable from the page.
Only 43% of the corridor has terrain data Some tiles came back empty. The result will be unreliable; re-run once the tiles are available.
STATION TIE-IN on a routed alignment No existing track data reached the router, so neither end of the line ties into a station. Check the corridor lookup answered, then design the route again.
The corridor is reported as not viable The height to be climbed exceeds what the ruling gradient can deliver over the distance available. The message says how much development would be needed. Add obligatory points to lengthen the climb, or raise the ruling gradient if the project allows it.
Stage 2 will not open One of the four hard prerequisites is missing — an alignment, a grade line, a ground profile or a georeference. The gate names which, and what would satisfy it.
The generated estimate shows no total The corridor lookup or station decisions are outstanding. Follow the named stage requirements. Output → Detailed estimate can start independently; its own missing quantities, rates and review states determine whether its total is ready.
A detailed bill shows an unpriced item or provisional subtotal Enter the missing quantity and rate, check units and source warnings, and review provisional assemblies. A blank is not a priced zero. Incomplete numeric edits must be corrected before Apply, Save or export.
My estimate or bridge export differs from the saved project Workspace exports can use the current draft. Apply updates the working project; Save project applies and saves it. Check the destination and save indicator. Detailed imported bills are fixed snapshots and need deliberate revision after design changes.
A cloud project requests OSM again Older saves, missing extracts or a fresh corridor request can need a lookup. Let it finish and save the project explicitly to retain the compact OSM for future opens. Reopening a current save with its OSM present should reuse it. DEM redownload on cloud open is expected.
An older project asks for a .radsupport file Choose its matching sidecar if available. Missing downloaded data can be fetched again; after it loads, save once to produce a self-contained .rads. Never substitute another project’s sidecar.
The plan will not draw a basemap The project has no georeference, or the tile host is unreachable. Georeference a hand-drawn alignment from the Plan tab.
Every save produces another file in Downloads The browser has no File System Access API, so the save target degraded to a download. Use a Chromium-based browser to save back to one file.
A report group is missing and shows RULE_ERROR One group of checks threw on a degenerate geometry. The rest of the report still stands, and the finding names the group that failed.
A repair says it will not fix something It is advisory: only a change of route, design speed or works would resolve it. The finding states the trade-off and the options.
The examples do not appear in the catalogue Migration 0003 is applied but the seed has not been run — or the seed was run without the service role key. Until it is seeded the application falls back to the files in samples/.
Chapter Twenty-six

Limitations, and professional responsibility

This chapter matters more than the feature list. Read it before quoting any figure this software produced.

The data

InputWhat it is, and what it is not
TerrainPublic SRTM/ASTER-derived tiles: roughly 30 m horizontal and ±16 m vertical. Enough to compare corridors and to reconnoitre; nowhere near construction levels. The finest grid worth asking for is 30 m, because that is where the source data runs out — anything finer interpolates.
Corridor featuresOpenStreetMap: contributed, uneven, and in rural areas missing minor roads and field drains entirely. A first pass, not a survey. Tags are free text and are rendered as text.
BasemapsTile imagery with its own positional error, placed from a single tied point on a north-up unit-scale grid. Context for judgement, not a survey to set out from.
RatesThe detailed library contains CR USSOR 2021 and CPWD DSR 2023 item variants with source warnings. Their price level and scope are not automatically current or local. Check the authority, location index, billing unit, correction slips and inclusions. Generated allowances remain provisional; custom bills can include specialist scope only when it is explicitly entered and priced.

The engineering

Land, and money

Compensation is not a valuation

The parcels engine gets the areas right and prices them at a stated rate. The real award is a market value, a multiplier, solatium and whatever the reference court decides years later. Nor does it examine title: encumbrances, tenancies and unrecorded occupation are invisible here and all real.

The land boundary is a preliminary width drawn from the geometry the designer has fixed — the toe of the earthwork, plus a margin, rounded up and banded into lengths of at least 100 m because a boundary that steps in and out every twenty metres is a toe line with a margin added, and nobody pegs that. It is not a schedule of acquisition: that needs the revenue survey, the plot numbers, and everything the ground tells you that a terrain model does not.

What the engineer is signing

Everything in this software is a proposal supported by stated arithmetic over stated data. The compliance report says which clauses were tested and against what limits; the provenance panel says what the ground is known from and to what accuracy; the estimate says which of its rates have a schedule item behind them; the register of assumptions in the report gathers the rest. None of that transfers responsibility. A design leaves this tool as a first pass that a competent engineer has to verify against the governing code, the approved schedule of dimensions, the revenue records and the ground itself.

What it is fair to say

An alignment was developed over public 30 m terrain, checked against the IR-BG limits as configured, with costs based on the stated schedule items, analyses and provisional allowances; the outstanding findings, rate basis, assumptions and ground provenance are annexed. That is defensible, and it is what the exports are shaped to support.

Appendix A

Glossary

Alignment — the centre line of the track, in plan and profile together.

A* — the search that finds a least-cost path over the elevation grid; here the state is (cell, heading) so that turning can be priced.

BVC / EVC — beginning and end of a vertical curve.

Cant — the amount by which the outer rail of a curve is raised above the inner.

Cant deficiency — how much more cant the fast train would want than is applied.

Cant excess — how much more cant is applied than the slow train wants.

Chainage — distance along the line from its start, written 12+530.

Clothoid — the Euler spiral, whose curvature grows linearly with distance; the transition between a straight and an arc.

D8 — the flow-routing rule that sends every cell's water to its steepest of eight neighbours; the basis of the catchment calculation.

DEM — digital elevation model: the grid of ground levels the design is built on.

Dickens — the empirical formula giving peak discharge from a catchment area.

Formation — the finished earthwork surface the track is laid on.

Fouling mark — the point where converging tracks come close enough that a vehicle on one obstructs the other.

Gauge (dynamic, G) — the effective lever arm in the cant equation: 1750 mm for IR broad gauge, 1500 mm for standard gauge.

IP — intersection point: where two straights would meet if the curve between them were removed.

Lacey — the regime formula giving the waterway a river needs.

Ls — transition (spiral) length.

Mass haul — the cumulative earthwork balance along the line, from which haul, borrow and waste are read.

Plan head — the Indian Railways accounting classification an item of work is booked against.

ROB / RUB — road over bridge / road under bridge.

Ruling gradient — the steepest grade the line is designed to, which sets what a locomotive must haul.

Shift (p) — the distance by which introducing a transition pushes the arc away from the tangent.

Skew — the angle at which the line crosses something; a structure lengthens roughly as 1/sin of it.

SOD — Schedule of Dimensions: the governing clearance and spacing document.

Takeoff — the geometry by which a new line leaves or joins an existing formation.

Tangent point — where one element of the chain hands over to the next (TS, SC, CS, ST).

Throat — the fan of turnouts at the end of a yard.

Vertical acceleration — V²/Rv; what a vertical curve's radius limit was derived from.

VIP — vertical intersection point: where two grades would meet without the vertical curve between them.

Virtual transition — the length over which a vehicle bridges a step in curvature at its bogie centres, when no transition has been designed.

Appendix B

Where the rates come from

Published schedule items, project-specific analyses and provisional allowances carry separate rate bases so that an estimate can be checked.

IRUSSOR 2021 — formation, bridges, permanent way

Indian Railways Unified Standard Schedule of Rates 2021, Railway Board, Ministry of Railways. Issued 28 July 2022, effective 2 December 2022, superseding IRUSSOR-2019. Price level 2021. It covers the three chapters the civil side of a new line is built out of: formation works, bridge works and permanent way works.

DocumentWhat it is
IRUSSOR-2021The schedule of items: nomenclature and the item numbering.
Basic Rate Sheet 2021The input rates — labour by trade, material, machinery hire.
AOR-2021The analysis of rates that derives an item rate from those inputs.
The apex document has no usable money in it

It carries the item numbering and the method; the zonal railways issue their own USSOR with the same item numbers and that zone's input rates. So the item number goes in from the apex document and the rate goes in from the zonal USSOR for the railway the line is on.

DSR 2023 — buildings, platform finishes, site works

CPWD Delhi Schedule of Rates 2023, Volumes I and II, civil works — the schedule the station buildings, platform finishes and site works are priced from.

Catalogue sources and their limits

SourceUse in the catalogue
Central Railway USSOR 2021 1,065 extracted variants. Rates belong to this zonal publication; select the correct lead, lift or other variant and read the complete description.
CPWD DSR 2023: Volume I; Volume II 3,184 civil item variants. Most records identify a volume rather than a page. Carriage coverage is partial; source extraction and unit warnings need review.
Railway Board IRUSSOR 2021 Reference for the item structure and nomenclature; not a substitute for the applicable zonal money rates.

The catalogue preserves 4,249 extracted variants, including source ambiguities instead of silently inventing units. Examples needing original-source review include DSR 5.13's unclear unit, unnamed thousand-unit carriage rows, and CR 172058's kilometre versus tonne-kilometre basis. Check correction slips, taxes and included work separately. Availability of a link or matching code does not certify the adopted rate.

In Basis & charges, record the railway zone, location, rate authority and adjustment basis. USSOR and DSR indices apply to their respective published rates: 100 leaves them unchanged, 110 adds 10%. An entered index is your project assumption, not an automatically fetched official local cost index. Project/quoted and analysed rates are adopted directly.

How to use them here

  1. Open Detailed estimate from Output or the estimate panel.
  2. Choose a component and search the rate library by schedule, chapter, item code or description.
  3. Enter measurements, verify billing units, and record local adjustments for the project's railway zone and location. Use sourced custom items for gaps or specialist work.
  4. Review unpriced items and provisional allowances, apply the bill, and save the project.

The catalogue preserves 4,249 extracted item variants. It is not a claim of complete coverage of every schedule and correction slip; source and unit warnings remain visible.

Appendix C

The worked examples

Load these with Explore worked examples from the opening question, or from the palette.

FileWhat it is
auto-plateau.jsonThe original corridor walkthrough. Beed to Kalamb: 53.6 km direct across the Maharashtra plateau, designed by the router as 58.15 km of IR broad gauge at 110 km/h with 60 m ground detail — 8 curves, 2,210 ground points, 15 VIPs, no compliance errors.
auto-plains.jsonThe same treatment on flat country, where the grade line rather than the corridor is the interesting half.
mainline-ir-bg.json8.2 km of mainline doubling on IR broad gauge at 130 km/h, with a ground profile and rolling terrain.
high-speed-320.json26 km of high-speed line at 320 km/h — 7.5–10 km radii and kilometre-long vertical curves.
metro-tight.json2.6 km of urban metro between two platforms at 60 km/h, with 250–400 m radii.
mixed-terrain-10km.jsonA 10 km study route with 1,001 ground points — the one to open when you want the terrain rules to have something to say.
non-compliant-demo.jsonDeliberately broken, to see what the checker reports: 22 errors and 5 warnings on 2.5 km. Figure 10.1. Do not build it.
ground-10km-mixed-terrain.csvA ground profile on its own, for importing into a hand-drawn alignment.

A longer case study — a real corridor between Nashik and Dahanu, with its own ground, curve and station data and the scripts that produced them — lives in study/nashik-dahanu/.

Appendix D

Quick reference card

One page to keep beside the screen.

The four stages

1 Location — geometry, grade line, cant, earthwork.
2 Crossings — roads, railways, water, power. Geometry locks.
3 Stations — yards, platforms, throat, signals, plateaus.
4 Estimate — plan heads and the abstract.

The gate into stage 2

An alignment · a grade line · a ground profile · a position on Earth — all four hard. No compliance errors — soft, and waivable.

Terrain detail

200 · 120 · 60 · 30 m. What you press is what the design is built on. Finer costs tiles, memory and time; coarser aliases small watercourses and the bridge openings follow.

Cant

C = G·V²/(127·R) mm.
G = 1750 (IR BG) · 1500 (standard gauge).
Transition length = the longest of the three criteria: rate of change of cant, rate of change of deficiency, cant ramp gradient.

Crossing decision

d = rail − ground.
under when d ≥ headroom + deck;
over when −d ≥ clearance + deck;
otherwise both are quoted. New supports are square; retain the actual crossing angle and cover the obstacle at both deck edges. Missing arrangements remain unresolved.

Keys

Ctrl+K any command · F fit · C compliance · Tab next point · Ctrl+Z undo · Ctrl+S save · Shift+F plan full screen · [ fold the panel.

Original Cab ride

space run · 123 cameras · ,. next feature · R reverse · S save frame.

Cab ride 2

Review → 3D & cab rides · 1 Cab · 2 Chase · 3 Orbit · 4 Lineside. Scenery does not add estimate items.

Detailed estimate

Output → Detailed estimate · add components and measured bills · check the rate basis · Apply updates the working project · Save project writes it. Imported designs are fixed snapshots.

When a number is withheld

A total with no bridges, an empty map layer nothing confirmed, a bridge class the catchment cannot support, a volume over ground nobody measured. The tool names the missing decision instead.

Before quoting anything

Terrain ±16 m · features contributed · verify rate basis · presets not certified · basemaps not survey · compensation not valuation.


Railway Alignment Designer · The Manual · Edition 3 · Revised 15 October 2026
www.radrailway.com