Exercice 1 : Créer une carte d’ensemble du système de santé et de la couverture vaccinale #

Contexte #

Au cours du mois dernier, les autorités sanitaires au Tchad ont signalé une hausse des cas de rougeole, en particulier dans les régions du Mandoul, du Mayo-Kebbi Est et du Logone Oriental. L’unité de surveillance a fourni des données de line-listing ainsi que des données existantes sur les structures de santé. Votre première tâche consiste à créer une carte de base montrant la répartition des structures de santé et à les classifier selon leur capacité de service afin de comprendre les infrastructures de réponse disponibles.

Données disponibles #

Dataset name

Original title

Publisher

Downloaded from

tcd_admbnda_adm0_20250212_AB.shp (Polygons)

Chad Subnational Administrative Boundaries (level 0: country)

United Nations Office for the Coordination of Humanitarian Affairs (OCHA)

HDX

tcd_admbnda_adm1_20250212_AB.shp (Polygons)

Chad Administrative Boundaries (level 1: regions)

United Nations Office for the Coordination of Humanitarian Affairs (OCHA)

HDX

tcd_admbnda_adm2_20250212_AB.shp (Polygons)

Chad Administrative Boundaries (level 2: province)

United Nations Office for the Coordination of Humanitarian Affairs (OCHA)

HDX

hotosm_tcd_health_facilities_points_gpkg.gpkg (Points)

Chad Health Facilities (OpenStreetMap Export)

Humanitarian OpenStreetMap Team

HOTOSM

tcd_roads_ocha.shp (Lines)

Chad - Road Network

United Nations Office for the Coordination of Humanitarian Affairs (OCHA)

HDX

tcd_healthsite_capacities.csv

Healthsite Capacities

HeiGIT

This is a fictional dataset generated for the purpose of this exercise.

vaccination_coverage_adm2.csv

Measles vaccination coverage

HeiGIT

This is a fictional dataset generated for the purpose of this exercise.

Note

Dans cet exercice, nous téléchargerons de vrais jeux de données depuis le Humanitarian Data Exchange (HDX) afin d’identifier et d’analyser des informations pertinentes. Toutefois, les jeux de données sur les capacités des structures de santé et la couverture vaccinale utilisés ici sont fictifs et ont été créés uniquement à des fins de formation. Ils ne représentent pas des données du monde réel.

Téléchargez ici tous les jeux de données fournis par HeiGIT here, enregistrez le dossier sur votre ordinateur et décompressez le fichier.

https://nexus.heigit.org/repository/gis-training-resource-center/public_health/GIS_Training_Public_Health.zip

Tâches #

Tâche 1 : Mettre en place l’arborescence de dossiers et créer un nouveau projet QGIS #

Arborescence de dossiers standard

La pratique la plus importante en matière de gestion des données géographiques consiste à utiliser une arborescence de dossiers standardisée qui contient tous les éléments du projet QGIS. Nous enregistrerons toutes les données que nous utilisons ou créons dans notre projet QGIS à l’intérieur de cette arborescence. Les chemins entre un projet QGIS et les données géographiques sont, par défaut, relatifs. Cela signifie que lorsque les données et le projet sont organisés dans une structure de dossiers fixe, vous pouvez déplacer l’ensemble de cette structure sans affecter le projet QGIS ni les chemins vers les données.

Une arborescence de dossiers standard présente deux avantages principaux :

  1. Si nous partageons l’ensemble du dossier du projet, nous pouvons nous attendre à ce que le projet fonctionne sans problème sur un autre ordinateur.

  2. L’arborescence de dossiers favorise une bonne organisation des données du projet et contribue à garantir le bon fonctionnement du projet QGIS.

  1. Créez sur votre ordinateur un nouveau dossier nommé “GIS_Training_Public_Health_Day_1-2”. Dans ce dossier, créez l’arborescence suivante :

