В системе ZuluGIS запросы SQL позволяют манипулировать не только текстовыми и числовыми данными, но и пространственными объектами на карте.
Пространственные объекты имеют тип данных Geometry
.
В SQL запросах с пространственными данными могут выполняться такие действия, как:
Получение новых пространственных объектов на базе их строкового описания или бинарного представления или получение описания бинарного представления из пространственного объекта («Создание пространственных объектов и преобразование из пространственных объектов»).
Получение информации о пространственных объектах (их типы, размеры, расположение на карте) («Получение информации о пространственных объектах»).
Сравнение между собой пространственных объектов и отбор записей БД, относящихся к данным объектам, на основе результатов сравнения («Сравнение пространственных объектов между собой»).
Геометрические преобразования объектов и их наложение друг на друга («Преобразования пространственных объектов»).
Для обращения к пространственным объектам слоя используется синтаксис
<Название_слоя>.Geometry
(если выполняется запрос из одного слоя,
название слоя можно опустить).
Для вызова функций работы с пространственным объектом предусмотрены два варианта синтаксиса:
<Пространственный_объект>.<Функция>
, где
<Пространственный_объект>
– это пространственный объект, к
которому применяется функция, а <Функция>
– это сама вызываемая
функция. При использовании такого синтаксиса <Пространственный
объект>
используется как первый аргумент функции;
Geometry::<Функция>
, где <Функция>
–
вызываемая функция. Для функций создания пространственных объектов
STGeomFromText и STGeomFromWKB используется только
такой синтаксис.
Пример использования разных синтаксисов вызова пространственных функций
Рассмотрим разные синтаксисы на основе функции STWithin, проверяющей, не располагается ли один объект в другом.
Первый синтаксис
SELECT b.Sys, k.Sys, b.Geometry.STWithin(k.Geometry) from Здания as b, Кварталы as k
Второй синтаксис
SELECT b.Sys, k.Sys, Geometry::STWithin(b.Geometry, k.Geometry) from Здания as b, Кварталы as k
Результаты выполнения этих двух запросов абсолютно одинаковы.
Примечание | |
---|---|
Для простоты во всех описаниях функций в данном разделе далее будет использоваться первый синтаксис. Иными словами, для использования функции по второму синтаксису в список аргументов функции первым пунктом нужно добавить пространственный объект, к которому она применяется (или первый пространственный объект, если функция применяется к нескольким пространственным объектам). Исключение составят только функции STGeomFromText и STGeomFromWKB, для которых допускается использовать только второй синтаксис и у которых не задается пространственный объект в качестве первого аргумента. |
Все пространственные объекты, которыми можно манипулировать в SQL запросах, могут быть одного из нескольких типов геометрических фигур:
Многоугольник (POLYGON). Замкнутая фигура, состоящая из набора вершин, соединенных линиями, и имеющая заливку внутреннего объема. В системе ZuluGIS представителями данного типа являются прямоугольники, окружности, многоугольники и сегменты.
Ломаная (LINESTRING). Набор последовательно соединенных линий. В ZuluGIS представлена ломаными, прямоугольниками, окружностями и дугами.
Точка (POINT). В системе ZuluGIS точками являются символьные объекты.
Набор многоугольников (MULTIPOLYGON). Совокупность из нескольких многоугольников, не обязательно соединенных друг с другом, но являющихся одним объектом.
Набор ломаных (MULTILINESTRING). Совокупность из нескольких ломаных.
Набор точек (MULTIPOINT). Совокупность из нескольких точек.