Referência e Guia do Usuário

ST_Contains

ST_Contains toma dois objetos de geometria 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 geometria 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


top


[ Início da Página | Página Anterior | Próxima Página | Índice | Índice Remissivo ]