GIS_Training_Public_Health
├── project
├── results
├── styles
└── data
    ├── input
    ├── interim
    └── output
  1. Ouvrez QGIS et créez un nouveau projet.

  2. Enregistrez le projet via Project → Save As.... Accédez au dossier de cette formation et enregistrez-le dans le sous-dossier /project. Donnez-lui un nom (par ex. GIS_Training_Public_Health_Part_1) puis cliquez sur Save.

  3. Nous devons maintenant définir le SCR du projet.

    • Dans le coin inférieur droit de la fenêtre QGIS, cliquez sur l’icône de projection . Choisissons un SCR métrique qui représente le Tchad sans trop de déformation. Pour cet exercice, nous utiliserons “Albers Equal Area Conic” (EPSG: 102022). Dans la barre Filter, saisissez le nom ou le numéro EPSG. Le SCR devrait apparaître dans la boîte “Predefined Coordinate Reference Systems”. Sélectionnez-le puis cliquez sur Apply et OK.

    ../_images/en_3.40_m3_ex_8_pub_health_1_project_crs.png

    Définir le SCR du projet dans QGIS#

Attention

Le SCR du projet détermine le système de coordonnées de référence utilisé pour afficher les données géographiques dans le canevas cartographique QGIS. En revanche, il ne modifie pas le SCR des couches. Chaque couche, ou jeu de données, est encodé avec un SCR. QGIS reprojette ces couches “à la volée” pour afficher sur le canevas des couches ayant des SCR différents. Cela ne modifie ni les unités de mesure ni les déformations des couches elles-mêmes. Pour effectuer des calculs de distance, vous devrez reprojeter la couche dans un système de coordonnées de référence métrique.

Définir le SCR du projet sur celui que vous souhaitez utiliser peut vous aider à choisir plus rapidement le bon SCR lors de l’exécution d’algorithmes.

Tâche 2 : Télécharger les données pertinentes #

  1. Dans votre navigateur, rendez-vous sur humdata.org

  2. Recherchez les jeux de données suivants :

    • Chad Administrative Boundaries (OCHA): ADM0, ADM1, ADM2

    • Chad Health Facilities (OpenStreetMap Export)

    • Chad Roads (OCHA)

  1. Téléchargez les couches.

    • Sur la page de téléchargement, vous pouvez généralement choisir différents formats de données. Les formats sont indiqués par leur extension de fichier (par ex. .shp, .gpkg, .gdb).

    • Parfois, les données sont encore compressées, de sorte que l’extension du fichier n’est pas visible.

    • Choisissez les formats suivants :

      • Chad Administrative Boundaries (OCHA): Shapefile

      • Chad Health Facilities (OpenStreetMap Export): GeoPackage pour les Points, nous n’avons pas besoin des polygones pour cet exemple

      • Chad Roads (OCHA): Shapefile

      ../_images/en_m3_ex_8_public_health_part_1_hdx_data_formats.png
  2. Décompressez les dossiers et veillez à les enregistrer dans le dossier data/input/ de l’arborescence standard.

Tâche 3 : Importer les jeux de données #

  1. Dans votre projet QGIS, importez les jeux de données suivants par glisser-déposer :

    • tcd_admbnda_adm0_20250212_AB.shp

    • tcd_admbnda_adm1_20250212_AB.shp

    • tcd_admbnda_adm2_20250212_AB.shp

    • hotosm_tcd_health_facilities_points_gpkg.gpkg

    • tcd_trs_roads_OCHA.shp

Vidéo : importer des shapefiles dans un projet QGIS par glisser-déposer

Attention

Les fichiers importés ne sont pas enregistrés dans le projet QGIS. Si vous déplacez ou supprimez le fichier d’origine, QGIS ne retrouvera plus le jeu de données correspondant.

