GEIDA training · Uganda · Karamoja

From Uganda's 2024 census to a plan for Moroto district

Four exercises in the browser. You start with all 2,205 subcounties of Uganda, narrow down to Moroto by attributes, then measure access to schools and health centres and screen a road upgrade. The heavy analysis runs on the course server through GeoLibre's own Whitebox tools.

PartQuestionMain tools
0Where in Uganda should a programme focus?Select by Expression, Export Selected Features
1Who lives more than 5 km from a school?Vector Points To Raster, Euclidean Distance, Reclass, Multiply, Zonal statistics
2Who lives far from a health centre, and from a proper one?The same chain, with a filter on facility level
3What would a Moroto–Tapac road upgrade cross?Buffer, Slope, Reclass, Zonal statistics (summary and class areas), Select by Location
4How do I share a result as a map?Style, Layout Composer plugin

The projects named here are hypothetical; the data and places are real. Results under "What you should see" come from test runs on the course server in October 2026. Small differences are normal.

SETUP

Before you start

About 10 minutes, once. You need Chrome, Edge or Firefox, the access code from your trainer, and Moroto_course_data.zip unzipped on your laptop. Download it from geolibre.terrawatch.net/downloads/Moroto_course_data.zip (3 MB). This guide is also at geolibre.terrawatch.net/guide.

  1. Open GeoLibre

    Go to https://web.geolibre.app

  2. Install the Remote Processing plugin
    Settings›Manage Plugins›Settings tab

    Under Manifest URLs paste the address below and click Add. Close the dialog. The panel should show version 0.5.0 or later; if you installed an older version, remove the URL and add it again.

    https://geolibre.terrawatch.net/plugin/plugin.json

    Manage Plugins dialog with the plugin URL filled in
    Settings › Manage Plugins › Settings tab: paste the plugin address and click Add.
  3. Turn it on and open the panel
    Plugins›Installed›Remote Processing, then in the top bar Remote Processing›Server connection and files
  4. Connect to the course server
    Panel tab Settings & help
    Server
    https://geolibre.terrawatch.net
    Access code
    from your trainer
    Measure in metres
    leave ticked

    Click Save and connect. The status turns green and the panel switches to the Data tab. Note your folder id (for example /data/u-7f3k9q2m1x).

    Remote Processing panel, Data tab
    The Data tab after connecting: your folder, your files, and the shared course data.
  5. Check the course rasters
    Panel tab Data›Shared course data›Rasters

    You should see three rasters. They are already on the server, so you do not upload them.

    Click Add to map to view one. A legend box appears at the bottom left of the map: a colour bar with the value range, or for land cover the WorldCover classes in their official colours. Its × removes an entry.

    GeoLibre map of Moroto town land cover with legend
    Land cover added from the shared data, in WorldCover colours, with the legend box at the bottom left.
    RasterContents
    moroto_dem_30m.tifElevation, Copernicus DEM 30 m: 719 m on the plains to 3,079 m on Mt Moroto
    moroto_landcover_10m.tifESA WorldCover 2021, 10 m. Classes: 10 tree cover, 20 shrubland, 30 grassland, 40 cropland, 50 built-up, 60 bare, 80 water, 90 wetland
    moroto_population_2024_100m.tifWorldPop 2024 (constrained): people per 100 m cell

Vector files in the zip

Open each with Add Data›Vector Layer and choose the file. They do not need uploading: GeoLibre sends a map layer to the server with each job. The four national boundary files are also in the panel under Shared course data›Vectors: click Add to map.

Districts, subregions, regions and the outline were made by dissolving the census subcounties, so all levels line up exactly. Their pop_total is the sum of the subcounties: it leaves out Bidi Bidi settlement and the five Nakapiripirit subcounties without figures.

FileContents
uganda_country.geojsonUganda outline
uganda_regions.geojsonThe 4 regions (Central, Eastern, Northern, Western) with pop_total
uganda_subregions.geojsonThe 17 subregions, Karamoja among them, with pop_total
uganda_districts.geojsonThe 146 districts with pop_total, n_subcounties, area_km2
uganda_subcounties_census2024.geojsonAll 2,205 subcounties with NPHC 2024 census fields (UBOS)
moroto_subcounties_census2024.geojsonThe 9 subcounties of Moroto district
moroto_schools_osm.geojson106 schools and kindergartens (OpenStreetMap, Moroto + 10 km)
moroto_health_facilities_osm.geojson31 health facilities (OpenStreetMap), duplicates removed, with a level field: HC II, HC III, Hospital
moroto_roads_osm.geojsonRoads and paths (OpenStreetMap)
moroto_tapac_road.geojsonThe 27 km route from Moroto town to Tapac (Part 3)

How to run any Whitebox tool on the server

Every Whitebox step below follows the same pattern:

  1. Open the toolbox and find the tool
    Processing›Whitebox Toolbox, type the tool name in the search box, click it.
  2. Untick Run locally (WASM)

    Top right of the dialog. If it stays ticked, the tool runs on your laptop and cannot read the server files.

  3. Fill in the inputs

    Raster input: set the drop-down to Path and paste a server path. Use Copy path next to a file in the panel's Data tab, or the paths given below. Vector input: pick the layer from the drop-down.

  4. Name the output and run

    Type the short name given in the step (for example dist_school) or leave Auto. Click Run and wait for Succeeded. The result appears in your folder in the Data tab.

  5. Whitebox Toolbox Reclass dialog
    A Whitebox tool dialog (Reclass): untick Run locally (WASM) at the top, paste the input path, type the values and an output name, then Run.
Paths in your folder

Outputs are saved as /data/<your folder>/<name>.tif. When a later step says "Input dist_school.tif", use Copy path on that file in the Data tab.

PART 0

From Uganda to Moroto

Where in Uganda should an education and health access programme start? Selecting by attributes.

Context

A (hypothetical) Karamoja Education and Health Access Programme must choose one district for its first phase. The evidence is the 2024 census at subcounty level.

Objective

Find the subcounties of Uganda where more than 70% of children aged 6–12 are out of school, then narrow them down to one district for the programme's first phase.

Why
The out-of-school share is the programme's targeting indicator. Starting from all 2,205 subcounties and narrowing step by step shows how a shortlist is built from evidence, and each step can be explained to others.
How
Three attribute selections: the subregion (Karamoja, 113 subcounties), the threshold (above 70%: 67 subcounties), and finally one district.
Why Moroto
Moroto is not the district with the most subcounties above 70%: only 2 of its 9 pass (Tapac 89%, Lotisan 80%), against 18 of 19 in Kotido and 17 of 19 in Kaabong. It is chosen as a pilot that can be run and checked. Its two worst subcounties lie close to Moroto town, a regional hub where a programme office can sit. OpenStreetMap has its schools and health facilities mapped (66 schools, 38 facilities), which Parts 1 and 2 need. It mixes town and remote rural subcounties and includes the slopes of Mt Moroto, which Part 3 needs. With 9 subcounties it stays manageable. Lessons from the pilot then go to Kotido and Kaabong.
Outcome
The 9 Moroto subcounties as the study area for every later part.
  1. Build the context: country, regions, subregions, districts
    Add Data›Vector Layer, or the panel's Shared course data›Vectors

    Load uganda_country, uganda_regions, uganda_subregions and uganda_districts. Click each one and compare pop_total and n_subcounties: Karamoja has 1.43 million people in 113 subcounties.

    Style them as outlines so they work as a frame: open the layer's style (Style tab on the right, or the palette icon in the Layers panel), set the fill opacity to 0 and give each level its own line: thick dark for regions, medium for subregions, thin grey for districts. Drag them to the top of the Layers panel.

  2. Load the national subcounties
    Add Data›Vector Layer

    Choose uganda_subcounties_census2024.geojson. 2,205 subcounties appear, below the boundary outlines.

  3. Explore the attributes

    Click a few subcounties and read pop_total, pct_oos612 (share of children 6–12 out of school), pct_watimp (improved water) and pct_grid (grid electricity). Every field is explained in Census attributes.

    Optional: colour the layer by pct_oos612 from its style settings (palette icon in the Layers panel) to see the national pattern.

  4. Select the Karamoja subregion
    Edit›Select by Expression...
    Select features from
    uganda_subcounties_census2024
    Expression
    ["==", ["get", "Subregion"], "Karamoja"]
    Modify selection by
    Creating a new selection

    Click Select features. The dialog reports 113 of 2205 features selected.

    Select by Expression dialog
    Select by Expression on the national subcounties: Karamoja selected.

    Expressions use MapLibre's JSON form: ["operator", ["get", "field"], value]. The Expression builder... button helps you write them.

  5. Keep only subcounties with more than 70% out of school
    Same dialog
    Expression
    [">", ["get", "pct_oos612"], 70]
    Modify selection by
    Selecting within the current selection

    Click Select features: 67 selected, and 6 could not be evaluated.

  6. Look at the result
    Edit›Zoom to Selection
    GeoLibre map with Karamoja selection
    Zoom to Selection: Karamoja subcounties with more than 70% of children out of school, selected in yellow, with districts and subregions as context.
  7. Choose Moroto and make it a layer
    Edit›Select by Expression..., then Edit›Export Selected Features as Layer
    Expression
    ["==", ["get", "District"], "Moroto"]
    Modify selection by
    Creating a new selection

    9 subcounties are selected. The same selection works one level up: ["==", ["get", "District"], "Moroto"] on uganda_districts gives the district outline, and ["==", ["get", "Subregion"], "Karamoja"] on uganda_subregions the subregion. The exported layer is your study area. You can also load moroto_subcounties_census2024.geojson, which is the same.

What you should see
Maps of Uganda and Karamoja
Left: out-of-school share across Uganda, Karamoja outlined in green. Right: the 67 Karamoja subcounties above 70%, the 6 without figures, and Moroto. Computed from the course data; your numbers may differ slightly.
74.6%
of children 6–12 out of school in Karamoja; 20–35% elsewhere
67
Karamoja subcounties above 70% out of school
6
subcounties with no census figures (not evaluated)
103,639
people in Moroto's 9 subcounties (census 2024)

The 6 subcounties without figures are Nakapiripirit's five and the Lobule refugee camp. The data's data_note field explains why.

Discuss

  • Why Moroto rather than Amudat (86% out of school)? Think about data coverage (OpenStreetMap has 66 schools and 38 health facilities in Moroto), the terrain of Mt Moroto for Part 3, and the contrast between town and rural subcounties.
  • What does a missing value do to a selection? Try ["==", ["get", "pop_total"], null]
  • Try Filter layer instead of Select features. What is the difference?
PART 1

Who lives far from a school?

How many people in each Moroto subcounty live more than 5 km from a school, and does distance line up with out-of-school rates?

Context

The programme wants to know where new classrooms would bring the most children within walking distance (5 km).

Objective

Measure, for each Moroto subcounty, how many people live more than 5 km from the nearest school, and compare it with the share of children out of school.

Why
If distance explains why children are out of school, new classrooms in the right places will help. If it does not (Lotisan: 80% out of school, yet nobody beyond 5 km), the programme must look at other barriers such as cost, pastoral mobility or child labour.
How
A distance surface from every school, cells beyond 5 km marked, multiplied by the population of each cell, then summed per subcounty.
Outcome
A table and map of people beyond 5 km per subcounty, and a first answer to where distance is the problem (Tapac and Rupa).
Schools (points)→Vector Points To Raster→Euclidean Distance→Reclass > 5 km→Multiply × population→Zonal statistics per subcounty
  1. Load the layers
    Add Data›Vector Layer

    Load moroto_schools_osm.geojson and moroto_subcounties_census2024.geojson (or use your exported Moroto layer).

  2. Convert the school points to a raster on the population grid
    Whitebox tool Vector Points To Raster
    Input
    the schools layer (drop-down)
    Base
    Path /data/moroto_population_2024_100m.tif
    Zero background
    ticked
    Output
    school_r

    Using the population raster as the base puts every later raster on the same 100 m grid, so they can be combined cell by cell.

  3. Distance to the nearest school
    Whitebox tool Euclidean Distance
    Input
    Path to school_r.tif (Copy path in the Data tab)
    Output
    dist_school

    Each cell now holds the straight-line distance in metres to the nearest school.

  4. Mark cells beyond 5 km
    Whitebox tool Reclass
    Input
    Path to dist_school.tif
    Reclass values
    0;0;5000;1;5000;1000000
    Output
    far_school

    Read the values in groups of three: new value; from; up to. Cells 0–5,000 m become 0, cells beyond 5,000 m become 1.

  5. Count the people beyond 5 km
    Whitebox tool Multiply
    Input 1
    Path to far_school.tif
    Input 2
    Path /data/moroto_population_2024_100m.tif
    Output
    pop_far_school
  6. Summarise per subcounty
    Panel Data›Zonal statistics (open the section)

    Run it three times, with Zones = the Moroto subcounties layer and Also download the table as CSV ticked:

    RasterField prefixRead
    dist_school.tifdist_dist_mean: average distance (m)
    pop_far_school.tiffar_far_sum: people beyond 5 km
    Shared moroto_population_2024_100m.tifpop_pop_sum: all people (WorldPop)
  7. Compare in a spreadsheet

    Open the CSVs. Compute far_sum / pop_sum for each subcounty and set it beside the census field pct_oos612.

What you should see
Map of Moroto subcounties by distance to school
Expected result: share of each subcounty's people more than 5 km from a school, with schools as blue points. Computed from the course data; your numbers may differ slightly.
SubcountyMean distancePeople > 5 kmShare > 5 kmOut of school 6–12
Tapac8.5 km6,659
41%
89%
Rupa28.5 km6,240
30%
52%
Nadunget2.8 km1,032
6%
58%
Loputuk3.5 km601
3%
62%
Katikekile3.4 km275
2%
65%
Lotisan2.1 km0
0%
80%
Nadunget Town Council1.6 km0
0%
60%
North Division0.6 km0
0%
19%
South Division0.8 km0
0%
20%

About 14,800 people (11% of Moroto) live more than 5 km from a school. Tapac stands out: far from schools and 89% of its children out of school.

Discuss

  • Rupa's mean distance is 28.5 km, yet only 30% of its people are beyond 5 km. Why? (Large empty areas; people live near the schools.)
  • Lotisan has 80% out of school but nobody beyond 5 km. Which other barriers matter there?
  • WorldPop puts about 130,000 people in Moroto; the census counts 103,639. Which would you use, and for what?
PART 2

Who lives far from a health centre?

Which subcounties lack access to a health centre that offers more than basic care (HC III and above)?

Context

The district health office plans outreach and new health centres. Uganda's facility levels run from HC II (basic) through HC III and HC IV to hospitals.

Objective

Find who lives more than 5 km from any health facility, and then from one that offers more than basic care (HC III and above).

Why
Counting facilities hides differences in what they offer. An HC II provides basic outpatient care; HC III and above add services such as maternity care and a laboratory. A subcounty can look well served and still lack proper care.
How
The Part 1 chain run twice: once with all facilities, once with only HC III, HC IV and hospitals, selected by attribute.
Outcome
Two comparable maps. The difference between them shows where upgrading an existing HC II would help most (Katikekile, Loputuk), and confirms Tapac as the worst served.
  1. Load and inspect the health facilities
    Add Data›Vector Layer

    Choose moroto_health_facilities_osm.geojson and click a few points. The level field was derived from the names, because OpenStreetMap tags every facility in Moroto as "hospital" and several were mapped twice (57 points became 31).

  2. Run the access chain for all facilities

    Repeat Part 1 steps 2–6 with the health facilities layer. Use the outputs health_r, dist_health, far_health and pop_far_health.

  3. Select HC III and above
    Edit›Select by Expression... on the health facilities layer
    Expression
    ["in", ["get", "level"], ["literal", ["HC III", "HC IV", "Hospital"]]]

    Click Select features: 16 of 31 selected. Then Edit›Export Selected Features as Layer.

  4. Run the chain again for HC III and above

    Repeat Part 1 steps 2–6 with the exported layer. Use the outputs health3_r, dist_health3, far_health3 and pop_far_health3.

What you should see
Two maps of distance to health facilities
Expected result: requiring an HC III or above raises the gap in Katikekile and Loputuk; Tapac is worst served. Computed from the course data; your numbers may differ slightly.
SubcountyShare > 5 km, any facilityShare > 5 km, HC III or above
Tapac
61%
75%
Rupa
29%
31%
Lotisan
31%
31%
Katikekile
4%
27%
Loputuk
6%
22%
Nadunget
10%
13%
Town council and divisions
0%
0%
20,700
people more than 5 km from any facility (16%)
30,500
people more than 5 km from an HC III or above (23%)

Requiring a proper health centre reveals gaps in Katikekile and Loputuk that the "any facility" map hides. Tapac is the worst served again.

Discuss

  • OpenStreetMap is incomplete and needed cleaning. How would you check it against the Ministry of Health facility list?
  • Straight-line distance ignores Mt Moroto. Cost Distance, with the slope raster from Part 3 as the cost, is the next step.
PART 3

Screening a road upgrade: Moroto town to Tapac

What terrain, land cover and people does a corridor of 1 km on each side of the road cross?

Context

Tapac is the least served subcounty in Parts 1 and 2. A (hypothetical) Moroto–Tapac Rural Access Road would upgrade the existing 27 km track, which runs along the foothills of Mt Moroto.

Objective

Screen the proposed Moroto–Tapac road upgrade: what terrain, land cover, people and facilities lie within 1 km of the route.

Why
Parts 1 and 2 show Tapac as the least served subcounty; a better road would connect it to the schools and health centres of Moroto town. Before any design work, an early screening flags engineering risk (steep slopes), environmental and social sensitivities (grazing land, cropland, settlements) and who would benefit.
How
A 1 km corridor around the road; slope from the elevation model and the share steeper than 15°; the area of each land-cover class; the people and facilities inside the corridor.
Outcome
A short corridor screening summary of the kind that goes into a project concept note.
Road line→Buffer 1 km→Slope, Reclass > 15°→Zonal statistics: class areas and summary→Select by Location
  1. Load the road and the facilities
    Add Data›Vector Layer

    Load moroto_tapac_road.geojson, plus the schools and health facilities if they are not on the map yet.

  2. Make the corridor
    Processing›GeoLibre Toolbox›Vector›Buffer
    Input layer
    moroto_tapac_road
    Distance
    1
    Units
    Kilometers
    Engine
    Client (Turf.js)

    Click Run. A Buffer layer appears. This tool runs in your browser and is instant for one line.

    Buffer dialog
    GeoLibre Toolbox › Vector › Buffer: 1 km around the road, run in the browser.
  3. Slope from the DEM
    Whitebox tool Slope
    Input
    Path /data/moroto_dem_30m.tif
    Units
    degrees
    Output
    slope
  4. Mark steep terrain (over 15°)
    Whitebox tool Reclass
    Input
    Path to slope.tif
    Reclass values
    0;0;15;1;15;90
    Output
    steep15
  5. Land cover in the corridor: area of each class
    Panel Data›Zonal statistics
    Raster
    Shared: moroto_landcover_10m.tif
    Statistics
    Area of each class (land cover, other class rasters)
    Zones
    Map layer: Buffer
    Field prefix
    lc_

    Click Run zonal statistics on the server. In one run the corridor gets, for every class, its area in km² and its share in %: lc_grassland_km2, lc_grassland_pct, lc_shrubland_pct, lc_cropland_pct and so on. Click the new Class areas layer on the map to read them, or open the CSV.

    Zonal statistics form
    Zonal statistics with Statistics = Area of each class and the Buffer as zones.
    GeoLibre map of the road corridor with the zonal statistics form
    The 1 km corridor around the road and the Class areas result layer; the zonal statistics form is on the right. Click the corridor to read its km² and % per class.

    WorldCover codes are named automatically (10 tree, 20 shrubland, 30 grassland, 40 cropland, 50 built-up, 60 bare, 80 water, 90 wetland). Try the same with Zones = the Moroto subcounties to compare land cover between subcounties.

  6. Slope and people in the corridor
    Panel Data›Zonal statistics, Statistics = Summary, Zones = the Buffer layer
    RasterField prefixRead
    slope.tifslope_mean, median and max slope
    steep15.tifsteep_mean = share of the corridor steeper than 15°
    Shared moroto_population_2024_100m.tifpop_sum = people in the corridor
  7. Facilities along the road
    Edit›Select by Location...

    Select the schools that are within the Buffer layer, then do the same for the health facilities.

  8. See where the route climbs
    Panel Data, next to slope.tif: Add to map

    Click the layer in the Layers panel to open its settings and choose a colour ramp. Steep sections show along the Mt Moroto foothills.

