Referência e Manual do Usuário

ST_SymmetricDiff

O ST_SymmetricDiff toma dois objetos de figura geométrica e retorna um objeto de figura geométrica que é a diferença simétrica dos objetos de origem.

A função ST_SymmetricDiff retorna a diferença simétrica (a lógica booleana XOR de espaço) de duas figuras geométricas que fazem interseção e estão na mesma dimensão. Se as figuras geométricas forem idênticas, ST_SymmetricDiff retornará uma figura geométrica vazia. Se não, uma parte de uma delas ou de ambas ficará fora da área de interseção. ST_SymmetricDiff retorna a parte ou as partes que não fazem interseção como uma coleção; por exemplo, como um polígono múltiplo.

Se ST_SymmetricDiff receber figuras geométricas de dimensões diferentes como entradas, retornará um valor nulo.

Sintaxe

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

Tipo de retorno

db2gse.ST_Geometry

Exemplos

O supervisor do município deve determinar a área sensível e o raio de 8 km de áreas de risco que não têm interseção.

A seguinte instrução CREATE TABLE cria a tabela SENSITIVE_AREAS, que contém várias colunas que descrevem as instituições ameaçadas. A tabela SENSITIVE_AREAS também contém a coluna ZONE, que armazena a figura geométrica do polígono da instituição.

CREATE TABLE SENSITIVE_AREAS (id        integer,
                              name      varchar(128),
                              size      float,
                              type      varchar(10),
                              zone      db2gse.ST_Polygon);

A seguinte instrução CREATE TABLE cria a tabela HAZARDOUS_SITES, que armazena o identificador dos locais nas colunas SITE_ID e NAME, ao passo que a localização geográfica real de cada local é armazenada na coluna de ponto LOCATION.

CREATE TABLE HAZARDOUS_SITES (site_id   integer,
                              name      varchar(128),
                              location  point); 

A função ST_Buffer gera um buffer de 8 km ao redor das áreas do lixo tóxico. A função ST_SymmetricDiff gera polígonos a partir da interseção dos polígonos de locais com lixo tóxico em buffer e das áreas sensíveis. A função ST_Area retorna a área de polígono da interseção, de cada área de risco.

SELECT sa.name, hs.name,
       db2gse.ST_Area(db2gse.ST_SymmetricDiff (db2gse.ST_Buffer(hs.location,
(5 * 5280)),sa.zone))
FROM HAZARDOUS_SITES hs, SENSITIVE_AREAS sa 

Figura 38. Utilizando o ST_SymmetricDiff para determinar as áreas de lixo tóxico que não contêm áreas sensíveis (construções desabitadas)


top

Na Figura 38, a diferença simétrica das áreas de lixo tóxico e das área sensíveis resulta na subtração das áreas de interseção.


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