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.
At a glance
Section titled “At a glance”- 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
assetslist - Referenced by: the related assets through each entry’s
assetId
What it represents
Section titled “What it represents”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.
How it links to assets
Section titled “How it links to assets”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.
Using it
Section titled “Using it”- Send curves as a single array per call — one record or many.
- Keep identifiers stable across imports; changing a curve’s
idcreates 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.