La présente section explique comment créer des requêtes spatiales qui utilisent des fonctions et prédicats spatiaux.
Extension Spatiale comprend des fonctions permettant d'effectuer diverses opérations sur les données spatiales. Les exemples décrits dans la présente section vous indiquent comment utiliser des fonctions spatiales pour créer vos propres requêtes spatiales.
Le Tableau 3 contient une liste des fonctions spatiales et des opérations
correspondantes.
Tableau 3. Fonctions spatiales et opérations
Type de fonction | Exemple d'opération |
---|---|
Calcul | Calcul de la distance entre deux points |
Comparaison | Trouver tous les clients situés dans une zone d'inondation |
Echange de données | Conversion des données en formats pris en charge |
Transformation | Ajouter un rayon de 7 km autour d'un point |
Pour plus d'informations sur les fonctions spatiales, reportez-vous au Géométries et fonctions spatiales associées, et au Fonctions spatiales associées aux requêtes SQL.
La requête ci-après permet d'identifier la distance moyenne existant entre les clients et chaque grand magasin. Les fonctions spatiales utilisées sont les suivantes : ST_Distance et ST_Within.
SELECT s.id, AVG(db2gse.ST_Distance(c.location,s.location)) FROM customers c, stores s WHERE db2gse.ST_Within(c.location,s.zone)=1 GROUP BY s.id
La requête ci-après permet de localiser les clients qui habitent dans la région de San Francisco. Les fonctions spatiales utilisées sont les suivantes : ST_AsText (échange de données) et ST_Within. ST_AsText convertit les données spatiales de la colonne c.location au format OGC TEXT.
SELECT db2gse.ST_AsText(c.location,cordref(1)) FROM customers c WHERE db2gse.ST_Within(c.location,:BayArea)=1
La requête ci-après permet de trouver toutes les rues dépassant 16 km (10,5 miles) de longueur. La fonction spatiale utilisée est la suivante : ST_Length.
SELECT s.name,s.id FROM street s WHERE db2gse.ST_Length(s.path) > 10.5
La requête ci-après permet d'identifier les clients qui vivent à l'intérieur de la zone d'inondation ou dans un périmètre de 3 km au-delà de cette zone. Les fonctions spatiales utilisées sont les suivantes : ST_Buffer (transformation) et ST_Within. La variable :floodzone est une variable SQL d'un programme SQL imbriqué écrit en C/C++.
SELECT c.name,c.phoneNo,c.address FROM customers c WHERE db2gse.ST_Within(c.location,ST_Buffer(:floodzone,2))=1