Referência e Guia do Usuário

ST_Within

ST_Within toma dois objetos de geometria e retorna 1 (VERDADEIRO) se o primeiro objeto estiver completamente dentro do segundo; do contrário, retornará 0 (FALSO).

Sintaxe

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

Tipo de retorno

Inteiro

Exemplos

No exemplo abaixo são criadas duas tabelas. A primeira, BUILDINGFOOTPRINTS, contém as bases de construção da cidade. A segunda tabela, LOTS, contém os lotes da cidade. 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 selecionou os multipolígonos para os dois recursos, porque 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 );

Utilizando a seguinte instrução SELECT, o engenheiro da cidade primeiro seleciona as construções que não estão completamente dentro de um lote.

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

Embora a primeira consulta forneça uma lista de todos os BUILDINGS_IDs que têm bases foram de um polígono do lote, ela não determinará se o restante possui a id de lote atribuído a eles. Esta segunda consulta executa uma verificação de integridade dos dados na coluna LOT_ID 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_Within(footprint,lot) = 1 AND
       LOTS.lot_id <> bf.lot_id; 


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