NHC
Integration with the National Hurricane Center providing real-time tropical cyclone advisories, position data, intensity measurements, and forecast links.
Overview
The National Hurricane Center (NHC) is a division of NOAA that provides authoritative tracking and forecasting for tropical cyclones in the Atlantic and Eastern Pacific basins. While GDACS also covers tropical cyclones globally, the NHC provides more frequent updates and detailed advisory information for storms in its coverage area.
TerraGuard polls the NHC API every 5 minutes to track active storms.
What NHC Provides
NHC data focuses exclusively on tropical cyclone systems:
| Data Point | Description |
|---|---|
| Storm ID | Unique identifier (e.g., AL052026) |
| Name | Storm name (e.g., "Maria") |
| Classification | Storm category (HU, TS, TD, STS, STD, PTC) |
| Intensity | Maximum sustained wind speed in knots |
| Pressure | Central pressure in millibars |
| Position | Current latitude/longitude |
| Movement | Direction and speed of movement |
| Advisory URLs | Links to public, forecast, and discussion advisories |
Data Format
NHC provides an ActiveStorms JSON response listing all currently tracked tropical systems:
{
"activeStorms": [
{
"id": "AL052026",
"binNumber": "AT5",
"name": "Maria",
"classification": "HU",
"intensity": 110,
"pressure": 955,
"latitudeNumeric": 23.4,
"longitudeNumeric": -75.2,
"movementDir": 315,
"movementSpeed": 12,
"lastUpdate": "2026-03-28T15:00:00Z",
"publicAdvisory": {
"issuance": "2026-03-28T15:00:00Z",
"url": "https://www.nhc.noaa.gov/text/refresh/MIATCPAT5+shtml/..."
},
"forecastAdvisory": {
"issuance": "2026-03-28T15:00:00Z",
"url": "https://www.nhc.noaa.gov/text/refresh/MIATCMAT5+shtml/..."
},
"forecastDiscussion": {
"issuance": "2026-03-28T15:00:00Z",
"url": "https://www.nhc.noaa.gov/text/refresh/MIATCDAT5+shtml/..."
}
}
]
}Key Properties
| Property | Type | Description |
|---|---|---|
id | string | NHC storm identifier (e.g., AL052026) |
name | string | Assigned storm name |
classification | string | Storm classification code |
intensity | float | Maximum sustained wind speed (knots) |
pressure | float | Central pressure (millibars) |
latitudeNumeric | float | Current latitude |
longitudeNumeric | float | Current longitude |
movementDir | float | Direction of movement (degrees) |
movementSpeed | float | Speed of movement (knots) |
lastUpdate | ISO 8601 | Last advisory issuance time |
publicAdvisory | object | Link to public advisory text |
forecastAdvisory | object | Link to forecast advisory |
forecastDiscussion | object | Link to forecast discussion |
Classification Codes
NHC uses specific codes for storm classifications:
| Code | Name | Description |
|---|---|---|
HU | Hurricane | Sustained winds >= 64 knots |
TS | Tropical Storm | Sustained winds 34-63 knots |
TD | Tropical Depression | Sustained winds < 34 knots |
STS | Subtropical Storm | Subtropical system with storm-force winds |
STD | Subtropical Depression | Subtropical system below storm force |
PTC | Post-tropical Cyclone | Former tropical system |
Alert Level Mapping
TerraGuard maps NHC storm intensity to alert levels using Saffir-Simpson scale thresholds:
The specific thresholds in the adapter:
| Wind Speed (knots) | Alert Level | Category |
|---|---|---|
| >= 137 | RED | Category 5 |
| >= 96 | RED | Category 3-4 (Major Hurricane) |
| >= 64 | ORANGE | Category 1-2 |
| >= 34 | GREEN | Tropical Storm |
| < 34 | GREEN | Tropical Depression |
How the Adapter Works
1. Polling
The adapter fetches the NHC active storms endpoint:
GET https://www.nhc.noaa.gov/CurrentStorms.json2. Event ID Construction
NHC storm IDs are prefixed with nhc: for namespacing:
nhc:{storm_id}For example, storm AL052026 becomes nhc:AL052026.
3. Normalization
The adapter constructs a human-readable title from the classification and name:
| Classification | Name | Title |
|---|---|---|
HU | Maria | "Hurricane Maria" |
TS | Alberto | "Tropical Storm Alberto" |
TD | -- | "Tropical Depression [name]" |
The description includes key measurements:
"Hurricane Maria with max sustained winds of 110 knots and central pressure of 955 mb"
4. Measurements Extracted
Three measurements are recorded for every storm:
| Measurement | Source Field | Unit | Primary |
|---|---|---|---|
| Max wind speed | intensity | knots | Yes |
| Central pressure | pressure | mb | No |
| Movement speed | movementSpeed | knots | No |
5. Advisory URLs
The adapter collects all available advisory URLs from the response and stores them in SourceURLs:
| Key | Description |
|---|---|
public_advisory | Public advisory text |
forecast_advisory | Forecast advisory data |
forecast_discussion | Meteorologist discussion |
windspeed_probabilities | Wind speed probability graphics |
best_track_gis | GIS data for the storm track |
earliest_arrival_msw | Earliest arrival of storm-force winds |
most_likely_time_msw | Most likely timing of storm-force winds |
NHC vs. GDACS for Tropical Cyclones
Both NHC and GDACS report tropical cyclones, but they serve different purposes:
| Aspect | NHC | GDACS |
|---|---|---|
| Coverage | Atlantic + Eastern Pacific | Global |
| Update frequency | Every advisory (~6 hours, more during active storms) | Every episode update |
| Measurements | Wind speed (knots), pressure (mb) | Wind speed (km/h) |
| Advisory links | Full advisory text URLs | GDACS report page |
| Alert level | Saffir-Simpson based | GDACS impact model based |
The Event Processor's correlation pipeline handles the overlap -- when both sources report the same storm, they are correlated to the same DisasterEvent using the spatial/temporal matching with the match_by_name: true setting for tropical cyclones (150km radius, 12-hour window).
Polling Configuration
| Setting | Default | Description |
|---|---|---|
NHC_ENABLED | true | Enable/disable the NHC adapter |
NHC_POLL_INTERVAL | 5m | How often to poll the NHC API |
NHC_API_URL | https://www.nhc.noaa.gov/CurrentStorms.json | API endpoint |
FETCH_TIMEOUT | 15s | HTTP request timeout |
USGS
Integration with the USGS Earthquake Hazards Program providing real-time seismic event data with magnitude, depth, and multi-network ID aliasing.
Google Flood Forecasting
Integration with Google's Flood Forecasting API to ingest forward-looking flood predictions, gated by a severity filter and a GeoPop population check before they enter the event pipeline.