Referência e Manual do Usuário

Construindo uma consulta espacial

Esta seção discute a construção de consultas espaciais que usam funções e predicados espaciais.

Funções espaciais e SQL

O Spatial Extender inclui funções que executam várias operações nos dados espaciais. Os exemplos nesta seção mostram como usar as funções espaciais para construir suas próprias consultas espaciais.

A Tabela 3 fornece uma lista das funções espaciais e os tipos de operações que elas podem executar.

Tabela 3. Operações e funções espaciais
Tipo de função Exemplo de operação
Cálculo Cálculo da distância entre 2 pontos
Comparação Localiza todos os clientes localizados dentro de uma zona de inundação
Permuta de dados Converte dados nos formatos suportados
Transformação Inclui um raio de cinco milhas em um ponto

Para obter mais informações sobre as funções espaciais, consulte Figuras geométricas e funções espaciais associadas e Funções espaciais para consultas SQL.

Exemplo 1: Comparação

A seguinte consulta localiza a distância média do cliente a cada estabelecimento. As funções espaciais usadas neste exemplo são ST_Distance e ST_Within.

SELECT s.id, AVG(db2gse.ST_Distance(c.location,s.location))
FROM customers c, stores s
WHERE db2gse.ST_Within(c.location,s.zone)=1
GROUP BY s.id

Exemplo 2: Permuta de dados

A seguinte consulta procura as localizações de clientes que vivem na Área da Baía de São Francisco (San Francisco Bay Area). As funções espaciais utilizadas neste exemplo são ST_AsText (permuta de dados) e ST_Within. ST_AsText converte os dados espaciais na coluna c.location no formato OGC TEXT.

SELECT db2gse.ST_AsText(c.location,cordref(1))
FROM customers c
WHERE db2gse.ST_Within(c.location,:BayArea)=1
 

Exemplo 3: Cálculo

A seguinte consulta procura todas as ruas maiores que 10.5 milhas. A função espacial utilizada neste exemplo é a ST_Length.

SELECT s.name,s.id
FROM street s
WHERE db2gse.ST_Length(s.path) > 10.5
 

Exemplo 4: Transformação

Esta consulta localiza os clientes que vivem dentro de uma área de inundação ou dentro de 2 milhas do limite da zona de inundação. As funções espaciais utilizadas neste exemplo são ST_Buffer (transformação) e ST_Within.A variável :floodzone é uma variável de host em um programa SQL implementado em C/C++.

SELECT c.name,c.phoneNo,c.address
FROM customers c
WHERE db2gse.ST_Within(c.location,ST_Buffer(:floodzone,2))=1
 


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