Repository navigation
feat(displacement): internal displacement by region (IOM DTM, then IDMC events) #9014
Copy link
Copy link
Open
Description
Track internal displacement below the country level, not only UNHCR's yearly country totals.
Step 1: IOM DTM (shipped in #9015; fix #9130)
- Seed IOM DTM API v3 admin-1 rows daily (
DTM_API_KEYis set onseed-bundle-health), keeping each operation's latest round. - Serve them via
GetInternalDisplacement, draw IDP bubbles and region-to-region routes on the displacement layer, and add an Internal tab to the UNHCR panel. /api/healthprobedtmDisplacementuses an activation marker (seed-activated:displacement:dtm) until the first publish.
Step 2: IDMC event data (via HDX; seeder #9444, serving #9466, signals #9470, all merged)
- feat(displacement): show IDMC events on the map and panel, and in MCP (#9014) #9466: map points on the displacement layer, a Recent tab in the panel, and
get_displacement_dataview: "events"in MCP. The browser reads on-demand bootstrap keyidmcIduDisplacement. No REST endpoint yet:public/openapi.jsonhas no room (3 bytes left); it needs a budget recovery first. - IDMC enters figures a median of 23 days after the displacement (p90 65), so "same-week" is not achievable: feat(displacement): seed IDMC internal displacement events from HDX (#9014) #9444 flags surges on a 30-day window vs the prior 150 days and adds
newlyReported7dby publication date. - Source: IDMC's own per-country IDU event CSVs on HDX — 116 datasets named
<iso3>-idmc-idu-eventsunder organisationinternational-displacement-monitoring-centre-idmc. No key needed. Discover them with CKANpackage_search(fq=organization:international-displacement-monitoring-centre-idmc); all ~116 files (~36 MB) are re-read daily, ~29 s. - Columns follow the Helix IDU schema:
id, iso3, latitude, longitude, displacement_type (Conflict/Disaster), figure, displacement_date, event_id, event_name, category/type, sources, locations_*, description. - The files include events older than 180 days (the AFG file starts 2025-02-27), so the seeder filters to the last 180 days by
displacement_dateitself. - Seed daily for same-week surge detection, with
seed-metaand a health key. Credit IDMC. - Licence: HDX lists these as CC BY-IGO, but IDMC's API page says CC BY-NC-SA 3.0 IGO. IDMC confirmed by phone on 2026-10-20 that WorldMonitor may use the data; a confirming email is pending.
- The Helix API
client_id(requested from ch.datainfo@idmc.ch on 2026-10-07 and chased on 2026-10-16) is no longer a blocker. If it arrives, oneidus/last-180-dayscall can replace the ~116 per-country downloads.
Follow-ups
- REST endpoint for IDMC events after an OpenAPI budget recovery (about 3.2 KB).
- IDMC surges feed the cross-source signal feed as displacement-surge signals (feat(signals): emit IDMC internal displacement surges as cross-source signals (#9014) #9470, top five). The country instability index was left unchanged: no current surge is a Tier-1 country and IDMC lags by weeks; revisit if a Tier-1 country surges.
- Global cross-border arrivals and surge tracking: feat(displacement): global cross-border arrivals and surge tracking #9023.
- DTM in MCP:
get_displacement_dataview: "regions"(feat(mcp): serve IOM DTM regions from get_displacement_data (#9014) #9487, open). - The SVG (mobile) map has never drawn the displacement layer; this predates DTM.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
fix(health): declare the DTM activation-marker cutover (#9014)
feat(displacement): seed IDMC internal displacement events from HDX (#…
fix(displacement): pin IDU downloads to HDX, count late reports, exac…
feat(displacement): seed IDMC internal displacement events from HDX (#…
fix(displacement): name failed IDMC files and the data date in the Re…
feat(displacement): show IDMC events on the map and panel, and in MCP (…
feat(signals): emit IDMC internal displacement surges as cross-source…
Merge pull request #1 from sjmaple/cr/pr-9466
Merge pull request #5 from sjmaple/cr/pr-9470
docs(mcp): countries accepts names and ISO2 in the Chinese displaceme…
docs(mcp): countries and limit cover IDMC rows and DTM operations; un…
feat(mcp): serve IOM DTM regions from get_displacement_data (#9014) (#…