Une base de données spatiale est une base de données à usage général (généralement une base de données relationnelle ) qui a été améliorée pour inclure des données spatiales qui représentent des objets définis dans un espace géométrique , ainsi que des outils permettant d'interroger et d'analyser ces données.
La plupart des bases de données spatiales permettent la représentation d'objets géométriques simples tels que des points , des lignes et des polygones . Certaines bases de données spatiales gèrent des structures plus complexes telles que des objets 3D , des couvertures topologiques , des réseaux linéaires et des réseaux triangulés irréguliers (TIN). Alors que les bases de données classiques ont été développées pour gérer divers types de données numériques et de caractères , ces bases de données nécessitent des fonctionnalités supplémentaires pour traiter efficacement les types de données spatiales, et les développeurs ont souvent ajouté des types de données géométriques ou de fonctions .
Une base de données géographique (ou géodatabase ) est une base de données spatiale géoréférencée , utilisée pour stocker et manipuler des données géographiques (ou géodonnées, c'est-à-dire des données associées à un emplacement sur Terre), notamment dans les systèmes d'information géographique (SIG). Presque tous les systèmes de gestion de bases de données relationnelles et objet-relationnelles actuels disposent désormais d'extensions spatiales, et certains éditeurs de logiciels SIG ont développé leurs propres extensions spatiales aux systèmes de gestion de bases de données.
L' Open Geospatial Consortium (OGC) a développé la spécification Simple Features et définit des normes pour l'ajout de fonctionnalités spatiales aux systèmes de bases de données. La norme ISO/IEC SQL/MM Spatial fait partie du langage de requête structuré et de la norme multimédia qui étend les fonctionnalités simples.
Caractéristiques
La fonctionnalité principale ajoutée par une extension spatiale à une base de données est un ou plusieurs types de données spatiales , qui permettent le stockage de données spatiales sous forme de valeurs d'attribut dans une table. Le plus souvent, une valeur spatiale unique serait une primitive géométrique (point, ligne, polygone, etc.) basée sur le modèle de données vectorielles . Les types de données de la plupart des bases de données spatiales sont basés sur la spécification OGC Simple Features pour représenter les primitives géométriques. Certaines bases de données spatiales prennent également en charge le stockage de données raster . Étant donné que tous les emplacements géographiques doivent être spécifiés selon un système de référence spatiale , les bases de données spatiales doivent également permettre le suivi et la transformation des systèmes de coordonnées. Dans de nombreux systèmes, lorsqu'une colonne spatiale est définie dans une table, elle comprend également un choix de système de coordonnées, choisi dans une liste de systèmes disponibles stockée dans une table de recherche.
La deuxième extension majeure des fonctionnalités d'une base de données spatiales est l'ajout de capacités spatiales au langage de requête (par exemple, SQL ) ; elles confèrent à la base de données spatiale les mêmes opérations de requête, d'analyse et de manipulation que celles disponibles dans les logiciels SIG traditionnels. Dans la plupart des systèmes de gestion de bases de données relationnelles, cette fonctionnalité est implémentée sous la forme d'un ensemble de nouvelles fonctions qui peuvent être utilisées dans les instructions SQL SELECT. Plusieurs types d'opérations sont spécifiés par la norme Open Geospatial Consortium :
- Mesure : calcule la longueur de ligne, la surface du polygone, la distance entre les géométries, etc.
- Géotraitement : Modifier des entités existantes pour en créer de nouvelles, par exemple en créant une zone tampon autour d'elles, en intersectant des entités, etc.
- Prédicats : permet des requêtes vrai/faux sur les relations spatiales entre les géométries. Exemples : « Deux polygones se chevauchent-ils ? » ou « Y a-t-il une résidence située à moins d'un mile de la zone où nous prévoyons de construire la décharge ? » (voir DE-9IM )
- Constructeurs de géométrie : crée de nouvelles géométries, généralement en spécifiant les sommets (points ou nœuds) qui définissent la forme.
- Fonctions d'observation : requêtes qui renvoient des informations spécifiques sur une entité, telles que l'emplacement du centre d'un cercle.
Certaines bases de données ne prennent en charge que des ensembles simplifiés ou modifiés de ces opérations, en particulier dans le cas de systèmes NoSQL comme MongoDB et CouchDB .
Index spatial
Un index spatial est utilisé par une base de données spatiale pour optimiser les requêtes spatiales . Les systèmes de base de données utilisent des index pour rechercher rapidement des valeurs en triant les valeurs de données dans un ordre linéaire (par exemple alphabétique) ; cependant, cette façon d'indexer les données n'est pas optimale pour les requêtes spatiales dans un espace bidimensionnel ou tridimensionnel. Au lieu de cela, les bases de données spatiales utilisent un index spatial conçu spécifiquement pour le classement multidimensionnel. Les méthodes d'index spatial courantes incluent :
- Partitionnement de l'espace binaire (BSP-Tree) : Subdivision de l'espace par hyperplans.
- Hiérarchie des volumes englobants (BVH)
- Géohash
- Grille (index spatial)
- Code HH
- Arbre R de Hilbert
- arbre k -d
- m-tree – un index m-tree peut être utilisé pour la résolution efficace des requêtes de similarité sur des objets complexes comparés à l'aide d'une métrique arbitraire.
- Octree
- PH-arbre
- Quadtree
- R-tree : Il s'agit généralement de la méthode préférée pour l'indexation des données spatiales. Les objets (formes, lignes et points) sont regroupés à l'aide du rectangle englobant minimal (MBR). Les objets sont ajoutés à un MBR dans l'index qui entraînera la plus petite augmentation de sa taille.
- Arbre R+
- Arbre R*
- Arbre UB
- Arbre X
- Ordre Z (courbe)
Requête spatiale
Une requête spatiale est un type particulier de requête de base de données pris en charge par les bases de données spatiales, y compris les géodatabases. Les requêtes diffèrent des requêtes SQL non spatiales de plusieurs manières importantes. Deux des plus importantes sont qu'elles permettent l'utilisation de types de données géométriques tels que des points, des lignes et des polygones et que ces requêtes prennent en compte la relation spatiale entre ces géométries.
Les noms des fonctions de requêtes diffèrent selon les géodatabases. Voici quelques-unes des fonctions intégrées à PostGIS , une géodatabase gratuite qui est une extension PostgreSQL (le terme « géométrie » fait référence à un point, une ligne, une boîte ou une autre forme bidimensionnelle ou tridimensionnelle) :
Prototype de fonction : functionName (paramètre(s)) : type de retour
- ST_Distance(géométrie, géométrie) : nombre
- ST_Equals(géométrie, géométrie) : booléen
- ST_Disjoint(géométrie, géométrie) : booléen
- ST_Intersects(géométrie, géométrie) : booléen
- ST_Touches(géométrie, géométrie) : booléen
- ST_Crosses(géométrie, géométrie) : booléen
- ST_Overlaps(géométrie, géométrie) : booléen
- ST_Contains(géométrie, géométrie) : booléen
- ST_Length(géométrie) : nombre
- ST_Area(géométrie) : nombre
- ST_ Centroïde (géométrie) : géométrie
- ST_Intersection(géométrie, géométrie) : géométrie
Ainsi, une jointure spatiale entre une couche de points de villes et une couche de polygones de pays pourrait être effectuée dans une instruction SQL étendue spatialement comme :
SELECT * FROM cities, countries WHERE ST_Contains(countries.shape, cities.shape)
L' opération de superposition de vecteurs Intersect (un élément essentiel du logiciel SIG) pourrait être reproduite comme suit :
SELECT ST_Intersection(veg.shape, soil.shape) int_poly, veg.*, soil.* FROM veg, soil where ST_Intersects(veg.shape, soil.shape)
Systèmes de gestion de bases de données spatiales
Liste
- AllegroGraph – une base de données graphique qui fournit un mécanisme de stockage et de récupération efficace des coordonnées géospatiales bidimensionnelles pour les données du Resource Description Framework . Elle comprend une syntaxe d'extension pour les requêtes SPARQL .
- ArangoDB - une base de données multi-modèle qui offre une capacité de géoindexation.
- Apache Drill - Un moteur de requête MPP SQL pour interroger de grands ensembles de données. Drill prend en charge les types de données spatiales et les fonctions similaires à PostgreSQL.
- Esri Geodatabase (Enterprise, Mobile) - une structure de base de données spatiale propriétaire et un modèle logique qui peuvent être implémentés sur plusieurs bases de données relationnelles, à la fois commerciales (Oracle, MS SQL Server, Db2) et open source (PostgreSQL, SQLite)
- Caliper étend le Raima Data Manager avec des types de données spatiaux, des fonctions et des utilitaires.
- CouchDB est un système de base de données basé sur des documents qui peut être activé spatialement par un plugin appelé Geocouch
- Elasticsearch est un système de base de données basé sur des documents qui prend en charge deux types de données géographiques : les champs geo_point qui prennent en charge les paires lat/lon, et les champs geo_shape, qui prennent en charge les points, les lignes, les cercles, les polygones, les multi-polygones, etc.
- GeoMesa est une base de données spatio-temporelle basée sur le cloud, construite sur Apache Accumulo et Apache Hadoop (prend également en charge Apache HBase , Google Bigtable , Apache Cassandra et Apache Kafka ). GeoMesa prend en charge toutes les fonctionnalités simples de l'OGC et un plugin GeoServer.
- H2 prend en charge les types de géométrie et les indices spatiaux à partir de la version 1.3.173 (28/07/2013). Une extension appelée H2GIS disponible sur Maven Central offre une prise en charge complète des fonctionnalités simples de l'OGC .
- Toute édition d' IBM Db2 peut être activée spatialement pour implémenter la fonctionnalité spatiale OpenGIS avec des types et des fonctions spatiales SQL.
- Les extensions de données géodésiques et spatiales IBM Informix s'installent automatiquement lors de l'utilisation et étendent les types de données d'Informix pour inclure plusieurs systèmes de coordonnées standard et la prise en charge des index RTree. Les données géodésiques et spatiales peuvent également être intégrées à la prise en charge des données Timeseries d'Informix pour suivre les objets en mouvement au fil du temps.
- Linter SQL Server prend en charge les types spatiaux et les fonctions spatiales selon les spécifications OpenGIS.
- Microsoft SQL Server prend en charge les types spatiaux depuis la version 2008
- L'extension MonetDB/GIS pour MonetDB ajoute des fonctionnalités simples OGS à la base de données relationnelle à colonnes .
- Le SGBD MySQL implémente le type de données geometry , ainsi que certaines fonctions spatiales implémentées conformément aux spécifications OpenGIS. Cependant, dans la version MySQL 5.5 et antérieure, les fonctions qui testent les relations spatiales sont limitées au travail avec des rectangles de délimitation minimum plutôt qu'avec les géométries réelles. Les versions MySQL antérieures à 5.0.16 ne prenaient en charge que les données spatiales dans les tables MyISAM. À partir de MySQL 5.0.16, InnoDB, NDB, BDB et ARCHIVE prennent également en charge les fonctionnalités spatiales.
- Neo4j – une base de données graphique qui peut créer des index 1D et 2D sous forme de B-tree , Quadtree et courbe de Hilbert directement dans le graphique
- OpenLink Virtuoso prend en charge SQL/MM depuis la version 6.01.3126, avec des améliorations significatives, notamment GeoSPARQL dans Open Source Edition 7.2.6 et dans Enterprise Edition 8.2.0
- Oracle Spatial
- Le SGBD PostgreSQL (système de gestion de base de données) utilise l'extension PostGIS pour implémenter des fonctionnalités spatiales conformes à l'OGC , y compris la géométrie de type de données standardisée et les fonctions correspondantes.
- Redis avec l'API Geo.
- RethinkDB prend en charge les index géospatiaux en 2D.
- SAP HANA prend en charge la géospatiale avec SPS08.
- Smallworld VMDS , la base de données SIG native de GE Smallworld
- SpaceTime est une base de données spatiotemporelle commerciale construite sur l'index multidimensionnel propriétaire similaire à la famille d'arbres k -d , mais créée à l'aide de l'approche ascendante et adaptée à une distribution spatio-temporelle particulière des données.
- Le serveur de requêtes spatiales de Boeing permet d'activer spatialement Sybase ASE.
- SpatiaLite étend Sqlite avec des types de données spatiaux, des fonctions et des utilitaires.
- Tarantool prend en charge les requêtes géospatiales avec l'index RTREE.
- Teradata Geospatial inclut la fonctionnalité spatiale 2D (conforme à l'OGC) dans son système d'entrepôt de données.
- Vertica Place , l'extension géospatiale pour HP Vertica , ajoute des fonctionnalités spatiales compatibles OGC à la base de données relationnelle à colonnes .