Документация по PostgreSQL 9.1.1 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 8. Типы данных | Fast Forward | Next |
Геометрические типы данных представлены двухмерными простанственными объектами. Table 8-20 показывает доступные в PostgreSQL типы данных. Наиболее фундаментальный тип - точка, является основой для всех остальных типов.
Table 8-20. Геометрические типы
Имя | Размер хранения | Представление | Описание |
---|---|---|---|
point | 16 байт | Точка на плоскости | (x,y) |
line | 32 байта | Бесконечная линия (не полностью реализованная) | ((x1,y1),(x2,y2)) |
lseg | 32 байта | Конечный сегмент линии (отрезок) | ((x1,y1),(x2,y2)) |
box | 32 байта | Четырёхугольник | ((x1,y1),(x2,y2)) |
path | 16+16n байт | Закрытый путь (похож на полигон) | ((x1,y1),...) |
path | 16+16n байт | Открытый путь | [(x1,y1),...] |
polygon | 40+16n байт | Полигон (похож на закрытый путь) | ((x1,y1),...) |
circle | 24 байт | Круг | <(x,y),r> (центральнся точка и радиус) |
Для выполнения различных геометрических операций, таких как масштабирование, преобразование, поворот и определение пересечений, доступен богатый набор функций и операторов. Они описываются в Section 9.11.
Точки являются фундаметальным двухмерным строительным блоком для геометрических типов. Значения типа point задаются с помощью одного из следующих синтаксисов:
( x , y ) x , y
где x и y соответствующие координаты в форме чисел с плавающей точкой.
При выводе точек, используется первый синтаксис.
Сегменты линии (lseg) представляются парой точек. Значения типа lseg задаются с помощью любого из следующих синтаксисов:
[ ( x1 , y1 ) , ( x2 , y2 ) ] ( ( x1 , y1 ) , ( x2 , y2 ) ) ( x1 , y1 ) , ( x2 , y2 ) x1 , y1 , x2 , y2
где (x1,y1) и (x2,y2) являются конечными точками сегмента линии.
При выводе сегментов линий используется первый синтаксис.
Боксы представляются парой точек, которые являются противоположными углами бокса. Значения типа box задаются с помощью любого из следующих синтаксисов:
( ( x1 , y1 ) , ( x2 , y2 ) ) ( x1 , y1 ) , ( x2 , y2 ) x1 , y1 , x2 , y2
где (x1,y1) и (x2,y2) являются любыми двумя противоположными углами бокса.
При выводе значений боксов используйется второй синтаксис.
При вводе могут быть указаны любые два противоположных угла, но значения будут переупорядочены как надо и сохранены в порядке: верхний правый и нижний левый углы.
Пути представляются списками, входящих в них точек. Пути могут быть открытыми, где первая и последяя точка списка не соединяются или закрытыми, где первая и последняя точка соединены.
Значения типа path задаются с помощью любого из следующих синтаксисов:
[ ( x1 , y1 ) , ... , ( xn , yn ) ] ( ( x1 , y1 ) , ... , ( xn , yn ) ) ( x1 , y1 ) , ... , ( xn , yn ) ( x1 , y1 , ... , xn , yn ) x1 , y1 , ... , xn , yn
где точки являются конечными точками сегментов линий, из которых состоит путь. Квадратные скобки ([]) показывают, что это открытый путь, а круглые скобки (()), что это закрытый путь. Когда внешние скобки опущены, как в третьм и четвёртом синтаксисе, это означает закрытый путь.
Вывод значений этого типа осуществляется в виде первого или второго синтаксиса как будет наиболее подходящим.
Полигоны представляются списками точек (вершины полигона). Полигоны очень похожи на закрытые пути, но хранятся по другому и имеют свой собственный набор поддерживаемых подпрограмм.
Значения типа polygon задаются с помощью любого из следующих синтаксисов:
( ( x1 , y1 ) , ... , ( xn , yn ) ) ( x1 , y1 ) , ... , ( xn , yn ) ( x1 , y1 , ... , xn , yn ) x1 , y1 , ... , xn , yn
где точки являются конечными точками сегментов линий, которые образовывают область полигона.
При выводе значений этого типа используется первый синтаксис.
Круги представляются точкой, которая является центром круга и радиусом. Значения типа circle задаются с помощью любого из следующих синтаксисов:
< ( x , y ) , r > ( ( x , y ) , r ) ( x , y ) , r x , y , r
где точка (x,y) является центром круга, а r радиусом.
При выводе значений этого типа используйется первый синтаксис.