Cartographie

PostGIS : La Puissance des Bases de Données Spatiales

Par MapWay Team 10 Mai 2025 11 min de lecture
Visualisation de données dans une base de données spatiale

PostGIS est l'extension spatiale de PostgreSQL, la base de données relationnelle open source la plus avancée du monde. En ajoutant le support des types géométriques, des index spatiaux et de centaines de fonctions d'analyse spatiale, PostGIS transforme PostgreSQL en un véritable moteur de bases de données géographiques capable de rivaliser avec les solutions propriétaires les plus coûteuses. Chez MapWay, PostGIS est la pierre angulaire de notre infrastructure de données pour tous nos produits cartographiques en Tunisie.

Pourquoi PostGIS ?

PostGIS est le choix dominant pour le stockage de données géographiques dans le monde open source, et pour de bonnes raisons :

  • Conformité aux standards : PostGIS implémente les standards OGC Simple Features for SQL (SFS) et ISO SQL/MM Spatial, garantissant la portabilité de votre code SQL.
  • Performance : les index spatiaux GiST (Generalized Search Tree) permettent des requêtes géographiques ultra-rapides même sur des tables de millions de lignes.
  • Richesse fonctionnelle : plus de 300 fonctions spatiales couvrent l'analyse géométrique, la topologie, le géocodage, le routage et le traitement raster.
  • Intégration : PostGIS s'intègre parfaitement avec QGIS, GeoServer, MapServer, GDAL et tout l'écosystème géospatial open source.
  • Coût : entièrement gratuit et open source, contrairement à Oracle Spatial ou SQL Server Spatial dont les licences sont prohibitives.

Installation et premiers pas

L'installation de PostGIS est simple, surtout avec Docker :

docker run -d --name postgis \
  -e POSTGRES_PASSWORD=monMotDePasse \
  -e POSTGRES_DB=geodata \
  -p 5432:5432 \
  postgis/postgis:16-3.4

Une fois le serveur démarré, activez l'extension PostGIS dans votre base de données :

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;

-- Vérifier l'installation
SELECT PostGIS_Full_Version();

Types de données géographiques

PostGIS introduit deux types principaux de colonnes spatiales :

  • geometry : pour les coordonnées projetées dans un plan cartésien (mètres). Utilise des calculs euclidiens rapides.
  • geography : pour les coordonnées en latitude/longitude sur le sphéroïde terrestre. Les calculs de distance sont exacts mais plus lents.
-- Créer une table avec une colonne géométrique
CREATE TABLE points_interet (
  id SERIAL PRIMARY KEY,
  nom VARCHAR(255),
  categorie VARCHAR(100),
  geom GEOMETRY(Point, 4326)
);

-- Insérer un point (ex: centre de Tunis)
INSERT INTO points_interet (nom, categorie, geom)
VALUES ('Place de la Kasbah', 'monument',
  ST_SetSRID(ST_MakePoint(10.1658, 36.7992), 4326));

Requêtes spatiales essentielles

Recherche de proximité

Trouver tous les points d'intérêt dans un rayon de 1 km autour d'une position :

SELECT nom, categorie,
  ST_Distance(geom::geography,
    ST_SetSRID(ST_MakePoint(10.18, 36.80), 4326)::geography
  ) AS distance_m
FROM points_interet
WHERE ST_DWithin(geom::geography,
  ST_SetSRID(ST_MakePoint(10.18, 36.80), 4326)::geography,
  1000)
ORDER BY distance_m;

Intersection et contenance

PostGIS excelle dans les opérations d'analyse spatiale. Voici quelques fonctions courantes :

  • ST_Contains(A, B) : A contient-il B ?
  • ST_Intersects(A, B) : A et B ont-ils une partie commune ?
  • ST_Buffer(geom, distance) : créer une zone tampon autour d'une géométrie
  • ST_Area(geom) : calculer la surface d'un polygone
  • ST_Union(A, B) : fusionner deux géométries

Index spatiaux : la clé de la performance

Sans index spatial, chaque requête géographique scannerait l'intégralité de la table, ce qui est inacceptable pour les jeux de données volumineux. PostGIS utilise des index GiST basés sur des R-Trees pour filtrer rapidement les candidats potentiels :

CREATE INDEX idx_points_interet_geom
ON points_interet USING GIST (geom);

Un index spatial bien configuré peut améliorer les performances des requêtes de plusieurs ordres de grandeur. Sur notre base de données d'adresses tunisiennes chez MapWay, nous avons mesuré des améliorations de 100x à 1000x sur les requêtes de proximité grâce aux index GiST.

PostGIS chez MapWay

PostGIS est le fondement de notre infrastructure de données chez MapWay. Notre base de données des codes postaux tunisiens (qui alimente Code-Postale.tn), notre référentiel d'adresses pour Houni.tn, et les données cartographiques de TMaps sont tous stockés dans PostGIS. Sa capacité à gérer des millions d'entités géographiques avec des performances constantes en fait le choix naturel pour tout projet géospatial sérieux.

Besoin d'aide pour votre projet ?

Notre équipe d'experts est prête à vous accompagner.

Contactez-nous