5.7. Tipos geométricos

Os tipos de dado geométricos representam objetos no espaço bidimensional. A Tabela 5-17 mostra os tipos geométricos disponíveis no PostgreSQL. O tipo mais fundamental, o ponto, forma a base de todos os outros tipos.

Tabela 5-17. Tipos geométricos

Tipos geométricosArmazenamentoRepresentaçãoDescrição
point16 bytes(x,y)Ponto no espaço
line32 bytes((x1,y1),(x2,y2))Linha infinita (não implementado completamente)
lseg32 bytes((x1,y1),(x2,y2))Segmento finito de linha
box32 bytes((x1,y1),(x2,y2))caixa retangular
path16+16n bytes((x1,y1),...)Caminho fechado (similar ao polígono)
path16+16n bytes[(x1,y1),...]Caminho aberto
polygon40+16n bytes((x1,y1),...)Polígono (similar ao caminho fechado)
circle24 bytes<(x,y),r>Círculo (centro e raio)

Um amplo conjunto de funções e operadores está disponível para realizar várias operações geométricas, como escala, translação, rotação e a determinação de interseções, sendo explicadas na Seção 6.9.

5.7.1. Ponto

Pontos são os blocos fundamentais para a construção dos tipos geométricos bidimensionais. O tipo point é especificado utilizando a seguinte sintaxe:

( x , y )
  x , y

onde os argumentos são

x

a coordenada no eixo x como número de ponto flutuante

y

a coordenada no eixo y como número de ponto flutuante

5.7.2. Segmento de linha

Segmentos de linha (lseg) são representados por pares de pontos. O tipo lseg é especificado utilizando a seguinte sintaxe:

( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )  
    x1 , y1   ,   x2 , y2

onde os argumentos são

(x1,y1)
(x2,y2)

os pontos das extremidades do segmento de linha

5.7.3. Caixa

As caixas são representadas por pares de pontos de vértices opostos da caixa. O tipo box é especificado utilizando a seguinte sintaxe:

( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )  
    x1 , y1   ,   x2 , y2

onde os argumentos são

(x1,y1)
(x2,y2)

vértices opostos da caixa

A saída das caixas utiliza a primeira sintaxe. Os vértices são reordenados na entrada para armazenar o vértice direito superior, e depois o vértice esquerdo inferior. Os outros vértices da caixa podem ser fornecidos, mas o esquerdo inferior e o direito superior são determinados a partir da entrada e armazenados.

5.7.4. Caminho

Os caminhos são representados por conjuntos de pontos conectados. Os caminhos podem ser abertos, onde o primeiro e o último ponto do conjunto não estão conectados, e fechados, onde o primeiro e o último ponto estão conectados. As funções popen(p) e pclose(p) são fornecidas para forçar o caminho ser aberto ou fechado, e as funções isopen(p) e isclosed(p) são fornecidas para testar estes tipos na consulta.

O tipo path é especificado utilizando uma das seguintes sintaxes:

( ( x1 , y1 ) , ... , ( xn , yn ) )
[ ( x1 , y1 ) , ... , ( xn , yn ) ]
  ( x1 , y1 ) , ... , ( xn , yn )  
  ( x1 , y1   , ... ,   xn , yn )  
    x1 , y1   , ... ,   xn , yn    

onde os argumentos são

(x,y)

Pontos das extremidades dos segmentos de linha que formam o caminho. Um colchete no início ([) indica um caminho aberto, enquanto um parêntese no início (() indica um caminho fechado.

Os caminhos são exibidos utilizando a primeira sintaxe.

5.7.5. Polígono

Os polígonos são representados por um conjunto de pontos. Os polígonos deveriam provavelmente ser considerados equivalentes aos caminhos fechados, mas são armazenados de forma diferente e possuem um conjunto próprio de rotinas de apoio.

O tipo polygon é especificado utilizando uma das seguintes sintaxes:

( ( x1 , y1 ) , ... , ( xn , yn ) )
  ( x1 , y1 ) , ... , ( xn , yn )  
  ( x1 , y1   , ... ,   xn , yn )  
    x1 , y1   , ... ,   xn , yn    

onde os argumentos são

(x,y)

Os pontos das extremidades dos segmentos de linha formam a fronteira do polígono

Os polígonos são exibidos utilizando a primeira sintaxe.

5.7.6. Círculo

Os círculos são representados por um ponto central e um raio. O tipo circle é especificado utilizando uma das seguintes sintaxes:

< ( x , y ) , r >
( ( x , y ) , r )
  ( x , y ) , r  
    x , y   , r  

onde os argumentos são

(x,y)

centro do círculo

r

raio do círculo

Os círculos são mostrados utilizando a primeira sintaxe