Spatial Agents ingests real-time position and event data — maritime vessels, aircraft, severe-weather alerts, and active airspace restrictions — using public data sources that require no special credentials or government access.
The Automatic Identification System is a transponder-based tracking system
carried by all commercial vessels over 300 gross tonnes. Spatial Agents
connects to aisstream.io via WebSocket for continuous, real-time
vessel positions worldwide.
MMSI identifier, vessel name and type, latitude/longitude, heading, speed over ground, course over ground, destination, and navigation status.
Message types: Position Reports (1-3, 18-19) and Ship Static Data (5, 24).
The WebSocket connection includes automatic reconnection with exponential backoff. Position records are decoded from NMEA 0183 format via the pyais library and immediately assigned H3 cell IDs at all configured resolutions.
Automatic Dependent Surveillance-Broadcast is the standard for aircraft position reporting. Spatial Agents polls the OpenSky Network REST API for state vectors within configurable bounding boxes.
ICAO24 hex address, callsign, position, barometric altitude, ground speed, vertical rate, heading, on-ground status, and squawk code.
The polling interval is 30 seconds to stay within OpenSky's rate limits. Raw state vectors are converted from metric (m/s, m) to aviation units (knots, feet per minute) and enriched with H3 cell assignments.
Active alerts from the National Weather Service public API
(api.weather.gov/alerts/active). Each alert is a CAP
(Common Alerting Protocol) record with a published polygon — tornado
warnings, severe thunderstorm warnings, flood warnings, marine
advisories, and so on. Spatial Agents polls every 5 minutes and
serves alerts as native NWS GeoJSON plus a mixed-resolution H3
compact cell cover for spatial joins against entity positions.
CAP id, event type, severity (Extreme / Severe / Moderate / Minor), headline, long description, issuing NWS office, effective and expiration timestamps, and an authoritative GeoJSON polygon or multi-polygon for each alert.
Each alert is tagged with the active region names its polygon intersects, and shipped with a pre-rendered GeoJSON MultiPolygon of its H3 compact cell cover so clients can visualize the cell approximation without an h3-js dependency.
Active TFRs (Temporary Flight Restrictions) are the geometry-bearing
subset of the FAA's NOTAM stream — Notices to Air Missions covering
presidential movements, sporting events, fires, hazards, space
operations, and security airspace. Spatial Agents pulls the FAA
GeoServer WFS feed (tfr.faa.gov/geoserver/TFR) every
15 minutes and serves the boundary polygons identically to weather
alerts: native GeoJSON plus an H3 compact cell cover.
NOTAM id (e.g. 6/5779), TFR category — SECURITY, VIP,
HAZARDS, SPACE OPERATIONS, AIR SHOWS/SPORTS, UAS PUBLIC GATHERING,
SPECIAL, FIRE — title text, US state, issuing ARTCC facility, last
modification timestamp, polygon, and H3 compact cells.
TFRs are colored by category on the live map: security purple, hazards red, VIP pink, space operations sky, air shows teal. Click any polygon for the NOTAM detail.
Point-based NOTAMs (runway closures, navaid outages, etc.) are not yet ingested — they live in the FAA NOTAM API which requires an API key and renders as airport-tied markers rather than polygons.
Two-Line Element sets from public catalogs provide orbital parameters for active satellites. TLE parsing enables position propagation using SGP4 models, supporting orbital domain awareness alongside maritime and aviation.
Live feed data is available through the REST API. Query by H3 cell to get all entities within a spatial region:
| Endpoint | Returns |
|---|---|
/api/vessels?region=<name> | All vessels (or one region) |
/api/aircraft?region=<name> | All aircraft (or one region) |
/api/weather/alerts?region=<name> | NWS active alerts (CONUS or region) |
/api/tfr?region=<name> | FAA active TFRs (CONUS or region) |
/health | Feed connection status and message rates |
Every active CONUS Temporary Flight Restriction, fetched live from
/api/tfr with no region filter. Updated every 15 minutes.
Fetching the live FAA TFR feed.