Tâche 4 : Le panneau des couches et le concept de couche #

  1. Une fois toutes les couches pertinentes importées, commençons par les organiser logiquement afin de travailler plus facilement. Sur la gauche se trouve le panneau Layers. Vous pouvez y voir tous les jeux de données que nous avons importés jusqu’à présent.

    • QGIS affiche les données géographiques sous forme de couches, chaque jeu de données étant représenté dans une couche. Les couches sont empilées les unes sur les autres.

    • Organisons les couches pour travailler plus facilement :

      • La couche ADM0 doit être en bas, suivie de ADM1, puis de ADM2.

      • Ensuite, nous pouvons ajouter le réseau routier.

      • Les structures de santé doivent se trouver au-dessus.

  2. Ajoutons un fond de carte :

    • Dans le navigateur de fichiers, faites défiler vers le bas jusqu’à voir XYZ-Tiles

    • Dépliez-le puis double-cliquez sur OpenStreetMap. Une nouvelle couche sera ajoutée à votre panneau des couches, généralement en bas. Veillez à ce que cette couche reste tout en bas du panneau afin que toutes les autres couches restent visibles.

Votre fenêtre QGIS devrait ressembler à ceci (avec des couleurs de couches différentes).

../_images/en_3.40_m3_ex_8_pub_health_1_ordering_layers.png
  1. Examinons maintenant les couches que nous avons ajoutées jusqu’ici. Chaque couche vectorielle possède une table attributaire, dans laquelle chaque ligne représente une entité géométrique sur le canevas cartographique.

    • Ouvrez la table attributaire en faisant un clic droit sur la couche ADM2 dans le panneau des couches à gauche → Open Attribute Table.

    • Une nouvelle fenêtre s’ouvre. Il s’agit de la table attributaire. Elle affiche la couche vectorielle sous forme tabulaire, ce qui vous permet de consulter les valeurs attributaires, de trier la table et de modifier les valeurs à l’aide des outils de la barre supérieure.

    • Regardez les différentes colonnes de la table attributaire. Que représentent-elles ?

    • Essayez de trier la table attributaire en cliquant sur

    • Ouvrez les tables attributaires des couches hotosm_tcd_health_facilities_points_gpkg et tcd_admbnda_adm2_20250212_AB.shp et familiarisez-vous avec les données.

    • Faites un clic droit sur chaque couche et sélectionnez

Tâche 5 : Joindre les données de couverture vaccinale aux limites administratives #

Dans notre dossier data/input/, nous trouvons un fichier csv nommé vaccination_coverage_adm2. Ce fichier contient la couverture vaccinale pour les vaccins mcv1 et mcv2. Heureusement, le jeu de données inclut le nom du district (amd2_name) ainsi que le pcode adm2. Grâce à ces informations, nous pouvons effectuer une jointure non spatiale afin d’ajouter les données de couverture vaccinale à notre couche des limites de district (adm2).

Attention

