Développement Web

QGIS : importer, styliser et analyser des données spatiales pas à pas

16 min de lecture
📍 Guide principal : La chaîne géospatiale open source : QGIS, PostGIS, GeoServer, MapLibre. Ce tutoriel en construit la première brique — préparer la donnée. Lisez le guide principal pour la vue d’ensemble.

Introduction

Une mairie vous transmet un fichier Excel de 180 écoles avec leurs coordonnées GPS, une administration vous envoie un shapefile des limites de communes, et on vous demande une carte qui croise les deux : combien d’écoles par commune, lesquelles sont à plus de deux kilomètres d’une route bitumée. Ouvrir tout ça dans un tableur ne mène nulle part — les colonnes de latitude et longitude ne sont que des nombres tant qu’un logiciel ne les projette pas sur un plan. QGIS est l’outil qui transforme ces nombres en géographie : il lit presque tous les formats spatiaux, les superpose, les style, et permet de poser des questions spatiales que ni Excel ni un SGBD classique ne savent traiter directement.

À la fin de ce tutoriel, vous aurez un projet QGIS complet : des points importés depuis un CSV, des polygones de communes chargés depuis un GeoJSON, le tout reprojeté correctement, stylé par catégorie, et enrichi d’une analyse spatiale (combien de points dans chaque zone, quels points dans un rayon donné). Ce projet servira de source de données propre pour la suite de la série, où il sera versé dans PostGIS puis publié sur le web.

🎯 Ce que vous allez apprendre

  • Importer des données tabulaires géolocalisées (CSV) et des couches vectorielles (GeoJSON, shapefile) dans QGIS.
  • Diagnostiquer et corriger un système de coordonnées (CRS) mal défini — la cause numéro un des cartes « vides ».
  • Styliser une couche par catégories et y ajouter des étiquettes lisibles.
  • Réaliser deux analyses spatiales fondamentales : la jointure par localisation et la zone tampon (buffer).
  • Exporter une couche propre vers un GeoPackage ou une base PostGIS, prête pour la publication.

🛠️ Ce que vous allez construire

Un projet cartographique nommé portail-territorial : une couche de points (écoles ou points d’intérêt), une couche de polygones (communes), une colonne calculée indiquant le nombre d’écoles par commune, et un export final exploitable par les outils serveur. Le résultat visuel : une carte où chaque commune est colorée selon sa densité d’équipements, avec les points par-dessus.

Prérequis

  • QGIS installé. Au moment d’écrire, la version stable à long terme recommandée est QGIS 3.44 LTR « Solothurn » ; la dernière en date est la 4.0. Pour un usage de production, préférez la LTR, plus stable. Téléchargement sur qgis.org/download.
  • Un système : Windows, macOS ou Linux. QGIS est identique sur les trois.
  • Niveau débutant accepté. Test express : si vous savez ce qu’est une latitude et une longitude et ouvrir un CSV, vous êtes prêt.
  • ⏱️ Temps estimé : ~50 minutes.

Étape 1 — Installer QGIS et créer le projet

Avant toute donnée, on pose le cadre de travail. Un projet QGIS (fichier .qgz) n’embarque pas les données : il mémorise quelles couches afficher, leur style et le système de coordonnées de la vue. C’est un avantage — le projet reste léger — mais cela impose de ne pas déplacer les fichiers sources après les avoir ajoutés, sous peine de couches « cassées ».

Lancez QGIS, puis menu Projet → Nouveau. Enregistrez-le immédiatement sous portail-territorial.qgz dans un dossier dédié où vous placerez aussi vos fichiers de données. Travailler avec un dossier unique par projet évite 90 % des problèmes de chemins relatifs.

En bas à droite de la fenêtre, repérez le code EPSG du projet (par défaut EPSG:4326). Ce code identifie le système de coordonnées de référence. Nous y reviendrons à l’étape 4 : c’est le réglage le plus important et le plus souvent négligé.

