ST_Contains utilise deux géométries en entrée et renvoie la valeur 1 (TRUE) si le premier objet contient entièrement le second, et la valeur 0 (FALSE) dans le cas contraire.
Syntaxe
db2gse.ST_Contains(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
Type de retour
Integer
Exemples
Dans l'exemple ci-dessous, deux tables sont créées. L'une contient le bâti d'une ville, et l'autre, le parcellaire. Le directeur des services techniques municipaux veut s'assurer que tous les bâtis sont entièrement contenus dans leur parcelle respective.
Dans les deux tables, le type de données multipolygone permet de stocker la géométrie des bâtis et celle des parcelles. Le concepteur de la base de données a sélectionné des multipolygones pour ces deux entités. Il a tenu compte du fait que les parcelles pouvaient être disjointes par des entités naturelles (rivière, etc.) et qu'un bâti pouvait souvent être constitué de plusieurs bâtiments.
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 municipaux a d'abord sélectionné les bâtis qui n'étaient pas entièrement contenus dans une seule parcelle.
SELECT building_id FROM BUILDINGFOOTPRINTS, LOTS WHERE db2gse.ST_Contains(lot,footprint) = 0;
Ensuite, il a réalisé que la première requête renverrait la liste de tous les ID bâtiment associés à des bâtis figurant en dehors d'un polygone de parcelle. Mais il savait également que ces informations n'indiqueraient pas si l'ID parcelle correct avait été affecté aux autres bâtiments. La seconde requête exécute une vérification de l'intégrité des données sur la colonne lot_id de la table BUILDINGFOOTPRINTS.
SELECT bf.building_id "building id", bf.lot_id "buildings lot_id", LOTS.lot_id "LOTS lot_id" FROM BUILDINGFOOTPRINTS bf, LOTS WHERE db2gse.ST_Contains(lot,footprint) = 1 AND LOTS.lot_id <> bf.lot_id;
Sur la Figure 30, les bâtis libellés avec leurs ID bâtiment se trouvent à l'intérieur de leurs parcelles. Les limites des parcelles sont représentées par des lignes en pointillé. Bien que cela n'apparaisse pas, ces lignes s'étendent jusqu'au milieu de la rue et englobent les parcelles ainsi que les bâtis contenus dans celles-ci.