Les Pcodes administratifs sont bien adaptés aux jointures non spatiales dans QGIS, car ils fournissent des identifiants uniques et normalisés qui évitent les divergences de noms et garantissent une liaison de données fiable et précise.

  1. Importez vaccination_coverage_adm2 dans votre projet QGIS :

    • Dans la barre supérieure, allez à Layer → Add Layer → Add Delimited Text Layer...

    • À droite du champ File name, cliquez sur les trois points et accédez au fichier data/input/vaccination_coverage_adm2.csv, puis cliquez sur Open.

    • Dans la fenêtre d’import, vous verrez un aperçu des données dans le champ des données d’exemple. Examinez les colonnes et les données disponibles. Quel type d’information est présent dans chaque colonne ?

    • Malheureusement, cette table de données ne contient pas de colonnes avec les coordonnées des structures de santé individuelles. Sous Geometry Definition, sélectionnez No geometry (attribute only table).

    • Cliquez sur Add. La couche apparaîtra dans l’onglet des couches comme une table de données, mais ne s’affichera pas dans le canevas cartographique.

    ../_images/en_3.40_m3_ex_8_pub_health_1_add_vacc_coverage_csv.png
  2. Examinez plus en détail cette nouvelle table de couverture vaccinale :

    • Faites un clic droit sur la nouvelle couche et ouvrez la table attributaire. Quelles informations sont disponibles ? Comment la table est-elle structurée ? Nous pouvons voir que nous pouvons utiliser la colonne ADM2_PCODE pour effectuer une [jointure non spatiale].

  3. Dans la boîte à outils de traitements à droite, recherchez l’outil “Join attributes by key value” et double-cliquez dessus.

    • Une nouvelle fenêtre s’ouvre. Nous pouvons y définir les paramètres de l’outil Join attributes by field value.

    • Comme “Input layer”, sélectionnez la couche tcd_admbnda_adm2_20250212_AB.

    • Sous “Table field”, sélectionnez ADM2_PCODE.

    • Comme “Input layer 2”, sélectionnez vaccination_coverage_adm2.

    • Sous “Table field 2”, sélectionnez adm2_pcode.

    • Sous “Layer 2 fields to copy”, nous pouvons choisir les colonnes à copier. Cliquez sur les trois points à droite du champ et sélectionnez vaccination_rate_mcv1 et vaccination_rate_mcv2. Puis cliquez sur OK.

    • Enfin, pour exécuter l’algorithme, cliquez sur Run.

    ../_images/en_3.40_m3_ex_8_pub_health_1_join_attr_vaccine_coverage.png

Une nouvelle couche appelée “Joined Layer” apparaîtra dans le panneau des couches. À sa droite, vous verrez un symbole . Ce symbole indique qu’il s’agit d’une couche temporaire de travail. Cela signifie qu’elle sera supprimée lorsque vous fermerez votre projet QGIS, même si vous enregistrez le projet.

  1. Nous pouvons enregistrer la couche temporaire en faisant un clic droit dessus puis en sélectionnant Make permament....

    • Une nouvelle fenêtre s’ouvrira. Nous devons y préciser l’emplacement du fichier et le nom de la couche.

    • Laissez le Format sur “GeoPackage”.

    • Cliquez sur les trois points, accédez au dossier data/interim/ et saisissez un nom de fichier tel que tcd_adm2_vacc_coverage. Cliquez sur Save.

    • Saisissez le même nom dans le champ Layer name (ce sera le nom de la couche dans le panneau des couches).

    • Laissez le reste inchangé puis cliquez sur Ok.

Très bien ! Nous avons ajouté les informations de couverture vaccinale à notre couche adm2. Nous pouvons maintenant visualiser ces informations en appliquant une symbologie graduée à la couche.

Tâche 6 : Visualiser la couverture vaccinale #

Enregistrer votre progression

Pensez à enregistrer votre projet régulièrement pour conserver votre progression en cliquant sur . QGIS est en constante évolution grâce à la communauté open source et il lui arrive de planter de temps en temps.

Maintenant que les informations de couverture vaccinale figurent dans notre couche adm2, nous pouvons les visualiser afin de comprendre leur répartition spatiale.

  1. Ouvrez l’onglet de symbologie via la fenêtre des propriétés de la couche :

    • Faites un clic droit sur la couche tcd_adm2_vacc_coverage → Properties.

    • Accédez à “Symbology” dans les onglets à gauche.

    • Ici, nous pouvons changer la méthode de symbologie de Single Symbol à Graduated.

    • Ensuite, nous devons sélectionner la valeur qui sera utilisée pour la classification. Sous Value, sélectionnez la colonne vaccination_rate_mcv1 puis cliquez sur classify. Nous voulons utiliser le mode Equal Interval avec 5 classes pour une première évaluation de la couverture vaccinale.

../_images/en_3.40_m3_ex_8_pub_health_1_vacc_coverage_map.png

Capture d’écran de la variable vaccination_rate_mcv1 classée#

Tâche 7 : Enrichir le jeu de données des structures de santé #

Dans cette étape, nous voulons enrichir la couche contenant les structures de santé avec des données supplémentaires sur leur capacité. La couche tcd_healthsite_capacities.csv contient des informations sur la capacité en lits de l’unité de soins pédiatriques ainsi que sur la capacité de chaîne du froid. Ces informations sont utiles pour identifier la capacité du secteur de la santé à traiter les cas aigus de rougeole et à coordonner une campagne de vaccination.

Recueillir les informations sur les capacités

Dans un scénario réaliste, ces données pourraient avoir été collectées lors d’une évaluation rapide des structures de santé menée par le ministère de la Santé et des volontaires de la Croix-Rouge. Comme la collecte de données a été décentralisée et partiellement réalisée sur support papier, certains noms de structures diffèrent légèrement d’un jeu de données à l’autre (par ex. variantes orthographiques, abréviations). Lors des jointures, soyez attentif·ve à ce type d’incohérences.

  1. Importons tcd_healthsite_capacities.csv dans votre projet QGIS :

    • Dans la barre supérieure, allez à Layer → Add Layer → Add Delimited Text Layer...

    • À droite du champ File name, cliquez sur les trois points et accédez au fichier data/input/tcd_healthsite_capacities.csv, puis cliquez sur Open.

    • Dans la fenêtre d’import, vous verrez un aperçu des données dans le champ des données d’exemple. Examinez les colonnes et les données disponibles. Quel type d’information est présent dans chaque colonne ?

    • Malheureusement, cette table de données ne contient pas de coordonnées pour les structures de santé individuelles. Sous Geometry Definition, sélectionnez No geometry (attribute only table).

    • Cliquez sur Add. La couche apparaîtra dans votre onglet des couches sous forme de table de données, mais ne sera pas affichée dans le canevas cartographique.

  2. Examinons plus en détail la table des capacités.

    • Faites un clic droit sur la couche et ouvrez la table attributaire.

    • Dans la barre supérieure, vous pouvez voir combien d’entrées contient le jeu de données (148 features)

    • La table de données contient une colonne appelée name, qui contient le nom des structures de santé. Ces noms sont les mêmes que ceux stockés dans la couche ponctuelle des structures de santé importée précédemment.

    • Cela signifie que nous pouvons joindre les deux tables à l’aide des valeurs attributaires de la colonne name.

  3. Dans la boîte à outils de traitements, recherchez l’outil Join attributes by field value et ouvrez-le par double-clic.

    • Une nouvelle fenêtre s’ouvrira. Nous pouvons y définir les paramètres de l’outil Join attributes by field value.

    • Comme “Input layer”, sélectionnez la couche hotosm_tcd_health_facilities_points_gpkg.

    • Sous “Table field”, sélectionnez name.

    • Comme “Input layer 2”, sélectionnez tcd_healthsite_capacities.

    • Sous “Table field 2”, sélectionnez name.

    • Sous “Layer 2 fields to copy”, nous pouvons choisir les colonnes à copier. Cliquez sur les trois points à droite du champ et sélectionnez cold_chain, measles_vaccination, measles_treatment, beds_total, pediatric_beds, staff_total, et remarks. Puis cliquez sur OK.

    • Enfin, pour exécuter l’algorithme, cliquez sur Run.

    ../_images/en_3.40_m3_ex_8_pub_health_1_join_attr_by_field_value.png

    Note

    Après avoir exécuté l’algorithme, la fenêtre basculera vers l’onglet Log. Vous pourrez y voir si l’algorithme a rencontré un problème. Dans notre cas, nous pouvons voir que 149 entités ont été jointes avec succès tandis que 183 n’ont pas pu être jointes. Cela se produit lorsque la valeur d’identification (table field) est absente de la colonne correspondante de la couche 2. Cela peut arriver soit parce que la donnée n’est pas disponible, soit à cause d’incohérences dans la valeur d’identification, comme des fautes de frappe ou des orthographes différentes.

    • Après avoir consulté le Log, nous pouvons fermer la fenêtre de l’outil. Une nouvelle couche appelée Joined layer devrait apparaître dans votre panneau des couches. Renommez-la en healthsites_points_capacities et déplacez-la tout en haut.