Point d’étape — Vous avez un projet enregistré et une fenêtre vide avec un canevas gris. Le panneau « Couches » à gauche est vide. C’est normal : on va le remplir.

Étape 2 — Importer un CSV de points géolocalisés

La donnée la plus courante qu’on vous donnera est un tableur avec deux colonnes de coordonnées. QGIS sait le lire directement, sans conversion préalable, à condition de lui indiquer quelle colonne porte la longitude (axe X, est-ouest) et laquelle porte la latitude (axe Y, nord-sud). L’inversion des deux est l’erreur classique : vos points atterrissent dans l’océan ou en Antarctique.

Préparez un fichier ecoles.csv de cette forme (le séparateur peut être la virgule ou le point-virgule) :

nom,type,longitude,latitude
Ecole Medina,publique,-17.4515,14.6802
Ecole Plateau,publique,-17.4390,14.6710
College Liberte,prive,-17.4602,14.7155

Ouvrez le Gestionnaire des sources de données (icône en haut à gauche, ou Couche → Ajouter une couche → Ajouter une couche de texte délimité). Sélectionnez le fichier, choisissez Géométrie de point, et affectez longitude au champ X et latitude au champ Y. Dans « CRS de la géométrie », indiquez EPSG:4326 car des coordonnées GPS en degrés décimaux sont toujours du WGS84.

Cliquez sur Ajouter. Vos points apparaissent sur le canevas. Si rien ne s’affiche, faites un clic droit sur la couche puis Zoomer sur la couche : neuf fois sur dix, la donnée est là mais la vue est restée ailleurs. Si les points sont visiblement décalés, c’est que X et Y ont été inversés — recommencez l’import.

Point d’étape — Une couche « ecoles » est listée à gauche et ses points sont visibles. Clic droit → Ouvrir la table d’attributs doit montrer vos colonnes nom, type, longitude, latitude.

Étape 3 — Ajouter les polygones de communes

Les limites administratives circulent en deux formats principaux : le shapefile (un ensemble de fichiers .shp, .shx, .dbf, .prj indissociables) et le GeoJSON (un seul fichier texte lisible). Le GeoJSON est plus simple à manipuler ; le shapefile reste le format d’échange historique des administrations. QGIS lit les deux sans réglage particulier.

Glissez-déposez votre fichier communes.geojson directement dans le panneau « Couches », ou passez par Couche → Ajouter une couche → Ajouter une couche vecteur. La couche de polygones s’ajoute par-dessus les points. Réorganisez l’ordre d’affichage en faisant glisser les couches : une couche placée en haut du panneau masque celles du dessous, donc placez les points au-dessus des communes pour les voir.

Pour qu’on distingue les communes sans cacher les points, rendez les polygones semi-transparents : double-clic sur la couche communes → onglet Symbologie → réglez l’opacité du remplissage à 50 %. La carte devient lisible : des zones colorées translucides, des points nets par-dessus.

Point d’étape — Deux couches superposées : communes (polygones) et écoles (points). Les deux doivent se recouvrir géographiquement. Si les communes s’affichent à un endroit et les points à un autre, vous avez un conflit de CRS — c’est précisément l’objet de l’étape suivante.

Étape 4 — Vérifier et harmoniser les systèmes de coordonnées

Le système de coordonnées de référence (CRS) décrit comment les nombres d’une couche se traduisent en position réelle sur le globe. Deux couches dans des CRS différents ne se superposent correctement que parce que QGIS les reprojette « à la volée » pour l’affichage — mais l’analyse spatiale, elle, exige souvent un CRS commun et, surtout, un CRS métrique pour mesurer des distances en mètres plutôt qu’en degrés.

