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étricos | Armazenamento | Representação | Descrição |
|---|---|---|---|
| point | 16 bytes | (x,y) | Ponto no espaço |
| line | 32 bytes | ((x1,y1),(x2,y2)) | Linha infinita (não implementado completamente) |
| lseg | 32 bytes | ((x1,y1),(x2,y2)) | Segmento finito de linha |
| box | 32 bytes | ((x1,y1),(x2,y2)) | caixa retangular |
| path | 16+16n bytes | ((x1,y1),...) | Caminho fechado (similar ao polígono) |
| path | 16+16n bytes | [(x1,y1),...] | Caminho aberto |
| polygon | 40+16n bytes | ((x1,y1),...) | Polígono (similar ao caminho fechado) |
| circle | 24 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.
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
a coordenada no eixo x como número de ponto flutuante
a coordenada no eixo y como número de ponto flutuante
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 , y2onde os argumentos são
os pontos das extremidades do segmento de linha
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 , y2onde os argumentos são
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.
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
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.
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
Os pontos das extremidades dos segmentos de linha formam a fronteira do polígono
Os polígonos são exibidos utilizando a primeira sintaxe.
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
centro do círculo
raio do círculo
Os círculos são mostrados utilizando a primeira sintaxe