Skip to content

feat(natural): add tropical cyclone tracking from NHC and GDACS#1357

Merged
koala73 merged 5 commits intomainfrom
feat/tropical-cyclone-tracking
Mar 10, 2026
Merged

feat(natural): add tropical cyclone tracking from NHC and GDACS#1357
koala73 merged 5 commits intomainfrom
feat/tropical-cyclone-tracking

Conversation

@koala73
Copy link
Copy Markdown
Owner

@koala73 koala73 commented Mar 10, 2026

Summary

  • Integrate NHC ArcGIS REST API (15 storm slots across AT/EP/CP basins) and GDACS TC field extraction for real-time tropical cyclone data
  • Add forecast tracks, uncertainty cones, and historical track paths with per-segment wind-based coloring on the globe
  • Add TC details popup with Saffir-Simpson color-coded category badge, wind/pressure/movement display

Changes

Proto (list_natural_events.proto):

  • Optional TC scalar fields: storm_id, storm_name, basin, storm_category, classification, wind_kt, pressure_mb, movement_dir, movement_speed_kt
  • Repeated messages: ForecastPoint, CoordRing (cone polygon), PastTrackPoint

Server + Seed (list-natural-events.ts, seed-natural-events.mjs):

  • NHC two-pass query: forecast points first, then cone/past data for active storms only
  • GDACS TC field extraction: wind speed parsing (kt/mph/km/h), pressure, storm name
  • Saffir-Simpson classification, coordinate/wind/pressure validation
  • Dedup: NHC > GDACS (by storm name) > EONET (by location)
  • Full parity between seed script and server handler

Globe (GlobeMap.ts):

  • Dashed red animated forecast track from current position
  • Per-segment past track with wind-based color ramp (gray/blue/yellow/orange/red)
  • Semi-transparent orange forecast cone polygon

Popup (MapPopup.ts):

  • TC details panel with storm name, classification badge, max wind (kt + mph), pressure, movement

Test plan

  • Verify TypeScript compiles (both tsconfig.json and tsconfig.api.json)
  • Check globe renders forecast tracks, past tracks, and cones when storms are active
  • Verify NHC data loads during Atlantic/Pacific hurricane season
  • Confirm GDACS TC events show wind/pressure in popup
  • Test layer toggle (natural on/off) hides/shows storm tracks and cones
  • Verify dedup: same storm from NHC and GDACS shows only NHC version

@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 10, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
worldmonitor Ready Ready Preview, Comment Mar 10, 2026 3:24am

Request Review

@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

koala73 added 5 commits March 10, 2026 07:22
Integrate NHC ArcGIS REST API (15 storm slots across AT/EP/CP basins)
and GDACS TC field extraction to provide real-time tropical cyclone data
with forecast tracks, uncertainty cones, and historical track paths.

- Proto: add optional TC fields (storm_id, wind_kt, pressure_mb, etc.)
  plus ForecastPoint, PastTrackPoint, CoordRing messages
- Server/seed: NHC two-pass query (forecast points then detail layers),
  GDACS wind/pressure parsing, Saffir-Simpson classification, dedup
  strategy (NHC > GDACS > EONET), pressureMb validation (850-1050),
  advisory date with Number.isFinite guard
- Globe: dashed red forecast track, per-segment wind-colored past track,
  semi-transparent orange forecast cone polygon
- Popup: TC details panel with color-coded category badge, wind/pressure
- Frontend mapper: forward all TC fields, convert CoordRing to number[][][]
- GDACS dedup now checks name + geographic proximity instead of name-only
- NHC classification uses stormtype field for subtropical/post-tropical
- TC popup labels use t() for localization instead of hardcoded English
- Storm center ScatterplotLayer with Saffir-Simpson wind coloring
- Past track PathLayer with per-segment wind-speed color ramp
- Forecast track PathLayer with dashed line via PathStyleExtension
- Cone PolygonLayer for forecast uncertainty visualization
- Tooltip and click routing for all new storm layer IDs
Track and cone layers carry lightweight objects without full NaturalEvent
fields. Clicking them would pass incomplete data to the popup renderer.
Only storm-centers-layer (which holds the full NaturalEvent) routes to
the natEvent popup. Tracks and cones remain tooltip-only.
…icks

Synthetic track/cone objects now carry _event reference to the parent
NaturalEvent. Click handler unwraps _event before passing to popup,
so clicking any storm element opens the full TC popup.
@koala73 koala73 force-pushed the feat/tropical-cyclone-tracking branch from 7c11e74 to 52126b6 Compare March 10, 2026 03:22
@koala73 koala73 merged commit 78e7ae5 into main Mar 10, 2026
2 of 3 checks passed
@koala73 koala73 mentioned this pull request Mar 10, 2026
@koala73 koala73 deleted the feat/tropical-cyclone-tracking branch March 14, 2026 21:49
aurel10 pushed a commit to aurel10/car_brand_veille that referenced this pull request Mar 20, 2026
…a73#1357)

* feat(natural): add tropical cyclone tracking from NHC and GDACS

Integrate NHC ArcGIS REST API (15 storm slots across AT/EP/CP basins)
and GDACS TC field extraction to provide real-time tropical cyclone data
with forecast tracks, uncertainty cones, and historical track paths.

- Proto: add optional TC fields (storm_id, wind_kt, pressure_mb, etc.)
  plus ForecastPoint, PastTrackPoint, CoordRing messages
- Server/seed: NHC two-pass query (forecast points then detail layers),
  GDACS wind/pressure parsing, Saffir-Simpson classification, dedup
  strategy (NHC > GDACS > EONET), pressureMb validation (850-1050),
  advisory date with Number.isFinite guard
- Globe: dashed red forecast track, per-segment wind-colored past track,
  semi-transparent orange forecast cone polygon
- Popup: TC details panel with color-coded category badge, wind/pressure
- Frontend mapper: forward all TC fields, convert CoordRing to number[][][]

* fix(natural): improve GDACS dedup, NHC classification, and TC popup i18n

- GDACS dedup now checks name + geographic proximity instead of name-only
- NHC classification uses stormtype field for subtropical/post-tropical
- TC popup labels use t() for localization instead of hardcoded English

* feat(map): add cyclone-specific deck.gl layers for 2D map

- Storm center ScatterplotLayer with Saffir-Simpson wind coloring
- Past track PathLayer with per-segment wind-speed color ramp
- Forecast track PathLayer with dashed line via PathStyleExtension
- Cone PolygonLayer for forecast uncertainty visualization
- Tooltip and click routing for all new storm layer IDs

* fix(map): remove click routing for synthetic storm track/cone layers

Track and cone layers carry lightweight objects without full NaturalEvent
fields. Clicking them would pass incomplete data to the popup renderer.
Only storm-centers-layer (which holds the full NaturalEvent) routes to
the natEvent popup. Tracks and cones remain tooltip-only.

* fix(map): attach parent NaturalEvent to synthetic storm layers for clicks

Synthetic track/cone objects now carry _event reference to the parent
NaturalEvent. Click handler unwraps _event before passing to popup,
so clicking any storm element opens the full TC popup.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant