Exercise 3: Assessing Accessibility to Vaccination Services#
Background#
Following your analysis of measles incidence rates per district, the Ministry of Health now wants to identify which populations have limited access to vaccination services. In this exercise, you will learn a simplified approach on how to model accessibility and determine how many people live beyond a reasonable travel distance from a vaccination point.
Accessibility to health services is a key determinant of vaccination coverage. In many rural parts of Chad, communities may not have access to motorised transport and rely on walking or infrequent public transport. Thus, distance alone is not always a good measure â travel time provides a more realistic assessment.
Available Data#
Dataset name |
Description |
Source |
|---|---|---|
|
Base project with administrative boundaries, health facility capacities, and incidence rates |
â |
|
2025 population estimate per grid-cell |
|
|
Vaccination points (healthsites with cold chain) |
Derived in Exercise 1 |
|
Administrative boundaries (district level) |
|
|
Chad - Road Network |
Scenario#
You have identified a number of health facilities equipped with a cold chain for vaccine storage. The goal now is to calculate how much of the population is within reasonable reach of these facilities, and how many people live beyond the accessible range.
To do this, you will generate travel-time surfaces around vaccination points and then use WorldPop data to estimate the population covered within each accessibility zone. This approach simplifies reality but provides a useful approximation of service coverage.
Task 1: Opening the Project and Preparing the Data#
Open your QGIS project from Exercise 2.
Verify that the following layers are loaded:
tcd_admbnda_adm2_20250212_AB.shp(district boundaries)tcd_healthsites_points_capacities.gpkg(vaccination points)tcd_pop_2025_CN_100m_R2025A_v1.tif(population raster)tcd_roads_ocha.shp(road network)
Now we need to filter the
tcd_healthsites_points_capacitieslayer to only include healthsites with a cold chain for vaccine storage. We will do so by opening the âAttribute tableâ and clicking on âSelect features using an expressionâ
Now click on the âFields and Valuesâ section and double-click on cold_chain
"cold_chain" = true
Now right click on the
tcd_healthsites_points_capacitiesâExportâSave Selected Features As...Save it as a âGeopackageâ in your
/data/interim/-folder. Use a name liketcd_cold_chain_healthsites_points_capacities. Now we have only the healthsites that also provide a cold chain for vaccine storage and could be considered for a vaccination campaign.
Task 2: Creating Accessibility Area Around Vaccination Points#
Open the âService area (from layer)â tool in the Processing Toolbox.
Select the following parameters to run a Network Analysis. The algorithm creates a new vector with all the edges or parts of edges of a network line layer that can be reached within a distance or a time, starting from features of a point layer.
For the Vector layer representing network select the Chad road network
tcd_roads_ochaPath type to calculate should be
Fastest, as we want to work with travel timeVector layer with start points is the newly created
tcd_cold_chain_healthsites_points_capacitiesTravel cost will be
2as the information for the fastest path type is given in hours. So 2 will correspond to 2 hours of travel timeThe speed will be left at the Default speed of 50 km/h
Attention
Selecting the right CRS
The tool Service area (from layer) requires the QGIS project running in an appropriate metric CRS to produce meaningful output.
Make sure to set your QGIS project via the menu in the lower right corner to a metric CRS, eg ESRI:102022. The layers donât necessarily need to be prjected in a metric system.
The output will be called
Service area (lines)and will include the road network accessible from a given healthsite within 2 hours of travel time at a travel speed of 50 km/h. To further process this data we need to reproject it to a metric CRS that depicts Chad without distorting too much. Select EPSG: 102022 and reproject theService area (lines). The output layer will be calledReprojected.To produce a more realistic representation of the accessible area around each vaccination point, we will buffer the
Service area (lines)layer. Before buffering, we first need toDissolvethe service-area lines so they form a single unified geometry.Open the
Dissolvetool and use the reprojected output as the Input layerIn Dissolve fields, we wonât select anything
Warning
Both the Dissolve and Buffer operations can be computationally intensive. If your computer struggles to process the full dataset at once, try running the operations on smaller areasâfor example, a few admin 1 states at a time. To do this, select several states from the tcd_admin1 layer, then right-click the layer â Export â Save Selected Features As⊠and save the subset. Use the Clip tool to cut the service-area roads to this smaller region, and then run the Dissolve and Buffer operations on the reduced dataset.
Now we can buffer the Dissolved Service area lines by 2 km, which corresponds to around 30 minutes of walking.
Input layer will be the result of the dissolving process (likely called
Dissolved)
Set the buffer distance to 2 km. The output should look similar to the screenshot below: the green area represents the estimated 2-hour accessibility zone around the vaccination points along the road network.
Save the buffered service area by right-clicking on it and selecting
Make permament.... Select âGeopackageâ as the output format and save the layer to thedata/interim/-folder and enter a file name such asaccess_vaccination_points. ClickSave.
Task 3: Calculating Population Coverage Using WorldPop#
Next, we will generate several population statistics. First, use the admin boundaries together with the WorldPop raster to calculate the total population for each district.
In the Processing Toolbox, search for the tool Zonal Statistics and open it.
Input layer:
tcd_admbnda_adm2_20250212_AB.shpRaster layer:
tcd_pop_2025_CN_100m_R2025A_v1.tifRaster band: only 1 possible selection
Output column prefix:
pop_total_Statistics ot calculate:
SumOutput file name:
pop_total_adm2
Then, run an Intersection between the district boundaries with the total population information, and the service-area polygon. This step splits the single accessibility area into separate pieces that align with the district boundaries.
In the Processing Toolbox, search for the tool Intersection and open it.
Input layer:
pop_total_adm2Overlay layer:
access_vaccination_pointsOutput file name:
adm2_access_vaccination_pointsThen run the algorithm. The output will be the access-to-vaccination geometry with the district information added. In other words, the single access area is split into multiple parts where it intersects district boundaries, assigning each portion to the corresponding district.
With these intersected geometries, we can then calculate how many people fall within the 2-hour access zone across all districts, providing an estimate of district-level population coverage for vaccination services.
In the Processing Toolbox, now search again for the tool Zonal Statistics and open it.
Raster layer:
tcd_pop_2025_CN_100m_R2025A_v1.tifVector layer containing zones:
adm2_access_vaccination_pointsStatistics to calculate:
SumOutput column prefix:
pop_vaccination_Output file name:
population_within_isochrones
Zonal Statistics Operation population with in service area#
Population raster cells with in buffer will be summed up in the new layer population_within_isochrones#
Now we have calculated the total population located within the 2-hour travel-time access area (plus the buffered area), representing the population that can be reached for vaccination within each district.
In a final step we will estimate the number of people living more than 2 hours away from the nearest vaccination facility â a key metric for identifying areas where mobile vaccination teams or temporary outreach sites may be needed.
Open the Attribute table and access the Field Calculator
Give the Output field name
pop_beyond_2hOutput field type will be
Decimal Number (real)And the expression
"pop_total_sum" - "pop_vaccination_sum"
Task 4: Visualising Accessibility
To visualize the
population_within_isochronesdata we need to join it back onto the original admin 2 boundaries to have the original geometry. Open the Join attributes by field value tool:Input layer:
tcd_admbnda_adm2_20250212_AB.shpTable field:
ADM2_PCODEInput layer 2:
population_within_isochronesTable field 2:
ADM2_PCODELayer 2 fields to copy:
pop_total_sum,pop_vaccination_sum,pop_beyond_2hOutput file name:
population_vaccination_adm2
Now we can visualise both the population that can be reached within 2 hours of a vaccination point and the population living beyond this 2-hour accessibility range.
Symbolise the population within 2 hours
Select the layer
population_vaccination_adm2in the Layers panel.Open the Layer Styling panel and switch to
Graduatedsymbology.Use the following inputs:
pop_vaccination_sum, Color ramp: RdYlGn (find it under All Color Ramps), Mode: Equal Count, Classes: 5
Symbolise the population beyond 2 hours
Right-click the
population_vaccination_adm2layer â Duplicate Layer.Open the Layer Styling panel for the duplicate layer and set: Symbology: Graduated, Value: pop_beyond_2h, Color ramp: YlOrRd, Mode: Equal Count, Classes: 5
Tip
The overall map layout follows the same steps as in the previous exercise. For a reminder, see the guide here
Example map for Measles Vaccination: Population Wihin 2-Hour Access | Chad#
Discussion
The resulting map shows which districts and settlements are effectively served by fixed vaccination points, and which remain outside practical reach. In real-world scenarios, such analysis can help humanitarian planners:
Identify underserved areas and plan mobile vaccination campaigns.
Estimate resource needs for outreach teams.
Note
Always interpret accessibility results and specifically estimations with caution â We used public road network data (OCHA), which may not reflect seasonal accessibility or informal paths. Field validation and coordination with local health teams are essential for operational planning.