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 , y2
onde 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 , y2
onde 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