Map: weather context — NWS warning polygons, radar with valid time/legend/loop, wind at the incident #237

Closed
opened 2026-10-05 02:08:35 -04:00 by logan · 1 comment
Owner

Problem

MapView.tsx:321 draws IEM's legacy nexrad-n0r composite, refreshed every 5 min, with no valid-time badge, legend or loop. Nothing in the stack calls api.weather.gov, so warning polygons (flood, severe thunderstorm, high wind, winter, heat) are absent. Weather drives a large share of wires-down, tree-down, flooding and crash calls.

Who asked

All 8 personas (TOC, NOC, RCC, GSOC, OEM, FD, NEWS, HOBBY). FD specifically: wind speed/direction at the address matters more than reflectivity.

Proposal

Phase 1 (this issue):

  • c2-core fetches api.weather.gov/alerts/active?area=<states served> server-side, caches (60-120 s), serves GeoJSON; map layer draws polygons coloured by event with expiry; incident panel shows 'inside ' chip.
  • Radar: switch to IEM n0q, add a valid-time badge, a dBZ legend, and an optional 1 h loop from IEM's time-stamped tiles.
  • Wind arrow (speed/gust) on fire/hazmat incidents from nearest METAR.
    Phase 2 (follow-up): USGS/NWPS river gauges coloured by flood category, NOAA CO-OPS tide/surge, MRMS QPE.

Data source and terms

api.weather.gov (US Government, public domain; requires a User-Agent with contact, rate-limited → server-side cache). IEM tiles (free, attribution; IEM asks heavy users to cache). aviationweather.gov METAR (public domain). USGS/NWPS/CO-OPS (public domain). No commercial-use blocker.

Effort

S (phase 1)

Acceptance criteria

  • Active NWS warnings for the served area render as polygons with event name and expiry; refresh without page reload.
  • Radar shows its valid time; a stale frame (> 15 min) is flagged.
  • Upstream failure shows the same honest feed-error banner pattern as 511, never a silently empty layer.

Reviewed against Server origin/main c4e1f9a (2026-10-05), from code only. Source: map persona panel 2026-10-05 (tracking issue lists all items).
Persona key: TOC = county PD real-time crime center supervisor; NOC = Con Ed electric ops NOC; RCC = MTA rail/bus control desk; GSOC = corporate security operations analyst; OEM = county emergency management duty officer; NEWS = TV newsroom assignment editor; FD = volunteer fire chief / county fire dispatcher; HOBBY = scanner power user / local journalist.

## Problem `MapView.tsx:321` draws IEM's legacy `nexrad-n0r` composite, refreshed every 5 min, with no valid-time badge, legend or loop. Nothing in the stack calls api.weather.gov, so warning polygons (flood, severe thunderstorm, high wind, winter, heat) are absent. Weather drives a large share of wires-down, tree-down, flooding and crash calls. ## Who asked All 8 personas (TOC, NOC, RCC, GSOC, OEM, FD, NEWS, HOBBY). FD specifically: wind speed/direction at the address matters more than reflectivity. ## Proposal Phase 1 (this issue): - c2-core fetches `api.weather.gov/alerts/active?area=<states served>` server-side, caches (60-120 s), serves GeoJSON; map layer draws polygons coloured by event with expiry; incident panel shows 'inside <warning>' chip. - Radar: switch to IEM `n0q`, add a valid-time badge, a dBZ legend, and an optional 1 h loop from IEM's time-stamped tiles. - Wind arrow (speed/gust) on fire/hazmat incidents from nearest METAR. Phase 2 (follow-up): USGS/NWPS river gauges coloured by flood category, NOAA CO-OPS tide/surge, MRMS QPE. ## Data source and terms api.weather.gov (US Government, public domain; requires a User-Agent with contact, rate-limited → server-side cache). IEM tiles (free, attribution; IEM asks heavy users to cache). aviationweather.gov METAR (public domain). USGS/NWPS/CO-OPS (public domain). No commercial-use blocker. ## Effort S (phase 1) ## Acceptance criteria - Active NWS warnings for the served area render as polygons with event name and expiry; refresh without page reload. - Radar shows its valid time; a stale frame (> 15 min) is flagged. - Upstream failure shows the same honest feed-error banner pattern as 511, never a silently empty layer. --- Reviewed against Server origin/main c4e1f9a (2026-10-05), from code only. Source: map persona panel 2026-10-05 (tracking issue lists all items). Persona key: TOC = county PD real-time crime center supervisor; NOC = Con Ed electric ops NOC; RCC = MTA rail/bus control desk; GSOC = corporate security operations analyst; OEM = county emergency management duty officer; NEWS = TV newsroom assignment editor; FD = volunteer fire chief / county fire dispatcher; HOBBY = scanner power user / local journalist.
logan added the
type
feature
area/maparea/osint
priority
p2
labels 2026-10-05 02:08:35 -04:00
logan closed this issue 2026-10-05 03:03:33 -04:00
Author
Owner

Reopening. The backend PR (merge f3b21cd) auto-closed this, but the map/wall half (warning polygons, n0q radar valid time/legend/loop, wind chip) is PR #277, which is still unmerged. #277 says Closes #237, so merging it closes this again.

Reopening. The backend PR (merge f3b21cd) auto-closed this, but the map/wall half (warning polygons, n0q radar valid time/legend/loop, wind chip) is PR #277, which is still unmerged. #277 says Closes #237, so merging it closes this again.
logan reopened this issue 2026-10-05 03:52:06 -04:00
logan closed this issue 2026-10-05 03:53:35 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: logan/server-26#237