Skip to content
ZJ

Case study /09 · Delivered

CAEX Pollution Intelligence

Geospatial · Industrial Monitoring · Real-Time Visualization

A live geospatial monitoring interface for pollution routes, mining vehicles and operational decision-making.

CAEX turns raw vehicle telemetry from mining operations into a live map that answers an operational question: where is pollution being generated right now, and is it above threshold?

  • TypeScript
  • Real-time maps
  • Geospatial rendering
  • Time-series filtering
  • Operational dashboards
CAEX end-to-end telemetry to decision flow: haul-truck telemetry streams into a bounded vehicle model, joins pre-segmented routes, is evaluated against configurable thresholds and reconciled per frame into a live map and dashboard an operator acts on.

Context

Mining haul trucks (CAEX vehicles) continuously report position and emissions-related telemetry. Regulation and internal policy define thresholds; operations teams need to react while a shift is running, not in next week's report.

Problem

The dataset is large in two dimensions at once — many vehicles updating frequently, across long route networks with dense historical readings. The interface had to render both live movement and threshold-colored route history without stuttering.

Constraints

  • Telemetry arrives continuously; the map could never block on a full refresh.
  • Route segment coloring had to reflect configurable pollution thresholds exactly — this drives operational action.
  • Time-based filtering needed to slice large histories interactively.
  • Dashboards run all day on control-room screens; sustained memory behavior mattered as much as peak FPS.

Responsibilities

  • Real-time map architecture and rendering strategy.
  • Moving vehicle visualization with smooth interpolation between telemetry points.
  • Route segmentation and threshold-based coloring pipeline.
  • Time-range filtering over large geospatial datasets.
  • Operational dashboard views combining map, KPIs and alerts.

Architecture

  • Telemetry streams into the client through a subscription channel; the map maintains a bounded in-memory model of active vehicles and visible route segments.
  • Route geometry is pre-segmented so pollution values map to fixed segments — coloring becomes a data join, not a geometry recomputation.
  • Historical queries are windowed by the active time filter and viewport, never loaded wholesale.
  • Dashboard widgets subscribe to the same vehicle model as the map, so numbers and pixels can't disagree.

Key decisions

  • Interpolate vehicle motion client-side between telemetry points — smoothness comes from animation, not higher-frequency polling.
  • Precompute segment-level aggregates per time bucket so threshold coloring over a day of data is a lookup.
  • Cap simultaneously rendered history by zoom level, mirroring how operators actually inspect: wide view for patterns, close view for detail.
  • Keep threshold configuration in data, not code, so policy changes don't require deployments.

Implementation

  • A render loop reconciles vehicle positions once per frame from the latest telemetry snapshot, avoiding per-message re-renders.
  • Route segments carry pollution values per time bucket; the active filter selects the bucket and the style function colors by threshold band.
  • Time filtering drives both map layers and dashboard aggregates from one shared query state.
  • Alerting surfaces threshold breaches as both map emphasis and dashboard events.

Performance

  • Bounded vehicle and segment models keep memory flat across a full shift of streaming data.
  • Viewport + time windowing keeps geospatial queries proportional to what is on screen.
  • Frame-coherent updates (one reconciliation per frame) eliminated telemetry-driven jank.

Outcomes

  • Operations teams monitor pollution generation live instead of reconstructing it after the fact.
  • Threshold breaches are visible on the route itself, in context, at the moment they happen.
  • The rendering approach held up against the full fleet and route network it was designed for.
  • [PLACEHOLDER — add fleet size and data-volume figures here if publishable.]

Lessons

  • In monitoring UIs, predictable frame pacing beats raw feature count.
  • Pre-segmenting geometry converts a rendering problem into a data problem — the cheaper kind.
  • Operators trust interfaces that agree with themselves; shared state between map and KPIs is a correctness feature.

Software Architecture

Seven-stage flow from haul-truck telemetry to a threshold breach an operator can act on. 1. Vehicle telemetry: haul trucks report position and emissions continuously, fleet-wide, for the length of a shift. 2. Subscription channel: the client subscribes instead of polling, holding a bounded model of active vehicles that never blocks on a full refresh. 3. Route segment join: pre-segmented geometry meets pollution values per time bucket, so colouring is a data join rather than a geometry recomputation. 4. Threshold evaluation: configurable bands decide the colour, thresholds live in data so policy changes need no deployment, and breaches are flagged. 5. Frame reconciliation: one render pass per frame with client-side interpolation instead of per-message re-renders, keeping memory flat. 6. Live map and KPIs: map and dashboard share one model under viewport and time windowing, so numbers always match pixels on control-room screens. 7. Operator action: the breach is visible in context as it happens, with route emphasis and a dashboard event, allowing reaction within the shift. A threshold config loop shows policy edits re-evaluating bands without a deployment, and a time-filtering band ties one shared query state, windowed history and bucketed segment aggregates together so map and KPIs move as one.
Architecture diagram in four columns. Telemetry sources: CAEX vehicles reporting position and emissions, continuous high-frequency updates, the long haul-road route network, and policy config holding data-driven threshold bands. Stream layer: a push-based subscription channel, a bounded vehicle model covering active vehicles only, an interpolator smoothing motion between telemetry points, and a snapshot buffer that is the source for each rendered frame. Geospatial model: pre-segmented routes that turn colouring into a lookup, segment aggregates per time bucket, a viewport window limiting data to what is on screen, and a time window driven by the active filter. Interface: the live map with vehicles and coloured routes, dashboard widgets for KPIs and alerts, a style function mapping threshold band to colour, and shared query state so map and KPIs agree. A closing band covers sustained operation: all-day control-room screens, flat memory across a shift, frame-coherent updates and windowed queries only.