ST_Disjoint utilise deux géométries en entrée et renvoie la valeur 1 (TRUE) si l'intersection des deux géométries génère un ensemble vide, et la valeur 0 (FALSE) dans le cas contraire.
Syntaxe
db2gse.ST_Disjoint(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
Type de retour
Integer
Exemples
Une compagnie d'assurances doit estimer le taux de couverture applicable à l'hôpital, aux maisons de retraite et aux écoles d'une ville. Cela consiste en partie à déterminer la menace que les sites de déchets dangereux représentent pour chaque établissement. La compagnie d'assurance ne veut prendre en compte que les établissements ne présentant aucun risque de contamination. Le consultant SIG appointé par la compagnie d'assurances a été chargé de localiser tous les établissements ne figurant pas dans un rayon de 8 km d'un site de produits dangereux.
La table SENSITIVE_AREAS contient plusieurs colonnes qui décrivent les établissements menacés, en sus de la colonne ZONE qui stocke la géométrie de type polygone des établissements.
CREATE TABLE SENSITIVE_AREAS (id integer, name varchar(128), size float, type varchar(10), zone db2gse.ST_Polygon);
La table HAZARDOUS_SITES stocke l'identificateur des sites dans les colonnes SITE_ID et NAME, alors que l'emplacement géographique réel de chaque site est enregistré dans la colonne LOCATION.
CREATE TABLE HAZARDOUS_SITES (site_id integer, name varchar(128), location db2gse.ST_Point);
L'instruction SELECT ci-après répertorie les noms de toutes les zones sensibles qui ne se trouvent pas dans un rayon de 8 km d'un site de déchets dangereux. La fonction ST_Intersects peut se substituer à la fonction ST_Disjoint dans cette requête si le résultat obtenu est égal à 0 au lieu de 1. En effet, ST_Intersects et ST_Disjoint renvoie des résultats exactement inverses.
SELECT sa.name FROM SENSITIVE_AREAS sa, HAZARDOUS_SITES hs WHERE db2gse.ST_Disjoint(db2gse.ST_Buffer(hs.location,(5 * 5280)),sa.zone) = 1;
Sur la Figure 32, les zones sensibles sont comparées au rayon de 8 km des sites de déchets dangereux. La maison de retraite est la seule zone sensible pour laquelle la fonction ST_Disjoint renvoie la valeur 1 (TRUE). La fonction ST_Disjoint renvoie cette valeur lorsque deux géométries ne génèrent absolument aucune intersection.