Skip to content

Curves

Curves describe where the track bends and the geometry of those bends: the radius of the arc, the cant (the cross-level that lets a train lean into the turn), the curve type and direction, and the chainage points where the curve and its arc begin and end. A curve is a length of geometry that runs along one or more of your assets, so each curve links back to the track it sits on.

  • Represents: a length of curved track geometry and its design parameters
  • Body: a JSON array of curve objects
  • Keyed by: id — your external identifier, and the upsert key
  • Belongs to: the assets it runs along, via a non-empty assets list
  • Referenced by: the related assets through each entry’s assetId

A curve captures the shape of a bend rather than a physical part of the network. The geometry is recorded as a radius and cant, a curve type and direction, and start/end chainage for both the curve as a whole and its arc. Each value carries its own unit so the platform reads the figures correctly. Lifecycle dates (installed, designed, surveyed, removed) record when the geometry was set or last checked.

A curve’s identifier matters most. Choose something stable from your source system: re-importing the same id updates the curve in place. See how imports are upserts.

Every curve must name at least one asset it runs along. Each link carries the related asset’s assetId and, optionally, the shared geolocation block, so you can pin exactly where along that asset the curve falls. This places the curve geometry on the network: a curve with no assets has nothing to sit on.

Because curves reference assets by identifier, order matters. Import (or define) the assets before the curves that point at them, or send them together. A reference to an asset the platform doesn’t recognise passes request validation but surfaces later at job time; see Common Errors.

  • Send curves as a single array per call — one record or many.
  • Keep identifiers stable across imports; changing a curve’s id creates a new curve rather than updating the existing one.
  • Pair each measurement with its unit so radius, cant, and chainage values are read correctly.
  • New to importing? Start with Your first import to understand the job response.