2.5.5. Station equations
A station equation is a controlled discontinuity in the labels applied to a continuous physical alignment. The geometry itself doesn’t move. Station equations are universally supported in civil practice as a way to:
Insert a redesigned segment into an existing alignment without re-stationing every downstream drawing.
Join two independently-stationed alignment segments into one continuous route.
Tie a new alignment into an existing facility whose stationing is fixed by record drawings.
Preserve historic mileposts on a highway when a bypass shortens or lengthens a route.
Two kinds:
Gap (station-ahead):
Ahead > Back. Station labels jump up — the values in(Back, Ahead)are simply skipped on the ground. They never address a physical point.Overlap (station-back):
Ahead < Back. Station labels jump down. The values in(Ahead, Back)exist twice on the ground (once before, once after the equation point); the engine consistently picks the pre-equation occurrence on reverse lookup.
A surveyor reads STA 142+00.00 BK = STA 140+50.00 AH on a plan
sheet as: at the equation point, the back-side station is 14200
and the ahead-side station resumes at 14050. The same physical
point has two station labels.
2.5.5.1. Real-world drivers
Design revision without re-stationing. A 30 km highway is fully designed, all drawings keyed to chainage. A curve between Ch 8+000 and Ch 12+000 is realigned and the new segment is 180 m longer. Without an equation, every downstream chainage shifts by +180 m and every culvert, sign, drainage and quantity sheet needs to be re-annotated. Insert a gap equation at the tie-in point:
Ch 11+820.000 BK = Ch 12+000.000 AH (180 m gap)
— and all downstream chainages stay exactly the same.
Tying alignments together. Two design teams each stationed
their part from their own 0+000. When the parts are merged
into one route, an equation at the junction reconciles them
without renumbering either source dataset.
Preserving historic mileposts. A DOT bypass shortens a route by 1.2 mi. An overlap equation absorbs the reduction so downstream historic mileposts (bridges, signs, asset-management records) stay valid.
2.5.5.2. The data model
In the engine each equation is stored as:
RawStation— the raw distance from alignment start at the equation point. Not a chainage — the internal arc-length parameter, range[0, TotalLength].StationBack— displayed chainage just before the equation.StationAhead— displayed chainage just after the equation.
The offset added to all chainages past the equation is
StationAhead − StationBack.
2.5.5.3. Worked example
Single equation: RawStation = 7100, Back = 130000, Ahead =
140000, with StartStation = 122900 and total raw length
≈ 71 961 m.
Point on the alignment |
raw |
RawToStation |
|---|---|---|
Just before equation |
7099.999 |
129999.999 |
At equation point |
7100.000 |
140000.000 |
1 km past equation |
8100.000 |
141000.000 |
Reverse: StationToRaw(130000) = StationToRaw(140000) = 7100 —
both station labels resolve to the same physical raw distance.
Setout of 130000 and 140000 therefore produce identical X / Y /
elevation / bearing.
In the chainage range (130000, 140000) (exclusive) the
mapping is undefined — those station numbers don’t exist on the
alignment. Batch Setout automatically skips them so the
result table doesn’t contain bogus rows snapped to the alignment
start.
2.5.5.4. How to enter equations
Calculate ▸ Alignment Editor… ▸ Station Equations tab.
Two columns:
Station Back — the chainage you want the equation to occur at.
Station Ahead — the chainage stationing resumes with.
Press Apply. The engine sorts entries by Back, then derives the
internal RawStation for each one via StationToRaw(Back)
(accounting for any lower-chainage equations already added). You
do not enter the raw distance directly — that was a common
trap in earlier versions; entering a chainage into a raw-distance
field silently produced an equation past the alignment end which
never triggered. The new entry UI works purely in chainage.
On save (.alm, .iqz, or LandXML) the engine writes the
canonical record rawStation, back, ahead. On reload the
readers ignore the stored rawStation and recompute it
from StationToRaw(back) so files mis-edited by external tools
self-heal on the next open.
2.5.5.5. Where they live in the formats
Native ALM (
<Horizontal>):<StationEquations> <StaEq rawStation="7100" back="130000" ahead="140000"/> </StationEquations>
Legacy TCML/ALM (
<HorizontalAlignment>/<HElement>) — same<StationEquations>block, attached directly under<HorizontalAlignment>.LandXML 1.2 — standard
<StaEquation staInternal="…" staBack="…" staAhead="…"/>element directly under<Alignment>.ICAD `.iqz` / `.ixml` — uses its own
<StationEq raw="…" back="…" ahead="…"/>element (matching the IQCAD save format). Each path has its own attribute names but they all describe the same triple.
2.5.5.6. UI feedback
The alignment-tree node Station Equations shows the live count
in its label, e.g. Station Equations (1 elements). Selecting
it lists the equations in the main grid with columns #,
Internal Station, Station Back, Station Ahead (the
Internal Station column shows the derived raw distance —
informational, read-only).
Tools ▸ Alignment Report… includes a Station Equations section
with the Back / Ahead chainages so the equation is part of the
documentation.
The status-bar end chainage at the top of the main window honours
the equations: it shows RawToStation(TotalLength) so after
adding an equation that adds +10 000 to all downstream chainages,
the end station rises by +10 000 immediately.