L'une des premières fonctions d'un SIG est de déterminer les relations spatiales existant entre des entités. Est-ce qu'elles se chevauchent ? Une entité est-elle contenue dans une autre ? Est-ce qu'elles se coupent ?
Les géométries peuvent être liées spatialement de différentes façons. Voici des exemples montrant comment une géométrie peut être spatialement liée à une autre :
- La géométrie A traverse la géométrie B.
- La géométrie A est entièrement contenue par la géométrie B.
- La géométrie A contient entièrement la géométrie B.
- Les géométries ne se coupent pas et ne se touchent pas.
- Les géométries coïncident complètement.
- Les géométries se chevauchent.
- Les géométries se touchent à un point.
Pour savoir si ces relations existent ou pas, exécutez les fonctions de relation spatiale. Ces fonctions comparent les propriétés suivantes des géométries que vous spécifiez dans votre requête :
- l'extérieur (E) des géométries qui est l'ensemble de l'espace non occupé par une géométrie ;
- l'intérieur (I) des géométries qui est l'espace occupé par une géométrie ;
- la limite (B) des géométries, qui est l'interface entre l'intérieur d'une géométrie et l'extérieur.
Lorsque vous élaborez une requête de relation spatiale, indiquez le type de relation spatiale que vous recherchez et les géométries que vous souhaitez comparer. Les requêtes renvoient la valeur True ou False ; soit les géométries participent ensemble à la relation spatiale spécifiée, soit elles n'y participent pas. Dans la plupart des cas, vous utilisez une requête de relation spatiale pour filtrer les résultats en l'insérant dans la clause WHERE.
Par exemple, si vous avez une table qui stocke l'emplacement de sites de développement proposés et une autre table qui stocke l'emplacement de sites archéologiquement significatifs, vous pouvez vous assurer que les entités de la table des sites de développement ne coupent pas les sites archéologiques. Vous pouvez effectuer une requête pour vous assurer qu'aucun des sites de développement ne coupe les sites archéologiques et, si tel est le cas pour certains, renvoyer l'identifiant de ces développements proposés. Dans cet exemple, la fonction ST_Disjoint est utilisée.
SELECT d.projname,a.siteid
FROM dev d, archsites a
WHERE sde.st_disjoint(d.shape,a.shape)= 'f'
projname siteid
bow wow chow A1009
Cette requête renvoie le nom du site de développement et l'identifiant du site archéologique qui ne sont pas disjoints : en d'autres termes, les sites qui se coupent. Elle renvoie un projet de développement, Bow Wow Chow, qui coupe le site archéologique A1009.
Pour plus d'informations sur les fonctions ST_Geometry qui testent les relations spatiales dans Oracle ou PostgreSQL, reportez-vous à la rubrique Fonctions de relations spatiales pour ST_Geometry. Pour plus d'informations sur les fonctions de relations spatiales utilisées avec les types spatiaux IBM DB2, IBM Informix, Oracle Spatial, PostGIS ou Microsoft SQL Server, consultez la documentation de ces systèmes de gestion de bases de données.