Guida di riferimento per l'utente

ST_Contains

ST_Contains rileva due oggetti di geometria e restituisce 1 (TRUE) se il primo oggetto contiene il secondo; altrimenti restituisce 0 (FALSE).

Sintassi

db2gse.ST_Contains(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)

Tipo di ritorno

Integer

Esempi

Nel seguente esempio sono riportate due tabelle. Una tabella contiene le piantine degli edifici di una città, mentre l'altra tabella contiene i relativi lotti. L'ingegnere desidera assicurarsi che tutte le piantine siano situate correttamente all'interno dei relativi lotti.

In entrambe le tabelle, il tipo di dati multipoligono memorizza la geometria delle piantine degli edifici e dei lotti. Il programma di progettazione del database ha selezionato i multipoligoni per entrambe le funzioni. E' possibile che i lotti risultino separati da condizioni geografiche naturali, ad esempio da un fiume, e le piantine possono essere costituite da più edifici.

CREATE TABLE BUILDINGFOOTPRINTS (building_id integer,
                                 lot_id      integer,
                                 footprint   db2gse.ST_MultiPolygon);
 
CREATE TABLE LOTS (lot_id integer, lot db2gse.ST_MultiPolygon);

L'ingegnere seleziona innanzitutto gli edifici non completamente contenuti all'interno di un lotto.

SELECT building_id
FROM BUILDINGFOOTPRINTS, LOTS
WHERE db2gse.ST_Contains(lot,footprint) = 0;

La prima interrogazione restituirà un elenco di tutti gli ID degli edifici le cui piantine sono situate esternamente al poligono di un lotto. Tuttavia, queste informazioni non indicano se agli altri edifici è stato assegnato l'ID lotto corretto. Quindi la seconda interrogazione esegue un controllo dell'integrità dei dati nella colonna lot_id della tabella 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;

Nella Figura 30, le piantine degli edifici etichettate con i relativi ID si trovano all'interno dei lotti. Il perimetro del lotto viene rappresentato con delle righe tratteggiate. Queste righe si estendono fino al punto centrale della strada e racchiudono completamente i lotti e le piantine degli edifici.

Figura 30. Utilizzo di ST_Contains per verificare che tutti gli edifici siano contenuti all'interno dei relativi lotti


top


[ Inizio pagina | Pagina precedente | Pagina successiva | Indice | Indice analitico ]