Base de données spatiales
Note
définition : Une base de données spatiale est une base de données optimisée pour stocker, interroger et manipuler des données géométriques en 3 dimensions (spatiales) et par extension des données géographiques.
Un Système de Gestion de Bases de Données Géographiques (SGBDG), est un système conçu pour gérer, stocker, et interroger des données spatiales et/ou géographiques, y compris des points, les lignes et des polygones.
L'Open Geospatial Consortium (OGC) a créé les spécifications des caractéristiques simples et les standards pour compléter les systèmes de gestion de bases de données avec les fonctionnalités de gestion de données spatiales.
Définition
Représentation des données spatiales
Vecteur : Représentation des données sous forme de points, lignes et polygones.
Raster : Représentation des données sous forme de grille, où chaque cellule a une valeur correspondant à une caractéristique géographique.
WKT : Well-Known Text format standard de type texte pour représenter les géométries, destiné à être lu par des humains.
WKB : Well-Known Binary format standard binaire pour représenter les géométries. Il est utilisé pour assurer l'import/export/échange de données entre différentes plate-formes, sans risque.
GeoJSON : format d’échange de données géospatiales en JSON.
GPX : format XML créé spécifiquement pour enregistrer et partager des traces, itinéraires et points d’intérêt issus de récepteurs GPS.
KML : format XML créé par Keyhole et racheté depuis par Google. Il est standardisé par l'OGC. Il peut inclure du style et des liens vers des photos ou des modèles 3D. C'est un format plus riche que GPX.
Analyse spatiale
Géocodage : Transformation des adresses en coordonnées géographiques.
Reverse géocodage : Transformation des coordonnées géographiques en adresse textuelle ou lieu.
Topologie : Étude des relations spatiales entre les objets géographiques (adjacence, connectivité).
Requêtes spatiales : Recherche de proximité, intersection, inclusion, connexité, adjacence.
SRID (Spatial Reference System Identifier) est un identifiant numérique qui indique dans quel système de coordonnées une géométrie est définie.
SRID
Le SRID est essentiel, c'est l’équivalent d’une unité de mesure pour les coordonnées géographiques.
Une même géométrie (un point ou un polygone) peut exister dans différents systèmes de référence.
Le SRID permet au SGBDG de savoir comment interpréter les coordonnées.
Deux géométries avec des coordonnées identiques mais des SRID différents ne représentent pas le même emplacement.
Quelques SRID populaires
EPSG:4326 : WGS84 (World Geodetic System 1984) est un système géodésique mondial basé sur la latitude et la longitude en degrés . Il est utilisé par le système de positionnement par satellite GPS.
EPSG:3857 : Web Mercator, utilisé par Google Maps et OpenStreet Map. Coordonnées en mètres projetés. Il n'est pas fidèle aux surfaces mais simple pour les cartes interactives.
EPSG:2154 : Lambert-93, projection officielle en France.
Il existe des dizaines d'autres système suivant l'endrit du monde que l'on veut représenter.
Quand utiliser le type de données Géographie ?
Le type de données géographie permet de stocker des données en coordonnées longitude/latitude, mais à un coût : il y a moins de fonctions définies sur GEOGRAPHY que sur GEOMETRY ; les fonctions qui sont définies demandent plus de temps de traitement CPU pour être exécutées.
Si les données sont contenues dans une petite zone, comme une ville, il est préférable en termes de performance et de fonctionnalités disponibles de choisir GEOMETRY.
Si les données sont globales ou couvrent une région continentale, les types GEOGRAPHY permettent de construire un système sans avoir à vous soucier des détails de projection.
Types de données spatiales :
- Points : Représentent des emplacements précis (ex. emplacements de capteurs, adresses).
- Lignes : Représentent des entités linéaires (ex. routes, rivières).
- Polygones : Représentent des surfaces (ex. limites de villes, zones de conservation).
Point
Le type POINT représente un point unique défini par ses valeurs x (longitude) et y (latitude).
select ST_MakePoint(12, 3);
select ST_PointFromText('POINT(15 5)');
ST_MakePoint n'est pas conforme au standard mais il a l'avantage d'être rapide et de travailler sur des nombres à la place du texte.
Ligne
Le type LINESTRING représente une ligne constituée de points.
select GeomFromText('LINESTRING(3 5,6 7,8 2,12 1)');
Polygone
Le type POLYGON est une ligne fermée qui représente une surface. Les coordonnées du dernier point sont égales aux coordonnées du premier point. Chaque point est séparé par une virgule (attention au format décimal français qui utilise aussi la virgule) et les coordonnées sont séparées par des espaces.
select GeomFromText('POLYGON((2 2, 4 3, 5 7, 3 8, 1 9, 2 2))')
Géométrie
Le type GEOMETRY représente indifféremment un point, une ligne ou un polygone. Les lignes de la table sont constituées d'un mélange de points, de lignes et de polygones.
select ST_GeomFromText('LINESTRING(3 5,6 7,8 2,12 1)');
MULTIPOINT
Le type MULTIPOINT représente une collection de points.
select MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')
MULTILINESTRING
Le type MULTILINESTRING représente une collection de lignes.
select MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))');
MULTIPOLYGON
Le type MULTIPOLYGON représente une collection de polygones.
select MultiPolygonFromText('MULTIPOLYGON(
((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),
((59 18,67 18,67 13,59 13,59 18)))');
GEOMETRYCOLLECTION
Le type GEOMETRYCOLLECTION représente une collection hétérogène d'objets géométriques points lignes ou polygones.
Fonctions de mesures
ST_Area: surface d’un polygone.ST_Perimeter: périmètre d’un polygone.ST_Length: longueur d’une ligne.ST_Distance: distance entre deux objets
Fonctions relationnelles
-
ST_Contains(A, B): A contient B. -
ST_Within(A, B): A est contenu dans B. -
ST_Intersects(A, B): A et B se coupent. -
ST_Touches(A, B): A touche B (sans être à l’intérieur). -
ST_Equals(A, B): A et B sont identiques. -
ST_Disjoint(A, B): A et B sont séparés. -
geometry : coordonnées dans un plan → distances en degrés (il faut projeter en SRID métrique pour mesurer correctement).
-
geography : distances vraies sur la sphère terrestre (en mètres). Idéal pour calculer distances/aires directement.
Fonctions de transformation
ST_Transform(geom, srid): change le système de coordonnées (ex. de WGS84 → Lambert93).ST_Centroid(geom): centre géométrique.ST_Envelope(geom): rectangle englobant.ST_Intersection(A, B): intersection entre 2 objets.ST_Union(A, B): fusion de 2 géométries.ST_Difference(A, B): soustraction géométrique.
Fonctions d’export et format
ST_AsText(geom): WKT (Well-Known Text).ST_AsGeoJSON(geom): JSON pour le web.ST_AsBinary(geom): WKB (Well-Known Binary).ST_AsKML(geom): format KML.