Геометрические типы данных point, box,
lseg, line, path,
polygon, и circle обладают обширным набором встроенных функций и операторов, представленных в Таблица 2.6.36, Таблица 2.6.37, и Таблица 2.6.38.
Таблица 2.6.36. Геометрические операторы
Оператор Описание Примеры |
|---|
Прибавляет координаты второго аргумента
|
Выполняет конкатенацию двух незамкнутых путей (возвращает NULL, если хотя бы один из путей является замкнутым).
|
Вычитает координаты второго аргумента
|
Умножает каждую точку первого аргумента на второй аргумент
|
Данная операция делит координаты каждой точки первого аргумента на значение второго аргумента
|
Вычисление полной длины.
Доступно для
|
Вычисление центральной точки.
Доступно для
|
Возвращение количества точек.
Доступно для
|
Вычисление точки пересечения; возвращает NULL, если точка пересечения отсутствует.
Доступно для
|
Вычисление пересечения двух прямоугольников (box); возвращает NULL, если пересечение отсутствует.
|
Поиск на втором объекте точки, ближайшей к первому объекту.
Доступно для следующих пар типов:
(
|
Вычисляет расстояние между объектами.
Доступно для всех семи геометрических типов, для всех комбинаций
из
|
Содержит ли первый объект второй?
Доступно для следующих пар типов:
(
|
Находится ли первый объект внутри второго или на его границе?
Доступно для следующих пар типов:
(
|
Пересекаются ли данные объекты? (Для истинности выражения достаточно наличия одной общей точки.)
Доступно для
|
Находится ли первый объект строго слева от второго?
Доступно для
|
Находится ли первый объект строго справа от второго?
Доступно для
|
Не выходит ли первый объект за правую границу второго?
Доступно для
|
Не выходит ли первый объект за левую границу второго?
Доступно для
|
Находится ли первый объект строго ниже второго?
Доступно для
|
Находится ли первый объект строго выше второго?
Доступно для
|
Не выходит ли первый объект за верхнюю границу второго?
Доступно для
|
Не выходит ли первый объект за нижнюю границу второго?
Доступно для
|
Расположен ли первый объект ниже второго (допускается касание границ)?
|
Расположен ли первый объект выше второго (допускается касание границ)?
|
Пересекаются ли данные объекты?
Доступно для следующих пар типов:
(
|
Является ли линия горизонтальной?
|
Выровнены ли точки по горизонтали (имеют ли одинаковую координату y)?
|
Является ли линия вертикальной?
|
Выровнены ли точки по вертикали (имеют ли одинаковую координату x)?
|
Являются ли линии перпендикулярными?
|
Являются ли линии параллельными?
|
Являются ли данные объекты идентичными?
Доступно для
|
[a] «Вращение» объекта типа box с помощью данных операторов перемещает только его угловые точки: прямоугольник по-прежнему считается имеющим стороны, параллельные осям. Следовательно, для типа box исходный размер не сохраняется, в отличие от выполнения истинного поворота. |
Обратите внимание, что «такой же, как и» оператор, ~=,
представляет собой стандартное понятие равенства для point,
box, polygon, и circle типов данных.
Для некоторых геометрических типов также предусмотрен = оператор, однако
= он выполняет сравнение на равенство только по площади .
Другие скалярные операторы сравнения (<= и так далее), если они доступны для данных типов, аналогичным образом сравнивают площади.
До версии Digital Q.DataBase 14, операторы сравнения «строго ниже» и «строго выше» для типа point point
<<| point и point
|>> point соответственно назывались <^ и >^. Данные
имена по-прежнему доступны, однако они признаны устаревшими и в будущем будут
удалены.
Таблица 2.6.37. Геометрические функции
Таблица 2.6.38. Функции преобразования геометрических типов
Доступ к двум числовым компонентам значения типа point point
можно осуществлять так, как если бы точка была массивом с индексами 0 и 1. Например, если
t.p является point столбцом, то запрос
SELECT p[0] FROM t извлекает координату X, а команда
UPDATE t SET p[1] = ... изменяет координату Y.
Аналогичным образом значение типа box или lseg может рассматриваться
как массив из двух point значений.