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.