Mapping Iraq’s 2024 Census Population onto OSM Administrative Boundaries (admin_level 2–6)
Posted by Rawaz on 1 September 2026 in English.How this started
A researcher from Puerto Rico reached out to me with a question about sub-national population figures in Iraq. While trying to help, I realised something surprising: although Iraq had conducted its first full population and housing census in decades — the 2024 Iraq Census — those population figures had not been mapped onto the administrative boundaries in OpenStreetMap. The data existed and was public; it simply had never been connected to the polygons.
This diary documents the work of closing that gap, from the national level down to district (qada) level, and — just as importantly — it records why some of the numbers on the official Arabic source do not line up one-to-one with the population now tagged on OSM polygons. If you are comparing the source document against OSM and something looks off, this entry is meant to explain it.
Primary source
The governorate and district figures come from the published 2024 census results:
https://alssaa.com/post/show/43032-iraq-2024-population-census-results-for-the-governorates
The page is in Arabic and lists each governorate’s total and a breakdown by qada (district). I worked from this document throughout. Where I refer to a name by translating it from the Arabic source, I put the translation in quotation marks — the official/authoritative spelling is the Arabic one, and I don’t want to imply my English rendering is canonical.
The guiding principle: population follows the polygon
The single most important decision in this whole exercise: each population figure was tagged onto the OSM polygon that geographically contains that place — not necessarily onto the governorate or district the census table lists it under.
This matters because Iraq has disputed and cross-listed territories where the census table and the OSM boundary disagree about which governorate a place belongs to. In every such case I let the OSM polygon decide where the number goes, and I documented the deviation. The result is that OSM stays internally consistent (a polygon’s population reflects what is inside that polygon), even where that means a governorate’s tagged total differs slightly from the census table’s governorate total.
The journey: national → governorate → district
admin_level 2 — the country
Iraq (relation 304934) already carried the correct national total, so this was a verification step rather than an edit:
population=46118793population:date=2024source:population=2024 Iraq Census
admin_level 3 — the Kurdistan Region
The Kurdistan Region (relation 5392650) sits between the country and the governorates. It already carried population=6519129 (2024), which matches the sum of the four Kurdish governorates in the census (Erbil, Sulaymaniyah, Duhok, Halabja). Verified, no change needed.
admin_level 4 — the governorates
I checked all 19 governorate polygons. Most already carried correct census figures. The important structural points:
- OSM models Halabja as its own governorate (relation 3826029), whereas the census table folds Halabja in with Sulaymaniyah. OSM’s split reflects Halabja’s status as a separate governorate: the Kurdistan Region recognised Halabja as its fourth governorate around 2013–2014, though federal Iraq only made it official much later — the Iraqi parliament voted on 14 April 2025 and the law was published in the official gazette on 5 May 2025, making Halabja Iraq’s 19th governorate. The census’s combined “Sulaymaniyah” figure is therefore distributed across OSM’s separate Sulaymaniyah and Halabja polygons.
- Duhok (relation 2969732) is tagged 1,530,592 — see the Shaykhan note below for why this deliberately excludes one disputed district.
admin_level 6 — the districts (qada)
This is where the bulk of the work happened: tagging population on individual district polygons, using the census qada breakdown. The primary tags added on each district were:
population=<figure>population:date=2024source:population=2024 Iraq Census
I worked governorate by governorate, and for every district I verified the district figures summed back to the governorate total before tagging.
Primary tags used
Across all levels the population tagging uses standard keys:
population— the integer countpopulation:date—2024source:population—2024 Iraq Census
Why some census numbers don’t match OSM polygons one-to-one
This is the section to read if you’re cross-referencing the Arabic document against OSM and puzzled by a mismatch. There are three distinct reasons.
1. Disputed / cross-listed districts (population follows the polygon)
Some districts appear in two governorate tables in the census, or are listed under a governorate that differs from where OSM draws the boundary. In each case I tagged the OSM polygon that physically contains the district, and used the figure consistent with that polygon.
- “Shaykhan” (الشيخان) appears in both the Nineveh table (117,621) and the Duhok table (69,279) — it is a single disputed district counted in two places. OSM draws its polygon (relation 3829511) inside Nineveh, so I tagged it 117,621 there. As a direct consequence, OSM’s Duhok governorate total (1,530,592) is exactly 69,279 lower than the census’s Duhok table total — because those people are counted once, inside Nineveh, where the polygon places them. This is not an error; it is the disputed boundary handled consistently.
- “Kifri” (كفري) — OSM’s polygon (relation 11063403) lies in Diyala, so it carries the Diyala-table figure 66,437. (It had previously been tagged 50,714, the Kurdistan-side slice; I corrected it to match the polygon.)
- “Khanaqin” (خانقين) — polygon (relation 11063394) is in Diyala and carries the Diyala figure 260,907.
- “Makhmur” (مخمور) — counted under Nineveh in the census and drawn inside Nineveh by OSM; the two agree, so no adjustment.
The general rule: if a governorate’s OSM total doesn’t match the census table, a disputed district on its border is almost always the reason, and the difference will equal that district’s population.
2. Composite districts (OSM has one polygon where the census lists several units)
In many governorates the census lists sub-district (nahiya) rows, or lists districts that OSM does not model as separate polygons. Where OSM has a single polygon covering an area that the census splits into several rows, I summed those rows and tagged the total on the one polygon — otherwise the people in the unmapped units would be lost. Each such polygon’s tagged value is therefore larger than the matching single row in the census table.
The composite districts, with what each is made of:
Anbar
- Al-Ramadi (11059955) = 716,314 — Ramadi 573,672 + الحبانية / “Habbaniyah” 142,642
- Al-Falluja (11059954) = 710,773 — Falluja 485,474 + الكرمة / “Karma” 147,125 + العامرية / “Amiriyah” 78,174
- Al-Qa’im (11059980) = 185,229 — Qa’im 140,923 + العبور / “Ubur” 44,306
Diyala
- Al-Khalis (11063406) = 431,184 — Khalis 356,395 + المنصورية / “Mansuriyah” 74,789
- Balad Ruz (11063398) = 166,845 — Balad Ruz 117,497 + مندلي / “Mandali” 49,348
Karbala
- Karbala (11058046) = 1,476,842 — Karbala markaz 811,368 + الحر / “Al-Hurr” 362,102 + الحسينية / “Al-Husayniyah” 194,589 + الجدول الغربي / “Al-Jadwal al-Gharbi” 108,783
Wasit
- Al-Suwaira (11052280) = 292,092 — Suwaira 226,734 + الزبيدية / “Zubaidiyah” 65,358
- Al-Hai (11052272) = 197,969 — Hai 136,984 + الموفقية / “Muwaffaqiyah” 60,985
- Al-Nu’maniya (11052275) = 196,006 — Nu’maniya 135,177 + الأحرار / “Ahrar” 60,829
Maysan
- Amarah (11045978) = 759,526 — Amara 719,898 + الكميت / “Kumait” 39,628
- Note: OSM’s “Western Ali District” (11045982) is the census علي الغربي / “Ali al-Gharbi” — a name difference, not a data difference.
Dhi Qar
- Al-Nasiriyah (11044703) = 845,276 — Nasiriyah 789,847 + البطحاء / “Al-Batha” 55,429
- Souq al-Shuyukh (11044692) = 373,378 — Souq al-Shuyukh 279,085 + كرمة بني سعد / “Karma Bani Sa’d” 94,293
- Al-Rifa’i (11044709) = 308,533 — Rifa’i 194,946 + النصر / “Al-Nasr” 113,587
Basra
- Al-Basrah (11042188) = 1,531,202 — Basra 1,337,707 + الهارثة / “Al-Hartha” 193,495
- Al-Zubair (11042178) = 682,482 — Zubair 598,460 + سفوان / “Safwan” 84,022
- Al-Qurnah (11042193) = 345,827 — Qurna 211,499 + الدير / “Al-Dair” 134,328
- Al-Midaina (11042180) = 309,525 — Madina 196,008 + الصادق / “Al-Sadiq” 113,517
Muthanna
- Al-Samawa (11042617) = 443,656 — Samawa 373,770 + السوير / “Al-Suwair” 69,886
- Al-Rumaitha (11042619) = 300,238 — Rumaitha 141,946 + المجد / “Al-Majd” 59,570 + الهلال / “Al-Hilal” 51,482 + النجمي / “Al-Najmi” 47,240
Qadisiyah (OSM has only 4 polygons; the census lists 13 units)
- Al-Diwaniyah (11048766) = 704,743 — Diwaniyah + الدغارة / “Daghara” + الشافعية / “Shafiya” + السنية / “Saniya”
- Al-Shamiya (11048776) = 292,108 — Shamiya + غماس / “Ghammas” + المهناوية / “Mahnawiya”
- Al-Hamza (11048771) = 266,560 — Hamza + السدير / “Al-Sadir” + الشنافية / “Al-Shanafiya”
- Afak (11048764) = 213,899 — Afak + آل بدير / “Al-Badir” + سومر / “Sumer”
Baghdad
- Al-Kadhimiya (2964709) = 1,085,792 — سما الكاظمية / “Sama al-Kadhimiyah” 639,059 + Kadhimiyah markaz 238,720 + فضاء الكاظمية / “Fada al-Kadhimiyah” 208,013
- Al-Istiqlal (11083458) = 323,517 — الزهور / “Al-Zuhur” 250,170 + الراشدية / “Al-Rashidiyah” 73,347. (Al-Istiqlal is a newer district with no standalone census row; its two nahiya sit inside this polygon.)
Erbil / Kurdistan — a few Erbil districts absorbed neighbouring units that OSM does not model separately:
- Erbil District = 1,329,246 — Erbil 1,288,538 + عنكاوة / “Ankawa” 40,708 (no separate Ankawa polygon exists)
- Soran District = 198,805 — Soran 179,596 + سيدكان / “Sidakan” 19,209 (no separate Sidakan polygon exists)
- The Bnaslawa district polygon appears in OSM as دەشتی هەولێر / “Dashti Hawler” (Kurdish).
3. Districts still pending (Babil)
Two Babil polygons are deliberately left untagged for now, because the census and OSM disagree in a way I could not resolve cleanly at district level without risking double-counting:
- Al-Hashimiyah (الهاشمية) (11053207)
- “Western Al-Hamzah” (الحمزة الغربي) — centred on “Al-Madhatiyah” (المدحتية) (11053204)
The census reports a القاسم / “Al-Qasim” qada (247,784) and a الهاشمية / Hashimiyah qada (359,137), while OSM nests these differently: OSM places القاسم / “Al-Qasim” as a sub-district inside the Al-Hashimiyah district polygon, and models المدحتية / “Al-Madhatiyah” — historically split from the Hashimiyah district — as its own separate district polygon (labelled الحمزة الغربي / “Western Al-Hamzah”). The census does not break the Hashimiyah figure down finely enough to know how much of it belongs to the Al-Madhatiyah polygon versus the Hashimiyah-centre area, so I could not split it across the two OSM polygons without guessing. Rather than invent a split, I tagged the other five Babil districts (الحلة / Hilla, المسيب / Musayyib, المحاويل / Mahawil, الكفل / Kifl, كوثى / Kutha) and left these two untagged.
The figures, for anyone who wants to assign them (at their own risk): the two polygons together hold 606,921 — that is القاسم / “Al-Qasim” 247,784 + الهاشمية / Hashimiyah 359,137. One reading (following OSM’s nesting, with Al-Qasim inside Al-Hashimiyah) would put the whole 606,921 on Al-Hashimiyah (11053207) and leave “Western Al-Hamzah” (11053204) blank. Another reading would put 247,784 on the “Western Al-Hamzah” polygon and 359,137 on Al-Hashimiyah. Neither is confirmed by the census — which is exactly why I left them untagged — so whoever assigns these should pick one, document their choice, and understand it is not certain. Either way the population is not lost: it remains accounted for in the governorate total (2,482,324).
Summary of what changed on OSM
- Verified national (admin_level 2) and Kurdistan Region (admin_level 3) totals.
- Verified/confirmed all 19 governorate (admin_level 4) figures, keeping Halabja separate and Duhok excluding disputed Shaykhan, per the polygons.
- Tagged
population,population:date=2024,source:population=2024 Iraq Censuson district (admin_level 6) polygons across all governorates except two pending Babil districts. - Corrected one district (Kifri) whose previous tag did not match the polygon’s governorate.
- Wherever the census splits an area into units OSM does not model, summed those units onto the containing polygon (documented above).
- Throughout: population assigned to the polygon that geographically contains it.
A note for anyone comparing the census to OSM
If a governorate or district total on OSM doesn’t match the Arabic census document, it will be one of three things, all intentional:
- a disputed district whose polygon OSM places in a different governorate than the census table (e.g. Shaykhan, Kifri);
- a composite polygon whose tag sums several census rows because OSM has one polygon where the census has several units;
- the two pending Babil districts (الهاشمية / Al-Hashimiyah and الحمزة الغربي / “Western Al-Hamzah”), not yet tagged, holding 606,921 between them.
None of these are data errors — they are the unavoidable consequence of reconciling a tabular census with a set of real-world polygons, resolved in favour of the polygon.
Source: 2024 Iraq Census — governorate and district results, published at alssaa.com (https://alssaa.com/post/show/43032-iraq-2024-population-census-results-for-the-governorates).
Discussion
Comment from Rawaz on 1 September 2026 at 08:19
Update — Babil complete: the last two districts are now tagged
A follow-up to close the loop on the two Babil districts I had left untagged: Al-Hashimiyah District (11053207) and Al-Hamzah Al-Gharbi District (11053204). Both now carry 2024 census population, and the reasoning is worth documenting because it turned out to be the most tangled case in the whole country.
Why these two were hard
The published governorate/district summary I worked from originally gave two figures for this area: الهاشمية / “Al-Hashimiya” qada 359,137 and القاسم / “Al-Qasim” qada 247,784 — two separate districts. But OSM does not draw them the same way the census counts them. OSM nests the sub-districts (nawāḥī) like this:
So OSM’s “Al-Hashimiyah District” polygon is not the same area as the census “Al-Hashimiya qada”: OSM puts القاسم / “Al-Qasim” inside its Hashimiyah polygon, while the census treats القاسم / “Al-Qasim” as a district in its own right. The two schemes cut the same ground differently, which is exactly why I could not resolve these two from the summary alone — I did not want to guess a split.
What resolved it
The Iraqi Central Statistical Organisation (COSIT) published the full, detailed census report — 500+ pages, down to sub-district (nahiya) and even village (qarya / mahalla) level. I retrieved it here:
https://cosit.gov.iq/images/census2024/تقرير%20نتائج%20تعداد%202024.pdf
The nahiya breakdown under الهاشمية / “Al-Hashimiya” qada (report pages 339–342) reads:
Al-Qasim is reported separately as its own qada — 247,784 (القاسم).
How the population was assigned (population follows the polygon)
Applying the same rule used throughout this project — each figure goes on the OSM polygon that geographically contains it, not on whichever district the census labels it under — the two OSM district polygons resolve cleanly:
The two OSM district polygons together hold 606,921, which equals the census الهاشمية / “Al-Hashimiya” qada (359,137) + القاسم / “Al-Qasim” qada (247,784). The checksum closes exactly.
One caveat for anyone cross-referencing
Because OSM includes القاسم / “Al-Qasim” inside its Al-Hashimiyah District polygon, the OSM polygon totals do not match the census’s published qada figures, and they are not meant to:
Both numbers are correct for the area each polygon actually encloses. This is the same principle applied to the disputed districts earlier in the project (الشيخان / “Shaykhan”, كفري / “Kifri”): the tag reflects what is inside the polygon, and the composition is spelled out so the figures can be traced back to the census.
Still open (a small one)
At sub-district level, the census reports the مركز قضاء الهاشمية / “Hashimiya district centre” as a single figure of 55,458, but OSM splits that same central area into two nahiya polygons — مركز قضاء الهاشمية / “Al-Hashimiyah Central” (11053210) and الطليعة / “Al-Tulayah” (11053209). The census does not break the 55,458 between them (الطليعة / “Al-Tulayah” does not appear as a separate nahiya in the report), so I have not split it. If a finer source appears, those two sub-district polygons can be populated; the district-level figures above are unaffected and remain exact.
With this, all admin_level 6 district polygons across Iraq now carry 2024 census population — the mapping is complete.
Comment from Rawaz on 1 September 2026 at 11:18
Population reference table — admin levels 2, 4 and 6
A consolidated reference for the 2024 census population now tagged on OSM: the national total (admin_level 2), each governorate (admin_level 4), and every district within it (admin_level 6). Names are in English and local script (Arabic, or Kurdish for the Kurdistan Region governorates); relation numbers link to openstreetmap.org.
Each governorate block ends with a checksum row so the arithmetic is visible at a glance: the sum of the district polygons is shown directly beneath the governorate tag, and the two match.
The Kurdistan Region (admin_level 3) relation is deliberately excluded: its tag is the official census regional figure, which does not equal the simple sum of its four governorate polygons (disputed border districts are counted elsewhere on OSM), so listing it here would break the visual checksum.
Method: population is tagged to the polygon that geographically contains each place. Where a district’s OSM polygon sits in a different governorate than the census table lists it under — الشيخان / Shaykhan (in Nineveh), كفري / Kifri and خانقين / Khanaqin (in Diyala) — it is counted once, in the governorate its polygon occupies. That is why a few governorate totals differ from the published census governorate figures.
admin_level 2 — National
admin_level 4 & 6 — Governorates and their districts
Baghdad
Nineveh
Basra
Erbil
Dhi Qar
Babil
Sulaymaniyah
Kirkuk
Al-Anbar
Al-Najaf
Diyala
Saladin
Karbala
Wasit
Duhok
Al-Qadisiyah
Maysan
Muthanna
Halabja
Comment from Stalin Alexander Chicaiza Martinez on 1 September 2026 at 19:42
Está actividad me permitió conocer más mi barrio y dar a una ubicación exacta la cual es muy factible porque así llegó a una ubicación exacta y me evita confundir la ubicación
Comment from Stalin Alexander Chicaiza Martinez on 1 September 2026 at 19:43
Está actividad me permitió conocer más mi barrio y dar a una ubicación exacta la cual es muy factible porque así llegó a una ubicación exacta y me evita confundir la ubicación
Comment from Stalin Alexander Chicaiza Martinez on 1 September 2026 at 19:43
Está actividad me permitió conocer más mi barrio y dar a una ubicación exacta la cual es muy factible porque así llegó a una ubicación exacta y me evita confundir la ubicación