Геометрические типы

8.8. Геометрические типы

Геометрические типы данных представлены двухмерными простанственными объектами. Table 8-20 показывает доступные в PostgreSQL типы данных. Наиболее фундаментальный тип - точка, является основой для всех остальных типов.

Table 8-20. Геометрические типы

ИмяРазмер храненияПредставлениеОписание
point16 байтТочка на плоскости(x,y)
line32 байтаБесконечная линия (не полностью реализованная)((x1,y1),(x2,y2))
lseg32 байтаКонечный сегмент линии (отрезок)((x1,y1),(x2,y2))
box32 байтаЧетырёхугольник((x1,y1),(x2,y2))
path16+16n байтЗакрытый путь (похож на полигон)((x1,y1),...)
path16+16n байтОткрытый путь[(x1,y1),...]
polygon40+16n байтПолигон (похож на закрытый путь)((x1,y1),...)
circle24 байтКруг<(x,y),r> (центральнся точка и радиус)

Для выполнения различных геометрических операций, таких как масштабирование, преобразование, поворот и определение пересечений, доступен богатый набор функций и операторов. Они описываются в Section 9.11.

8.8.1. Точки

Точки являются фундаметальным двухмерным строительным блоком для геометрических типов. Значения типа point задаются с помощью одного из следующих синтаксисов:

( x , y )
  x , y

где x и y соответствующие координаты в форме чисел с плавающей точкой.

При выводе точек, используется первый синтаксис.

8.8.2. Сегменты линий

Сегменты линии (lseg) представляются парой точек. Значения типа lseg задаются с помощью любого из следующих синтаксисов:

[ ( x1 , y1 ) , ( x2 , y2 ) ]
( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )
    x1 , y1   ,   x2 , y2

где (x1,y1) и (x2,y2) являются конечными точками сегмента линии.

При выводе сегментов линий используется первый синтаксис.

8.8.3. Боксы

Боксы представляются парой точек, которые являются противоположными углами бокса. Значения типа box задаются с помощью любого из следующих синтаксисов:

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

где (x1,y1) и (x2,y2) являются любыми двумя противоположными углами бокса.

При выводе значений боксов используйется второй синтаксис.

При вводе могут быть указаны любые два противоположных угла, но значения будут переупорядочены как надо и сохранены в порядке: верхний правый и нижний левый углы.

8.8.4. Пути

Пути представляются списками, входящих в них точек. Пути могут быть открытыми, где первая и последяя точка списка не соединяются или закрытыми, где первая и последняя точка соединены.

Значения типа path задаются с помощью любого из следующих синтаксисов:

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

где точки являются конечными точками сегментов линий, из которых состоит путь. Квадратные скобки ([]) показывают, что это открытый путь, а круглые скобки (()), что это закрытый путь. Когда внешние скобки опущены, как в третьм и четвёртом синтаксисе, это означает закрытый путь.

Вывод значений этого типа осуществляется в виде первого или второго синтаксиса как будет наиболее подходящим.

8.8.5. Полигоны

Полигоны представляются списками точек (вершины полигона). Полигоны очень похожи на закрытые пути, но хранятся по другому и имеют свой собственный набор поддерживаемых подпрограмм.

Значения типа polygon задаются с помощью любого из следующих синтаксисов:

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

где точки являются конечными точками сегментов линий, которые образовывают область полигона.

При выводе значений этого типа используется первый синтаксис.

8.8.6. Круги

Круги представляются точкой, которая является центром круга и радиусом. Значения типа circle задаются с помощью любого из следующих синтаксисов:

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

где точка (x,y) является центром круга, а r радиусом.

При выводе значений этого типа используйется первый синтаксис.

Back to top

(С) Виктор Вислобоков, 2008-2023