Opérations spatiales
Les opérations spatiales utilisent des fonctions de géométrie pour prendre des données en entrée, les analyser, puis générer des données qui découlent de l'analyse effectuée sur les données en entrée.
Les données dérivées que vous pouvez ainsi obtenir d'une opération spatiale sont les suivantes :
- Un polygone qui est une zone tampon autour d'une entité en entrée
Une entité unique qui est le résultat de l'analyse effectuée sur un ensemble de géométries
- Une entité unique qui est le résultat d'une comparaison visant à déterminer la partie d'une entité qui ne se trouve pas dans le même espace physique qu'une autre entité
- Une entité unique qui est le résultat d'une comparaison visant à découvrir les parties d'une entité qui coupent l'espace physique d'une autre entité
- Une entité multi-parties composée des parties de deux entités en entrée qui ne se trouvent pas dans le même espace physique que l'autre
- Une entité qui est l'agrégation de deux géométries
L'analyse effectuée sur les données en entrée renvoie les coordonnées ou la représentation textuelle des géométries obtenues. Vous pouvez utiliser ces informations dans le cadre d'une plus large requête pour effectuer une analyse supplémentaire, ou vous pouvez utiliser les résultats pour les entrer dans une autre table.
Par exemple, vous pouvez inclure une opération de zone tampon dans la clause WHERE d'une requête d'intersection pour déterminer si la géométrie spécifiée coupe une surface de taille spécifiée autour d'une autre géométrie.
Les exemples suivants utilisent des fonctions ST_Geometry. Pour connaître les fonctions de géométrie et la syntaxe spécifiques utilisées pour une autre base de données et un autre type de données spatiales, consultez la documentation spécifique à cette base de données et à ce type de données.
Dans cet exemple, les notifications doivent être envoyées à tous les propriétaires qui se trouvent à moins de 1 000 pieds d'une fermeture de rue. La clause WHERE génère une zone tampon de 1 000 pieds autour de la rue qui va être fermée. Cette zone tampon est ensuite comparée aux propriétés de la surface pour voir celles qui s'intersectent avec la zone tampon.
SELECT p.owner,p.address,s.stname FROM parcels p, streets s WHERE s.stname = 'Main' AND sde.st_intersects (p.shape, sde.st_buffer (s.shape, 1000)) = 't';
Dans cet exemple, une rue spécifique (Main) est choisie dans la clause WHERE, puis une zone tampon est créée autour de la rue et comparée aux entités de la table parcels pour déterminer si elles se coupent.* Pour toutes les parcelles qui sont intersectées par la zone tampon sur la rue Main, le nom et l'adresse du propriétaire de la parcelle sont renvoyés.
*L'ordre dans lequel les parties de la clause WHERE sont exécutées dépend de l'optimiseur de base de données.
Voici un exemple de récupération des résultats d'une opération spatiale (agrégation) effectuée sur des tables contenant des surfaces de voisinage et d'arrondissement scolaire pour insérer les entités obtenues dans une autre table :
INSERT INTO combo c (shape) VALUES ( (SELECT sde.st_union (n.shape,d.shape) FROM neighborhoods n, school_districts d),5);
Pour plus d'informations sur l'utilisation des opérateurs spatiaux avec ST_Geometry, reportez-vous à la rubrique Fonctions d'opérations spatiales pour ST_Geometry. Pour plus d'informations sur l'utilisation des opérateurs spatiaux 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.