Os tipos de dado geométricos representam objetos espaciais bidimensionais. A Tabela 8-16 mostra os tipos geométricos disponíveis no PostgreSQL. O tipo mais fundamental, o ponto, forma a base para todos os outros tipos.
Tabela 8-16. Tipos geométricos
Nome | Tamanho de Armazenamento | Descrição | Representação |
---|---|---|---|
point | 16 bytes | Ponto no plano | (x,y) |
line | 32 bytes | Linha infinita (não totalmente implementado) | ((x1,y1),(x2,y2)) |
lseg | 32 bytes | Segmento de linha finito | ((x1,y1),(x2,y2)) |
box | 32 bytes | Caixa retangular | ((x1,y1),(x2,y2)) |
path | 16+16n bytes | Caminho fechado (semelhante ao polígono) | ((x1,y1),...) |
path | 16+16n bytes | Caminho aberto | [(x1,y1),...] |
polygon | 40+16n bytes | Polígono (semelhante ao caminho fechado) | ((x1,y1),...) |
circle | 24 bytes | Círculo | <(x,y),r> (centro e raio) |
Está disponível um amplo conjunto de funções e operadores para realizar várias operações geométricas, como escala, translação, rotação e determinar interseções, conforme explicadas na Seção 9.10.
Os pontos são os blocos de construção bidimensionais fundamentais para os tipos geométricos. Os valores do tipo point são especificados utilizando a seguinte sintaxe:
( x , y ) x , y
onde x e y são as respectivas coordenadas na forma de números de ponto flutuante.
Os segmentos de linha (lseg) são representados por pares de pontos. Os valores do tipo lseg são especificado utilizando a seguinte sintaxe:
( ( x1 , y1 ) , ( x2 , y2 ) ) ( x1 , y1 ) , ( x2 , y2 ) x1 , y1 , x2 , y2
onde (x1,y1) e (x2,y2) 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. Os valores do tipo box são especificados utilizando a seguinte sintaxe:
( ( x1 , y1 ) , ( x2 , y2 ) ) ( x1 , y1 ) , ( x2 , y2 ) x1 , y1 , x2 , y2
onde (x1,y1) e (x2,y2) são quaisquer vértices opostos da caixa.
As caixas são mostradas utilizando 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. Podem ser especificados outros vértices da caixa, mas os vértices esquerdo inferior e direito superior são determinados a partir da entrada e armazenados.
Os caminhos são representados por listas de pontos conectados. Os caminhos podem ser abertos, onde o primeiro e o último ponto da lista não são considerados conectados, e fechados, onde o primeiro e o último ponto são considerados conectados.
Os valores do tipo path são especificados utilizando a seguinte sintaxe:
( ( x1 , y1 ) , ... , ( xn , yn ) ) [ ( x1 , y1 ) , ... , ( xn , yn ) ] ( x1 , y1 ) , ... , ( xn , yn ) ( x1 , y1 , ... , xn , yn ) x1 , y1 , ... , xn , yn
onde os pontos são os pontos das extremidades dos segmentos de linha que compõem o caminho. Os colchetes ([]) indicam um caminho aberto, enquanto os parênteses (()) indicam um caminho fechado.
Os caminhos são mostrados utilizando a primeira sintaxe.
Os polígonos são representados por uma lista de pontos (os vértices do polígono). Provavelmente os polígonos deveriam ser considerados equivalentes aos caminhos fechados, mas são armazenados de forma diferente e possuem um conjunto próprio de rotinas de suporte.
Os valores do tipo polygon são especificados utilizando a seguinte sintaxe:
( ( x1 , y1 ) , ... , ( xn , yn ) ) ( x1 , y1 ) , ... , ( xn , yn ) ( x1 , y1 , ... , xn , yn ) x1 , y1 , ... , xn , yn
onde os pontos são os pontos das extremidades dos segmentos de linha compondo a fronteira do polígono.
Os polígonos são mostrados utilizando a primeira sintaxe.
Os círculos são representados por um ponto central e um raio. Os valores do tipo circle são especificado utilizando a seguinte sintaxe:
< ( x , y ) , r > ( ( x , y ) , r ) ( x , y ) , r x , y , r
onde (x,y) é o centro e r é o raio do círculo.
Os círculos são mostrados utilizando a primeira sintaxe.