What you should see
Slope map of the corridor and land cover bar chart
Expected result: slope along the Moroto–Tapac corridor (steep sections on the Mt Moroto foothills) and the land cover inside it. Computed from the course data; your numbers may differ slightly.
56.7 km²
corridor around a 27.2 km route
11%
of the corridor steeper than 15° (mean slope 5.8°, max 51°)
35,500
people in the corridor (WorldPop 2024)
16 · 5
schools · health facilities in the corridor (incl. Moroto's 2 hospitals)
Land cover in the corridorShare
Grassland
55%
Shrubland
31%
Cropland
10%
Built-up
2.5%
Tree cover
1.7%

Discuss

  • Where are the steep sections? Would a realignment avoid them?
  • Little cropland is affected, but what does grassland mean in Karamoja (pastoralism, grazing routes)?
  • Who benefits? Using Parts 1 and 2, how many people in Tapac live beyond 5 km of a school or an HC III that the road would connect to Moroto town?
PART 4

Print a result as a map, with the IsDB logo

Turn the Part 1 result into a map you can put in a report: out-of-school children and distance to school in Moroto. You design the page in the Layout Composer plugin.

Objective

Turn one result into a finished map that can go into a report.

Why
Analysis only informs a decision when others can read it. A map with a clear title, legend, scale bar, data sources and logo is the standard output for reports and appraisal documents, and it is what you hand in for Session 3.
How
Style the result layer, compose the page in Layout Composer, export it.
Outcome
A PNG at 300 dpi, plus a saved layout you can reuse for the other maps.
  1. Install Layout Composer (once)
    Settings›Manage Plugins, find Layout Composer in the list, click Install

    Close the dialog, then turn it on: Plugins›Installed›Layout Composer. A Layout menu appears in the top bar.

  2. Get the IsDB logo file

    It is in the course zip as isdb-logo.png, or download it from geolibre.terrawatch.net/downloads/isdb-logo.png.

  3. Prepare the map

    Keep on the map the Part 1 zonal statistics layer for pop_far_school, the schools and uganda_districts; hide the rest with the eye icon. Select the zonal layer, open the Style tab and choose Graduated on pct_oos612, 5 classes, yellow to red. Schools: small dark circles. Districts: thin grey outline, no fill.

    Rename the layers from the ⋯ menu in the Layers panel, for example "Children 6–12 out of school (%)" and "Schools (OSM)". The legend uses these names. Then zoom to Moroto district.

  4. Open the composer and add the map
    Layout›Open Layout Composer

    The page is A4 landscape (change it on the Page tab). Click Add map frame (map icon in the top bar). On the Item tab, under Map View, click Match GeoLibre view or choose your layer in Zoom to layer…. Drag the frame's corners to size it, leaving room on the right.

    The frame redraws your vector layers sharply at print resolution. Rasters added from the server (land cover, slope) are not redrawn: for those, set the frame's Content to Capture.

  5. Add title, legend, north arrow and scale bar
    Title
    Text›Heading, double-click it and type Moroto district: children out of school and distance to school
    Legend
    Add legend; on the Item tab, set the title and remove entries you do not need
    North arrow
    Add north arrow, pick a style
    Scale bar
    Scale bar›Single box
    Source note
    Text›Caption: Data: UBOS NPHC 2024; OpenStreetMap contributors; WorldPop 2024. GEIDA training, IsDB.

    Drag items into place, or type exact positions on the Arrange tab (X, Y, W, H in mm).

  6. Add the IsDB logo

    Click Image in the top bar, then Choose image… on the Item tab and pick isdb-logo.png. Keep Fit on Contain (keep ratio) and drag it to a free corner.

    Layout Composer with a map layout of Moroto
    Layout Composer: map frame, legend, IsDB logo, north arrow and scale bar on an A4 page. The Layers list on the left shows every item on the page.
  7. Export

    Click Export (download icon, top right). Choose PNG at 300 dpi (or PDF), type a file name such as Surname_Map1_schools and click Export. The logo, legend and scale bar are all in the file.

    Click the save icon to keep the layout as a .json file; open it later to reuse the same design for Maps 2 and 3.

Land cover legend

For a land-cover map, use + Add manual entry… in the legend's Item tab to add each class with its colour. The class colours are shown in the plugin's map legend box (see Setup).

Discuss

  • Which map tells the story better: out-of-school share or people beyond 5 km? Make both and compare.
  • What should every map in a report carry? (Title, legend, scale, north arrow, source, date, author.)
FIELDS

Census attributes

What each field in uganda_subcounties_census2024 and moroto_subcounties_census2024 means.

Figures are from the Uganda Bureau of Statistics, National Population and Housing Census 2024, published in the NPHC 2024 Explorer (subcounty profiles). Counts are persons or households as noted; fields starting with pct_ and pop_dens were derived from them for the course. Field names are 10 characters or fewer so they also work in shapefiles.

Used in the exercises

Subregion, District, pop_total, pop6_12, oos6_12, pct_oos612, data_note. Useful for your own questions: pct_watimp, pct_sanimp, pct_grid, pct_noecce, neet1524p, hh_pdm.

Key 4
FieldMeaningUnit
SCCodeUBOS 6-digit subcounty code (text): district (3) + county (1) + subcounty (2). Join key.
SubcountySubcounty, town council or city division name (UBOS)
DCodeUBOS 3-digit district code (text). Join key.
DistrictDistrict name (UBOS)
Admin 5
FieldMeaningUnit
CntyCodeUBOS 4-digit county code
CountyCounty name
RegionRegion (from first digit of DCode)
SubregCodeUBOS subregion code
SubregionSubregion name
Derived 12
FieldMeaningUnit
area_km2Subcounty area, computed in UTM 36N (EPSG:32636)km2
pop_densPopulation density = pop_total / area_km2persons/km2
pop6_17School-age population 6-17 = pop6_12 + pop13_17persons
pct_noecceShare of children aged 3-5 not attending early childhood education = noecce3_5 / pop3_5%
pct_noprm6Share of 6-year-olds who have not started primary = noprim6 / pop6%
pct_oos612Share of children aged 6-12 out of school = oos6_12 / pop6_12%
pct_oos131Share of children aged 13-17 out of school = oos13_17 / pop13_17%
pct_age0_4Share of population aged 0-4%
pct_watimpShare of households with improved drinking water = wat_imp / households%
pct_sanimpShare of households with improved sanitation = san_imp / households%
pct_gridShare of households lighting with grid electricity%
pct_subsisShare of households in subsistence economy%
Population by sex 3
FieldMeaningUnit
pop_totalTotal populationpersons
pop_maleMale populationpersons
pop_femaleFemale populationpersons
Households 3
FieldMeaningUnit
hh_popHousehold populationpersons
householdsNumber of householdshouseholds
hh_sizeAverage household sizepersons/household
Age groups 12
FieldMeaningUnit
age0_4Population aged 0-4persons
age0_17Population aged 0-17persons
age6_12Population aged 6-12persons
age13_18Population aged 13-18persons
age14_64Population aged 14-64persons
age15plusPopulation aged 15+persons
age15_24Population aged 15-24persons
age18_30Population aged 18-30persons
age18plusPopulation aged 18+persons
age60plusPopulation aged 60+persons
age65plusPopulation aged 65+persons
age80plusPopulation aged 80+persons
Birth registration 3
FieldMeaningUnit
br_certPersons registered, with certificatepersons
br_notifPersons registered, with notificationpersons
br_nonePersons not registeredpersons
ICT 6
FieldMeaningUnit
inet_malePersons aged 10+ who used internet, malepersons
inet_femPersons aged 10+ who used internet, femalepersons
inet_totalPersons aged 10+ who used internet, totalpersons
hh_radioHouseholds owning a radiohouseholds
hh_tvHouseholds owning a televisionhouseholds
hh_compHouseholds owning a computerhouseholds
Information sources 9
FieldMeaningUnit
inf_radioHouseholds whose main source of information is radiohouseholds
inf_womHouseholds whose main source of information is word of mouthhouseholds
inf_phoneHouseholds whose main source of information is phone callshouseholds
inf_tvHouseholds whose main source of information is televisionhouseholds
inf_meetHouseholds whose main source of information is community meetingshouseholds
inf_inetHouseholds whose main source of information is internet/social mediahouseholds
inf_anncHouseholds whose main source of information is community announcerhouseholds
inf_printHouseholds whose main source of information is print mediahouseholds
inf_otherHouseholds whose main source of information is other sourceshouseholds
Health 2
FieldMeaningUnit
hh_mosnetHouseholds owning a mosquito nethouseholds
p_hlthinsPersons with health insurancepersons
Employment 8
FieldMeaningUnit
unemp15nUnemployed, aged 15+persons
unemp15pctUnemployment rate, aged 15+%
unemp1464nUnemployed, aged 14-64persons
unemp1464pUnemployment rate, aged 14-64%
neet1524nYouth not in employment, education or training (NEET), 15-24persons
neet1524pNEET rate, 15-24%
neet1830nNEET, 18-30persons
neet1830pNEET rate, 18-30%
Water & sanitation 5
FieldMeaningUnit
wat_impHouseholds using an improved main drinking water sourcehouseholds
wat_unimpHouseholds using an unimproved main drinking water sourcehouseholds
san_impHouseholds with improved sanitationhouseholds
san_unimpHouseholds with unimproved sanitationhouseholds
open_defHouseholds practising open defecationhouseholds
Lighting 3
FieldMeaningUnit
lt_gridHouseholds using grid electricity for lightinghouseholds
lt_solarHouseholds using solar for lightinghouseholds
lt_solgridHouseholds using combined solar and grid for lightinghouseholds
Economic 2
FieldMeaningUnit
hh_subsistHouseholds in the subsistence economyhouseholds
hh_pdmHouseholds that benefited from the Parish Development Model (PDM)households
Education 8
FieldMeaningUnit
pop3_5Population aged 3-5persons
noecce3_5Aged 3-5 not attending early childhood care and educationpersons
pop6Population aged 6persons
noprim6Aged 6 not started primarypersons
pop6_12Population aged 6-12persons
oos6_12Out of school, aged 6-12persons
pop13_17Population aged 13-17persons
oos13_17Out of school, aged 13-17persons
Quality 1
FieldMeaningUnit
data_noteWhy a row has no figures or no polygon (blank = complete)

A blank value means the census explorer published no figure for that subcounty; data_note says why. The district, subregion and region layers carry only pop_total, n_subcounties and area_km2.

HELP

If something fails

What happensWhat to do
The tool says it could not read the input, or runs very slowlyUntick Run locally (WASM) in the tool dialog.
"Failed: Tool execution failed"Check the input path (use Copy path), or pick the layer from the list. Check the Reclass values are separated by semicolons.
The result is not in the Data tabClick ↻ Refresh. If it is still missing, the tool failed: read its message.
Status says Wrong access code or Not connectedRe-type the server address and code in Settings & help, then Save and connect.
My files are goneYou are in a new browser or cleared its data. Under Your folder, open Use an existing folder id and enter your old id.
The corridor looks wrongUse GeoLibre's Buffer (Part 3, step 2), not Whitebox Buffer Vector, which mishandles long winding lines.
The plugin disappearedSettings›Manage Plugins›Settings: remove the plugin URL, add it again, and turn it on under Plugins›Installed.
Read the data critically

OpenStreetMap is incomplete and the health facilities were cleaned. WorldPop and the census disagree on Moroto's population. The UBOS boundaries are simplified and overlap slightly along district borders.