Nous disposons maintenant d’une nouvelle couche ponctuelle contenant les capacités des structures de santé pertinentes. Grâce à ces informations, nous pouvons créer une carte montrant les capacités du secteur de la santé.

Tâche 8 : Nettoyer les données des structures de santé #

  1. Examinons la nouvelle couche que nous venons de créer, qui inclut les capacités des structures de santé, en ouvrant la table attributaire.

    • Faites un clic droit sur la couche puis ouvrez la table attributaire.

    • Dans la table attributaire, si vous faites défiler vers la droite, vous verrez les nouvelles colonnes contenant les informations ajoutées via l’outil “join attributes by field value”.

    • Triez la table attributaire selon les nouvelles colonnes. Comme vous pouvez le constater, toutes les entités ne disposent pas d’informations sur la capacité.

    • Nous pouvons retirer les structures de santé sans informations supplémentaires, puisqu’elles sont déjà disponibles dans le jeu de données d’origine.

    • Triez la colonne beds_total par ordre croissant, de manière à faire apparaître les entités ayant une valeur “NULL” en haut.

    • Cliquez sur le numéro de ligne à gauche et sélectionnez la première entité. Lorsqu’elle est sélectionnée, l’entité apparaît en bleu.

    • Faites ensuite défiler jusqu’à voir la première entité dont la valeur de la colonne beds_total est différente de “NULL”.

    • Maintenez Shift et cliquez sur le numéro de la dernière ligne ayant la valeur NULL.

    • Dans la barre d’outils de la table attributaire, cliquez sur le bouton Toggle Editing Mode pour passer en mode édition.

    • Ensuite, cliquez sur Delete selected features pour supprimer les points sans information de capacité.

    • Cliquez sur pour enregistrer et quitter le mode édition.

    • Enregistrez la couche nettoyée des capacités des structures de santé en faisant un clic droit dessus puis en sélectionnant Make permament.... Choisissez “Geopackage” comme format de sortie, enregistrez la couche dans le dossier data/interim/ et saisissez un nom de fichier comme tcd_healthsites_points_capacities. Cliquez sur Save.

Notre nouvelle couche ponctuelle des structures de santé n’inclut désormais que les structures pour lesquelles nous avons reçu des données supplémentaires.

Tâche 9 : Classifier les structures de santé #

  1. Nous pouvons maintenant classifier les points représentant les structures de santé afin d’indiquer quelles structures disposent d’une chaîne du froid pour stocker les vaccins contre la rougeole.

    • Faites un clic droit sur tcd_healthsites_points_capacities puis sélectionnez Properties. Une nouvelle fenêtre s’ouvrira.

    • À gauche, accédez à l’onglet Symbology.

    ../_images/en_3.40_m3_ex_8_pub_health_1_classifying_healthpoint_capacity.png
    • Au lieu de Single Symbol, nous allons maintenant sélectionner Categorised comme méthode de visualisation.

    • Comme “Value”, sélectionnez cold_chain

    • Ensuite, cliquez sur Classify.

    • Si vous le souhaitez, vous pouvez ajuster la symbologie des classes en double-cliquant sur l’une d’elles.

    • Comme nous ne nous intéressons pas aux valeurs de cold_chain égales à NULL, nous pouvons supprimer cette entrée de classification en la sélectionnant puis en cliquant sur le signe moins rouge juste à côté du bouton Classify.

    • Cliquez sur Apply, puis fermez la fenêtre des propriétés.

    • Analysez la répartition des structures de santé ayant une valeur cold_chain vraie.