ST_SymmetricDiff utilise deux objets de type géométrie en entrée et renvoie un objet de même type représentant la différence symétrique des deux objets source.
La fonction ST_SymmetricDiff renvoie la différence symétrique (le OU EXCLUSIF [XOR] de l'espace) de deux géométries qui forment une intersection entre elles et sont de même dimension. Si les géométries sont égales, ST_SymmetricDiff renvoie une géométrie vide. Sinon, une partie de l'une d'elles ou des deux sera située en dehors de l'intersection. ST_SymmetricDiff renvoie les parties d'une collection qui sont situées en dehors de l'intersection ; par exemple, sous forme de multipolygone.
Si les géométries fournies en entrée à ST_SymmetricDiff ne sont pas de même dimension, la fonction renvoie une valeur nulle.
Syntaxe
db2gse.ST_SymmetricDiff(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
Type de retour
db2gse.ST_Geometry
Exemples
L'administrateur du comté doit déterminer la surface des zones sensibles et du rayon de 8 km entourant les sites à risque qui ne forment pas d'intersection.
L'instruction CREATE TABLE ci-après crée la table SENSITIVE_AREAS, qui comporte plusieurs colonnes décrivant les établissements menacés. Cette table contient également 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);
L'instruction CREATE TABLE ci-après crée la table HAZARDOUS_SITES qui stocke l'identificateur des sites dans les colonnes SITE_ID et NAME. Quant à l'emplacement géographique réel de chaque site, il est enregistré dans la colonne de type point LOCATION.
CREATE TABLE HAZARDOUS_SITES (site_id integer, name varchar(128), location point);
La fonction ST_Buffer génère une zone tampon de 8 km autour de l'emplacement des sites de déchets dangereux. La fonction ST_SymmetricDiff génère des polygones à partir de l'intersection des polygones des zones tampons des sites à risque avec les zones sensibles. La fonction ST_Area renvoie la surface du polygone d'intersection pour chaque site à risque.
SELECT sa.name, hs.name, db2gse.ST_Area(db2gse.ST_SymmetricDiff (db2gse.ST_Buffer(hs.location,(5 * 5280)),sa.zone)) FROM HAZARDOUS_SITES hs, SENSITIVE_AREAS sa
Sur la Figure 38, la différence symétrique des sites de déchets dangereux et des zones sensibles est obtenue en soustrayant les zones d'intersection de la surface totale.