Vérifiez le CRS de chaque couche : clic droit → Propriétés → Information. Les coordonnées GPS sont en EPSG:4326 (degrés). Pour mesurer des distances et tracer des tampons, on bascule vers une projection métrique adaptée à la région. Pour Dakar et l’ouest du continent, la zone UTM 28N correspond au code EPSG:32628 ; plus à l’est, on utilise 29N (32629), 30N (32630) ou 31N (32631) selon la longitude.

Pour reprojeter durablement une couche, utilisez la Boîte à outils de traitements (menu Traitement → Boîte à outils), cherchez Reprojeter une couche, sélectionnez la couche écoles, choisissez EPSG:32628 comme CRS cible et exécutez. Une nouvelle couche reprojetée est créée.

# Équivalent en ligne de commande avec ogr2ogr (inclus dans QGIS via OSGeo4W) :
ogr2ogr -t_srs EPSG:32628 ecoles_utm.gpkg ecoles.csv -oo X_POSSIBLE_NAMES=longitude -oo Y_POSSIBLE_NAMES=latitude -s_srs EPSG:4326

Cette commande lit le CSV, lui attribue le CRS source 4326, puis le reprojette en 32628 dans un GeoPackage. Après reprojection, une mesure de distance avec l’outil règle de QGIS renverra des mètres exploitables, et non des fractions de degré incompréhensibles. Faites de même pour la couche communes afin que les deux partagent le même CRS métrique.

Point d’étape — Les deux couches sont en EPSG:32628. L’outil règle (barre d’outils) affiche désormais des distances en mètres entre deux écoles.

Étape 5 — Styliser par catégorie et étiqueter

Une carte n’informe que si la symbologie porte du sens. Plutôt qu’un point uniforme, on veut distinguer les écoles publiques des privées d’un coup d’œil. QGIS propose pour cela le rendu Catégorisé, qui attribue une couleur par valeur d’un champ.

Double-clic sur la couche écoles → Symbologie → en haut, choisissez Catégorisé. Dans « Valeur », sélectionnez le champ type, puis cliquez sur Classer. QGIS liste les valeurs distinctes (publique, prive) et leur affecte une couleur. Ajustez les couleurs pour un contraste fort, puis validez.

Pour les étiquettes, allez dans l’onglet Étiquettes de la même fenêtre, passez de « Pas d’étiquette » à Étiquettes simples, et choisissez le champ nom. Activez un tampon (halo) blanc autour du texte dans la sous-section « Tampon » : sans lui, les noms deviennent illisibles sur un fond chargé.

Point d’étape — Les écoles publiques et privées ont des couleurs distinctes, une légende apparaît dans le panneau Couches, et chaque point porte son nom lisible.

Étape 6 — Analyse spatiale : compter les points par commune

Voici la question qui justifie tout le reste : combien d’écoles dans chaque commune ? Aucune relation n’existe entre les deux couches dans les données — c’est la position de chaque point dans un polygone qui crée le lien. L’outil Compter les points dans les polygones matérialise ce lien.

Dans la Boîte à outils de traitements, cherchez Compter les points dans les polygones. Renseignez la couche de polygones (communes), la couche de points (écoles), et un nom de champ de sortie comme nb_ecoles. Exécutez. Une nouvelle couche communes est produite, identique à l’originale mais avec une colonne nb_ecoles remplie.

Ouvrez sa table d’attributs pour vérifier : chaque commune porte désormais son décompte. Vous pouvez alors repasser en symbologie Gradué sur ce champ nb_ecoles pour colorer les communes du clair (peu d’écoles) au foncé (beaucoup) — c’est une carte choroplèthe, le grand classique de l’analyse territoriale.

Point d’étape — La couche communes a une colonne nb_ecoles non vide, et la carte est colorée par densité.

Étape 7 — Zone tampon : qu’y a-t-il à moins de 500 mètres ?

Deuxième analyse fondamentale : la zone tampon (buffer), qui dessine une aire à distance fixe autour d’un objet. Utile pour répondre à « quelles écoles sont à moins de 500 m d’un point de collecte » ou « quelle zone couvre un dispensaire ». Le tampon n’a de sens qu’en CRS métrique — d’où l’importance de l’étape 4.

