PostgreSQL: геометрические функции и операторы
Вступление
В PostgreSQL доступны различные геометрические функции, а также операторы. Геометрические типы point, box, lseg, line, path, polygon и circle имеют большой набор собственных вспомогательных функций и операторов, показанных в следующем разделе:
Геометрические операторы
оператор | Описание | пример |
---|---|---|
+ | Перевод | поле '((0,0), (1,1)) "+ точка" (2.0,0)' |
- | Перевод | поле '((0,0), (1,1))' - точка '(2.0,0)' |
* | Масштабирование / поворот | поле '((0,0), (1,1))' * точка '(2.0,0)' |
/ | Масштабирование / поворот | поле '((0,0), (2,2)) "/ точка" (2.0,0) " |
# | Точка или коробка пересечения | '((1, -1), (- 1,1))' # '((1,1), (- 1, -1))' |
# | Количество точек на пути или полигоне | # '((1,0), (0,1), (- 1,0))' |
@ [электронная почта защищена] | Длина или окружность | @ [электронная почта защищена] путь '((0,0), (1,0))' |
@@ | Центр | @@ circle '((0,0), 10)' |
## | Ближайшая точка к первому операнду второго операнда | точка '(0,0)' ## lseg '((2,0), (0,2))' |
<-> | Дистанция между | кружок '((0,0), 1)' <-> кружок "((5,0), 1) ' |
&& | Перекрытия? (Одна общая черта делает это правдой.) | поле '((0,0), (1,1))' && поле '((0,0), (2,2))' |
<< | Строго осталось от? | кружок '((0,0), 1)' << окружность '((5,0), 1)' |
>> | Это строго право? | кружок '((5,0), 1)' >> кружок '((0,0), 1)' |
& < | Не распространяется на право? | поле '((0,0), (1,1))' & <поле '((0,0), (2,2))' |
&> | Не распространяется влево от? | поле '((0,0), (3,3))' &> поле '((0,0), (2,2))' |
<< | | Строго ниже? | поле '((0,0), (3,3))' << | поле '((3,4), (5,5))' |
| >> | Строго выше? | коробка '((3,4), (5,5))' | >> коробка '((0,0), (3,3))' |
И <| | Не распространяется выше? | поле '((0,0), (1,1))' & <| поле '((0,0), (2,2))' |
| &> | Не распространяется ниже? | коробка '((0,0), (3,3))' | &> коробка '((0,0), (2,2))' |
<^ | Ниже (позволяет трогать)? | кружок '((0,0), 1)' <^ кружок '((0,5), 1)' |
> ^ | Выше (позволяет трогать)? | кружок '((0,5), 1)'> ^ кружок '((0,0), 1)' |
? # | Пересекает? | lseg '((-1,0), (1,0))'? # box '((-2, -2), (2,2))' |
? - | Горизонтальный? | ? - lseg '((-1,0), (1,0))' |
? - | Выровнены по горизонтали? | точка '(1,0)'? - точка '(0,0)' |
? | | Вертикально? | ? | lseg '((-1,0), (1,0))' |
? | | Выровнены по вертикали? | точка '(0,1)'? | точка '(0,0)' |
? - | | Перпендикулярно? | lseg '((0,0), (0,1))'? - | lseg '((0,0), (1,0))' |
? || | Параллельны? | lseg '((-1,0), (1,0))'? || lseg '((-1,2), (1,2))' |
@> | Содержит? | кружок '((0,0), 2)' @> точка '(1,1)' |
<@ | Содержится в или на? | точка '(1,1)' <@ окружность '((0,0), 2)' |
~ = | Такой же как? | полигон '((0,0), (1,1))' ~ = полигон '((1,1), (0,0))' |
Геометрические функции
область (объект)
Функция area () используется для создания области объекта.
Тип возврата: двойная точность
Пример:
Код:
SELECT area(box '((0,0),(2,3))');
Пример вывода:
площадь ------ 6 (1 ряд)
Код:
SELECT area(box '((2,3),(-2,-3))');
Пример вывода:
площадь ------ 24 (1 ряд)
Следующее утверждение вычисляет площадь круга.
Код:
SELECT area(circle '((0,0),5)');
Пример вывода:
площадь ------------------ +78,5398163397448 (1 ряд)
центр (объект)
Функция center () используется для создания центра объекта.
Тип возврата: точка
Пример:
Код:
SELECT center(box '((0,0),(3,4))');
Пример вывода:
центр --------- (1.5,2) (1 ряд)
Код:
SELECT center(circle '((2,3),8)');
Пример вывода:
центр -------- (2,3) (1 ряд)
диаметр (окружность)
Функция Diameter () используется для создания диаметра круга.
Тип возврата: двойная точность
Пример:
Код:
SELECT diameter(circle '((2,3),8)');
Пример вывода:
диаметр ---------- 16 (1 ряд)
высота (коробка)
Функция height () используется для создания вертикального размера поля.
Тип возврата: двойная точность
Пример:
Код:
SELECT height(box '((2,3),(5,8))');
Пример вывода:
рост -------- 5 (1 ряд)
IsClosed (путь)
Функция isclosed () используется для проверки того, является ли конкретный путь близким или нет.
Тип возврата: логическое значение
Пример:
Код:
SELECT isclosed(path '((2,3),(1,1),(2,2))');
Пример вывода:
закрыто ---------- T (1 ряд)
IsOpen (путь)
Функция isclosed () используется для проверки, открыт ли конкретный путь или нет.
Тип возврата: логическое значение
Пример:
Код:
SELECT isopen(path '((2,3),(1,1),(2,2))');
Пример вывода:
открыт -------- е (1 ряд)
длина (объект)
Функция length () используется для определения длины объекта.
Тип возврата: двойная точность
Пример:
Код:
SELECT length(path '((2,3),(5,5))');
Пример вывода:
длина ------------------ +7,21110255092798 (1 ряд)
NPOINTS (путь)
Функция npoints () используется для возврата количества точек пути.
Тип возврата: int
Пример:
Код:
SELECT npoints(path '[(1,1),(2,2),(3,3)]');
Пример вывода:
NPOINTS --------- 3 (1 ряд)
NPOINTS (полигон)
Функция npoints () используется для возврата количества точек многоугольника, указанного в аргументе.
Тип возврата: int
Пример:
Код:
SELECT npoints(polygon '((1,1),(0,0),(2,3),(3,5))');
Пример вывода:
NPOINTS --------- 4 (1 ряд)
pclose (путь)
Функция pclose () используется для преобразования пути в close.
Тип возврата: путь
Пример:
Код:
SELECT pclose(path '((2,3),(1,1),(2,2))');
Пример вывода:
pclose --------------------- ((2,3), (1,1), (2,2)) (1 ряд)
POPEN (путь)
Функция popen () используется для преобразования пути в открытый.
Тип возврата: путь
Пример:
Код:
SELECT popen(path '((2,3),(1,1),(2,2))');
Пример вывода:
POPEN --------------------- [(2,3), (1,1), (2,2)] (1 ряд)
радиус (круг)
Функция radius () используется для получения радиуса круга.
Тип возврата: двойная точность
Пример:
Код:
SELECT radius(circle '((2,3),8)');
Пример вывода:
радиус -------- 8 (1 ряд)
ширина (коробка)
Функция width () используется для получения горизонтального размера поля
Тип возврата: двойная точность
Пример:
Код:
SELECT width(box '((2,3),(5,8))');
Пример вывода:
ширина ------- 3 (1 ряд)
Функции преобразования геометрических типов
функция | Тип возврата | Описание | пример |
---|---|---|---|
коробка (круг) | коробка | круг к коробке | коробка (кружок '((0,0), 2.0)') |
коробка (точка, точка) | коробка | указывает на коробку | коробка (точка '(0,0)', точка '(1,1)') |
коробка (полигон) | коробка | полигон в коробку | коробка (многоугольник '((0,0), (1,1), (2,0))') |
круг (коробка) | круг | коробка в круг | кружок (рамка '((0,0), (1,1))') |
круг (точка, двойная точность) | круг | центр и радиус окружности | окружность (точка '(0,0)', 2,0) |
круг (многоугольник) | круг | многоугольник в круг | круг (многоугольник '((0,0), (1,1), (2,0))') |
LSEG (коробка) | LSEG | диагональ прямоугольника к отрезку | lseg (поле '((-1,0), (1,0))') |
lseg (точка, точка) | LSEG | указывает на отрезок | lseg (точка '(-1,0)', точка '(1,0)') |
Путь (полигон) | дорожка | полигон к пути | путь (многоугольник '((0,0), (1,1), (2,0))') |
точка (двойная точность, двойная точность) | точка | построить точку | точка (23,4, -44,5) |
точка (коробка) | точка | центр коробки | точка (поле '((-1,0), (1,0))') |
точка (круг) | точка | центр круга | точка (кружок '((0,0), 2.0)') |
точка (LSEG) | точка | центр отрезка | точка (lseg '((-1,0), (1,0))') |
точка (полигон) | точка | центр многоугольника | точка (многоугольник '((0,0), (1,1), (2,0))') |
многоугольник (коробка) | многоугольник | коробка к 4-х точечному многоугольнику | полигон (поле '((0,0), (1,1))') |
Многоугольник (круг) | многоугольник | окружность до 12-точечного многоугольника | многоугольник (круг '((0,0), 2.0)') |
многоугольник (npts, круг) | многоугольник | окружность до многоугольника точки npts | многоугольник (12, круг '((0,0), 2,0)') |
Многоугольник (путь) | многоугольник | путь к многоугольнику | полигон (путь '((0,0), (1,1), (2,0))') |
Предыдущая: Функции форматирования типов данных
Далее: Функции и операторы JSON
Новый контент: Composer: менеджер зависимостей для PHP , R программирования