ST_SymmetricDiff
Définition
ST_SymmetricDiff accepte deux objets ST_Geometry et renvoie un objet geometry composé des parties des objets source qui ne sont pas communes aux deux.
Syntaxe
sde.st_symmetricdiff (g1 sde.st_geometry, g2 sde.st_geometry)
Type de retour
ST_Geometry
Exemple
Pour un rapport spécial, le responsable de l'aménagement du territoire doit déterminer les surfaces des zones sensibles et des sites dangereux qui ne se coupent pas.
La table sensitive_areas contient une colonne id en plus de la colonne shape qui stocke les géométries surfaciques des institutions.
La table hazardous_sites stocke l'identité des sites dans la colonne id, tandis que l'emplacement géographique réel de chaque site est stocké dans la colonne des points de site.
CREATE TABLE sensitive_areas (id integer,
shape sde.st_geometry);
CREATE TABLE hazardous_sites (id integer,
site sde.st_geometry);
INSERT INTO SENSITIVE_AREAS VALUES (
1,
sde.st_geometry ('polygon ((20 30, 30 30, 30 40, 20 40, 20 30))', 0)
);
INSERT INTO SENSITIVE_AREAS VALUES (
2,
sde.st_geometry ('polygon ((30 30, 30 50, 50 50, 50 30, 30 30))', 0)
);
INSERT INTO SENSITIVE_AREAS VALUES (
3,
sde.st_geometry ('polygon ((40 40, 40 60, 60 60, 60 40, 40 40))', 0)
);
INSERT INTO HAZARDOUS_SITES VALUES (
4,
sde.st_geometry ('point (60 60)', 0)
);
INSERT INTO HAZARDOUS_SITES VALUES (
5,
sde.st_geometry ('point (30 30)', 0)
);
La fonction ST_Buffer génère une zone tampon qui entoure les points des sites de dépôt de déchets dangereux. La fonction ST_SymmetricDiff retourne les polygones des sites de dépôt de déchets dangereux placés en zone tampon et des zones sensibles qui ne se coupent pas.
Oracle
SELECT sa.id SA_ID,hs.id HS_ID,
sde.st_area (sde.st_symmetricdiff (sde.st_buffer (hs.site, .1), sa.shape)) AREA_NO_INT
FROM HAZARDOUS_SITES hs, SENSITIVE_AREAS sa
WHERE hs.id = 4;
SA_ID HS_ID AREA_NO_INT
1 4 100.031393
2 4 400.031393
3 4 400.015697
PostgreSQL
SELECT sa.id AS SA_ID, hs.id AS HS_ID,
sde.st_area (sde.st_symmetricdiff (sde.st_buffer (hs.site, .1), sa.shape)) AS "no intersection"
FROM hazardous_sites hs, sensitive_areas sa
WHERE hs.id = 4;
sa_id hs_id no intersection
1 4 100.031393502001
2 4 400.031393502001
3 4 400.01569751
La différence symétrique entre les sites de dépôt de déchets dangereux et les zones sensibles a pour résultat la soustraction des zones qui se coupent.