Boîte à outils → Tampon. Sélectionnez la couche écoles (en 32628), entrez une distance de 500 (mètres, puisque le CRS est métrique), laissez les segments par défaut et exécutez. QGIS génère des cercles de 500 m de rayon autour de chaque école.

# Le même tampon en SQL une fois la donnée dans PostGIS (aperçu de la suite) :
SELECT nom, ST_Buffer(geom, 500) AS zone_500m
FROM ecoles;

Ce rapprochement n’est pas anodin : la fonction ST_Buffer de PostGIS fait exactement ce que l’outil graphique de QGIS vient de faire. QGIS est parfait pour explorer et valider visuellement ; PostGIS prendra le relais pour industrialiser ces calculs sur des millions d’objets. C’est tout l’enjeu de la série.

Point d’étape — Des cercles de 500 m entourent chaque école. En les superposant aux communes, vous voyez immédiatement les zones couvertes et les trous.

Étape 8 — Exporter une couche propre vers GeoPackage ou PostGIS

Vos données sont désormais nettoyées, reprojetées et enrichies. Il faut les sortir de QGIS dans un format durable. Le GeoPackage (.gpkg) est le format de fichier recommandé aujourd’hui : un seul fichier, basé sur SQLite, capable de stocker plusieurs couches, sans la limite des noms de colonnes à dix caractères du shapefile.

Clic droit sur la couche communes enrichie → Exporter → Enregistrer les entités sous. Choisissez le format GeoPackage, un nom de fichier portail.gpkg, un nom de couche communes, et conservez le CRS 32628. Répétez pour les écoles dans le même GeoPackage : il accueille plusieurs couches.

Pour exporter directement vers PostGIS, QGIS propose dans la Boîte à outils l’outil Exporter vers PostgreSQL (ou, si une connexion est déjà configurée dans le Gestionnaire des sources de données, un simple glisser-déposer vers la base). Vous aurez besoin d’une base PostGIS active — c’est précisément ce que monte le tutoriel suivant de la série.

Point d’étape final — Un fichier portail.gpkg contient vos deux couches propres. Rouvrez-le dans un nouveau projet QGIS pour confirmer qu’il est autonome et bien projeté.

🐞 Pièges fréquents

Symptôme Cause probable Correctif
Les points apparaissent dans l’océan au large de l’Afrique Longitude et latitude inversées à l’import Réimporter en affectant longitude → X, latitude → Y
Deux couches ne se superposent pas CRS différents et reprojection à la volée désactivée Vérifier le CRS de chaque couche, reprojeter dans un CRS commun (étape 4)
Le tampon renvoie des valeurs minuscules type 0,004 Couche en degrés (EPSG:4326), pas en mètres Reprojeter en UTM (EPSG:32628) avant le buffer
Couche « cassée » au rouvrir le projet Fichier source déplacé après ajout Réparer la source (clic droit → Réparer) ou tout garder dans un dossier unique
Caractères accentués illisibles dans la table Encodage du CSV mal détecté Forcer UTF-8 dans les options d’import de la couche délimitée

🌍 Adaptation au contexte local

QGIS est entièrement gratuit et tourne sans difficulté sur un ordinateur modeste, ce qui en fait un choix pragmatique quand le budget logiciel est nul. Les données ouvertes utiles sont nombreuses : OpenStreetMap fournit routes et bâtiments exportables via l’extension QuickOSM, et les limites administratives officielles sont souvent disponibles en shapefile auprès des agences nationales de statistique ou des plateformes de données géographiques régionales. Pensez à travailler hors-ligne : QGIS met en cache les fonds de carte, mais une fois vos couches vectorielles chargées localement, vous n’avez plus besoin de connexion — un atout réel là où la bande passante est coûteuse ou intermittente. Enfin, le bon CRS métrique dépend de votre longitude : UTM 28N (32628) pour le Sénégal et la Gambie, 29N à 31N en allant vers l’est jusqu’au Niger et au Bénin.

