PostGIS est une extension spatiale pour la base de données relationnelle PostgreSQL. Elle ajoute les types de colonnes geometry et geography, l'indexation spatiale et une vaste bibliothèque de fonctions SQL pour mesurer, transformer et mettre en relation des entités spatiales. Avec PostGIS, une base de données SQL standard devient un moteur spatial complet capable de traiter des données vectorielles (et, via la prise en charge raster, des grilles) à grande échelle.

Pourquoi c'est important

Pour les équipes qui dépassent les flux de travail à fichier unique, PostGIS offre un magasin spatial central et multi-utilisateurs doté d'une intégrité transactionnelle, de requêtes fines et de performances que les formats de fichiers ne peuvent égaler. Il alimente les back-ends de cartographie web (en servant des tuiles vectorielles et du GeoJSON), garantit la qualité des données via des contraintes SQL, et permet aux analystes d'exécuter des jointures et des superpositions spatiales directement dans la base plutôt que de tout charger dans un SIG bureautique.

Exemple concret

Reprojeter et mesurer en une seule requête :

SELECT name, ST_Area(ST_Transform(geom, 32631)) AS area_m2 FROM units;

Ici, ST_Transform reprojette les géométries vers la zone UTM 31N (EPSG:32631) pour que ST_Area renvoie des mètres carrés. Un index spatial (GiST) créé avec CREATE INDEX ON units USING GIST (geom); rend rapides les filtres par boîte englobante et les jointures.

Piège courant

Confondre les types geometry et geography. geometry effectue un calcul planaire (plat) dans le SCR que précise le SRID, de sorte que les surfaces et les distances ne sont correctes que dans un SCR projeté approprié. geography calcule les distances réelles sur l'ellipsoïde en mètres, mais prend en charge moins de fonctions et est plus lent. De plus, ST_SetSRID ne fait qu'étiqueter le SCR d'une géométrie ; il ne déplace pas les coordonnées, alors que ST_Transform les reprojette réellement.

Pour aller plus loin