Guida di riferimento per l'utente

ST_Within

ST_Within rileva due oggetti di geometria e restituisce 1 (TRUE) se il primo oggetto si trova nel secondo; in caso contrario, restituisce 0 (FALSE).

Sintassi

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

Tipo di ritorno

Integer

Esempi

Nel seguente esempio sono riportate due tabelle. La prima tabella, BUILDINGFOOTPRINTS, contiene le piantine degli edifici della città. La seconda tabella, LOTS, contiene i lotti della città. 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 multipoligoni per entrambe le funzioni, poiché i lotti possono risultare separati da condizioni geografiche naturali, ad esempio da un fiume, e le piantine degli edifici 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 ); 

Utilizzando la seguente istruzione SELECT, l'ingegnere edile seleziona innanzitutto gli edifici non completamente contenuti all'interno di un lotto.

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

Sebbene la prima interrogazione restituirà un elenco di tutti i BUILDING_ID le cui piantine sono situate all'esterno di un poligono di lotto, questa non determinerà se agli altri edifici è assegnato l'ID di lotto corretto. La seconda istruzione SELECT 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_Within(footprint,lot) = 1 AND
       LOTS.lot_id <> bf.lot_id; 


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