ST_Contains toma dois objetos de figura geométrica e retorna 1 (VERDADEIRO) se o primeiro objeto incluir completamente o segundo; caso contrário, retornará 0 (FALSO).
Sintaxe
db2gse.ST_Contains(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
Tipo de retorno
Inteiro
Exemplos
No exemplo abaixo são criadas duas tabelas. Uma tabela contém as bases de construção da cidade, ao passo que a outra contém seus lotes. O engenheiro da cidade deseja verificar se todas as bases de construção estão inteiramente dentro de seus lotes.
Nas duas tabelas o tipo de dados de multipolígono armazena a figura geométrica das bases e lotes de construção. O projetista de bancos de dados selecionou multipolígonos para ambos os recursos. O projetista imaginou que os lotes podem ser desmembrados por recursos naturais, como um rio e que as bases de construção podem ser geralmente constituídas de vários edifícios.
CREATE TABLE BUILDINGFOOTPRINTS ( building_id integer, lot_id integer, footprint db2gse.ST_MultiPolygon); CREATE TABLE LOTS ( lot_id integer, lot db2gse.ST_MultiPolygon );
O engenheiro da cidade primeiro seleciona as construções que não estão inteiramente dentro de um lote.
SELECT building_id FROM BUILDINGFOOTPRINTS, LOTS WHERE db2gse.ST_Contains(lot,footprint) = 0;
O engenheiro da cidade imagina que a primeira consulta retornará uma lista de todas as IDs de construção que possuem bases fora de um polígono do lote. Mas o engenheiro da cidade também sabe que estas informações não indicarão se as outras construções possuem a ID de lote correta atribuída a eles. Esta segunda consulta executa uma verificação de integridade dos dados na id do lote da tabela 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;
Na Figura 30, as bases de construção rotuladas com suas IDs de construção estão dentro de seus lotes. As linhas do lote estão ilustradas com linhas pontilhadas. Embora não ilustradas, estas linhas ampliam a linha central da rua e incluem totalmente os lotes e as bases de construção dentro delas.
Figura 30. Utilizando ST_Contains para garantir que todas as construções fiquem dentro de seus lotes
![]() |