Base de données spatiales
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. POINT (-4.01777500 48.74761210)
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. 01010000206A08000058FD60B64C8B06414B3EC21D8F375A41
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.
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.