ST_Difference utilise deux objets de type géométrie en entrée et renvoie un objet de même type résultant de la différence des deux objets source. Les deux géométries en entrée doivent être de même dimension, sinon la valeur nulle est renvoyée.
Syntaxe
db2gse.ST_Difference(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
Type de retour
db2gse.ST_Geometry
Exemples
Le directeur des services techniques municipaux a besoin de connaître la surface totale non bâtie des parcelles de la ville. Autrement dit, il veut connaître la superficie totale obtenue une fois la surface bâtie soustraite de la surface des parcelles.
CREATE TABLE BUILDINGFOOTPRINTS ( building_id integer, lot_id integer, footprint db2gse.ST_MultiPolygon); CREATE TABLE LOTS ( lot_id integer, lot db2gse.ST_MultiPolygon);
Le directeur des services techniques exécute une équijointure sur les tables BUILDINGFOOTPRINTS et LOTS à partir de l'ID parcelle (lot_id). Il calcule ensuite la surface cumulée issue de la différence parcelles moins bâtis.
SELECT SUM(db2gse.ST_Area(db2gse.ST_Difference(lot,footprint))) FROM BUILDINGFOOTPRINTS bf, LOTS WHERE bf.lot_id = LOTS.lot_id;