GDACS
Integration with the Global Disaster Alert and Coordination System providing multi-hazard event data including earthquakes, tropical cyclones, floods, droughts, wildfires, tsunamis, and volcanoes.
Overview
GDACS (Global Disaster Alert and Coordination System) is the primary data source for TerraGuard. It is a cooperation framework between the United Nations, the European Commission, and disaster management organizations worldwide. GDACS provides near-real-time alerts about natural disasters and tools to facilitate response coordination.
TerraGuard polls the GDACS API every 5 minutes to ingest events across all disaster types.
What GDACS Provides
GDACS covers the broadest range of disaster types of any TerraGuard data source:
| Event Type | GDACS Code | Description |
|---|---|---|
| Earthquake | EQ | Seismic events worldwide |
| Tropical Cyclone | TC | Hurricanes, typhoons, cyclones |
| Flood | FL | River and flash flooding |
| Drought | DR | Extended dry conditions |
| Wildfire | WF | Forest and brush fires |
| Tsunami | TS | Ocean wave events |
| Volcano | VO | Volcanic eruptions and activity |
Data Format
GDACS returns events as a GeoJSON FeatureCollection. Each feature represents a single event or episode:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [29.0875, 37.7749]
},
"properties": {
"eventid": 1234567,
"episodeid": 1,
"eventtype": "EQ",
"name": "Earthquake in Turkey",
"alertlevel": "Red",
"alertscore": 3.5,
"country": "Turkey",
"description": "M 6.5 earthquake...",
"fromdate": "2026-03-28T10:15:00Z",
"todate": "2026-03-28T10:15:00Z",
"datemodified": "2026-03-28T10:30:00Z",
"severitydata": {
"severity": 6.5,
"severityunit": "M"
},
"htmldescription": "https://www.gdacs.org/report.aspx?eventid=1234567"
}
}
]
}Key Properties
| Property | Type | Description |
|---|---|---|
eventid | integer | Unique GDACS event identifier |
episodeid | integer | Episode number (events can have multiple episodes) |
eventtype | string | Event type code (EQ, TC, FL, DR, WF, TS, VO) |
alertlevel | string | Alert level: "Red", "Orange", or "Green" |
alertscore | float | Numeric severity score |
country | string | Primary affected country |
name | string | Human-readable event name |
description | string | Brief event description |
fromdate | ISO 8601 | Event start time |
todate | ISO 8601 | Event end time (same as fromdate for instantaneous events) |
datemodified | ISO 8601 | Last modification timestamp |
severitydata | object | Contains severity (value) and severityunit (unit) |
htmldescription | string | URL to the GDACS detail page |
Alert Level System
GDACS uses a three-tier alert level system based on the predicted humanitarian impact:
TerraGuard maps these directly to its own alert level enum:
| GDACS Level | TerraGuard Level |
|---|---|
Red | RED |
Orange | ORANGE |
Green | GREEN |
How the Adapter Works
The GDACS adapter in the Event Processor (internal/adapter/gdacs.go) handles the full ingestion flow:
1. Polling
The adapter fetches the GDACS events API:
GET https://www.gdacs.org/gdacsapi/api/events/geteventlist/EVENTS4APP
Accept: application/json2. Event ID Construction
GDACS events are identified by a composite key of eventid and episodeid. The adapter constructs a canonical source event ID:
gdacs:{eventid}:{episodeid}For example, event 1234567, episode 1 becomes gdacs:1234567:1.
3. Normalization
The adapter maps GDACS fields to the NormalizedEvent format:
| GDACS Field | NormalizedEvent Field | Notes |
|---|---|---|
eventtype | EventType | Mapped via lookup (EQ -> EARTHQUAKE, TC -> TROPICAL_CYCLONE, etc.) |
alertlevel | AlertLevel | Direct mapping (Red -> RED, Orange -> ORANGE, Green -> GREEN) |
name | Title | Falls back to [EventType] in [Country] if name is empty |
fromdate | EventTime | Parsed from ISO 8601 or Unix milliseconds |
datemodified | SourceLastUpdated | Used for staleness checking |
severitydata.severity | PrimaryMeasurement | Unit depends on event type (M for EQ, km/h for TC) |
geometry.coordinates | Location | Extracted as GeoPoint (lat, lon) |
4. Measurement Extraction
Measurements are extracted based on event type from the severitydata object:
| Event Type | Measurement | Unit |
|---|---|---|
| Earthquake | Magnitude | M |
| Tropical Cyclone | Wind speed | km/h |
| Flood | Severity | severity |
| Drought | Severity | severity |
| Wildfire | Severity | severity |
| Tsunami | Severity | severity |
| Volcano | Severity | severity |
The alertscore is always recorded as a secondary measurement.
GDACS Unique Characteristics
Event vs. Episode
GDACS distinguishes between events and episodes. An earthquake is a single event, but a tropical cyclone may have multiple episodes (advisories) as it develops. The Event Processor handles this through its correlation pipeline -- multiple episodes with the same eventid are correlated to the same DisasterEvent in the database.
Impact Geometry
For some event types (particularly tropical cyclones and floods), GDACS provides polygon geometries representing the estimated impact area. The adapter passes this through as ImpactGeometry in the normalized event, which is stored alongside the point location.
Severity Data
The severitydata object contains the primary measurement in source-specific units. The adapter normalizes the unit string based on the event type, ensuring consistent measurement types across the platform.
Polling Configuration
| Setting | Default | Description |
|---|---|---|
GDACS_ENABLED | true | Enable/disable the GDACS adapter |
GDACS_POLL_INTERVAL | 5m | How often to poll the GDACS API |
GDACS_API_URL | https://www.gdacs.org/gdacsapi/api/events/geteventlist/EVENTS4APP | API endpoint |
FETCH_TIMEOUT | 15s | HTTP request timeout |
GeoPop API
Rust-based reverse geocoding and population analysis service providing exposure assessments, land/sea detection, and country lookups for disaster events.
USGS
Integration with the USGS Earthquake Hazards Program providing real-time seismic event data with magnitude, depth, and multi-network ID aliasing.