✅ Récapitulatif

Vous êtes parti d’un CSV brut et d’un fichier de limites, et vous avez produit un projet cartographique cohérent : import et contrôle des données, harmonisation du système de coordonnées, symbologie porteuse de sens, deux analyses spatiales (comptage par zone et zone tampon), puis un export propre en GeoPackage. Vous savez maintenant repérer et corriger les pièges qui ruinent silencieusement une carte — inversion X/Y, CRS en degrés, sources déplacées. Cette donnée propre est exactement ce qu’attend la suite de la série pour la stocker et la servir sur le web.

🧾 Aide-mémoire

Action Où / comment
Importer un CSV de points Gestionnaire des sources → Texte délimité → X=longitude, Y=latitude, CRS 4326
Ajouter un vecteur (GeoJSON/SHP) Glisser-déposer dans le panneau Couches
Reprojeter Traitement → Reprojeter une couche → cible EPSG:32628
Styliser par valeur Propriétés → Symbologie → Catégorisé / Gradué
Compter points par zone Traitement → Compter les points dans les polygones
Zone tampon Traitement → Tampon (distance en mètres, CRS métrique)
Exporter Clic droit → Exporter → Enregistrer les entités sous → GeoPackage

💪 À vous de jouer

Premier défi : ajoutez une couche de routes (depuis OpenStreetMap via QuickOSM) et identifiez les écoles situées à plus de 2 km de toute route. Second défi : exportez la carte choroplèthe en image haute résolution via le Mise en page de QGIS, avec titre, légende et échelle.

Voir une piste de solution

Pour les écoles éloignées : tracez un tampon de 2000 m autour des routes, puis utilisez Sélectionner par localisation pour sélectionner les écoles qui ne sont pas dans ce tampon (option « sont disjointes »). Pour l’export image : Projet → Nouvelle mise en page, ajoutez une carte, une légende (qui reprend automatiquement vos couches), une barre d’échelle, puis Exporter au format image en 300 dpi.

Tutoriels frères

Pour aller plus loin

  • 🔝 Retour au guide principal : La chaîne géospatiale open source
  • Documentation officielle : docs.qgis.org (manuel utilisateur et formation gratuite)
  • Pour stocker et interroger industriellement ces données, lire le tutoriel PostGIS de la série.

FAQ

Q : QGIS ou ArcGIS ?
R : ArcGIS est une suite commerciale puissante mais coûteuse. QGIS couvre l’écrasante majorité des besoins d’analyse et de cartographie sans licence, lit les mêmes formats, et bénéficie d’un écosystème d’extensions très actif. Pour apprendre et produire sans budget, QGIS est le choix rationnel.

Q : Faut-il toujours reprojeter en UTM ?
R : Pour l’affichage, non — la reprojection à la volée suffit. Mais dès que vous mesurez des distances, des aires ou tracez des tampons, oui : un CRS métrique comme l’UTM donne des mètres exploitables, là où le WGS84 en degrés produit des valeurs sans signification métrique directe.

Q : Shapefile ou GeoPackage ?
R : GeoPackage. Le shapefile reste répandu pour l’échange, mais il limite les noms de colonnes à dix caractères, éclate en plusieurs fichiers et plafonne à 2 Go. Le GeoPackage est un fichier unique, moderne, sans ces limites.

Q : Mon CSV utilise le point-virgule comme séparateur, est-ce un problème ?
R : Non. L’import de texte délimité de QGIS détecte le séparateur, et vous pouvez le forcer manuellement (virgule, point-virgule, tabulation) dans les options d’import.

Service ITSkillsCenter

Application mobile Android et iOS

Création d'application mobile Android et iOS. À partir de 350 000 FCFA.

Démarrer mon projet
Publicité