Nexrad 3D is a web-native platform that provides real-time, three-dimensional weather radar visualization. The platform captures NEXRAD Level II streams, processes raw radial moments, and renders atmospheric volume directly in the browser using hardware-accelerated ray marching.
Architecture Overview
- Ingest Worker: Background poller for new upstream radar objects.
- Radar Parser: Extracts binary
Message 31sweeps and ODIM H5 data. - Frontend + API: Interactive UI and compact radial artifact delivery.
- Redis + Object Storage: Event fanout, state coordination, and blob persistence.
1. Data Ingestion & Processing
Radar sites publish elevation sweeps that are grouped into a single volume. The ingest-worker discovers new volumes, downloads raw binaries, and parses moments such as REF and VEL.
The parser transforms large raw arrays into optimized artifacts, then emits a Redis event to signal downstream clients that the newest volume is available.
2. Transport & Delivery
Instead of shipping heavy meshes, the API returns dense radial arrays and metadata. This reduces transfer cost while preserving volumetric fidelity for GPU-side reconstruction.
3. 3D WebGL Rendering (Volume Ray Marching)
Nexrad 3D uses a custom ray marching pipeline on top of three.js and maplibre-gl. The atmospheric field is uploaded as texture data and sampled per fragment in the shader.
- Re-project camera space into radar spherical coordinates.
- Sample radial indices to get localized reflectivity or moment values.
- Map values through product color scales.
- Discard low-value noise with threshold filtering.
Globe View vs. Local View
- Globe View: Projects radar onto a world map with synchronized map interactions.
- Local View: Focused orbital inspection around a single site for vertical storm structure analysis.
Inspired by OpenStorm and open-source weather analysis tooling.