Работа с пространственными данными в запросах

В системе ZuluGIS запросы SQL позволяют манипулировать не только текстовыми и числовыми данными, но и пространственными объектами на карте.

Пространственные объекты имеют тип данных Geometry.

В SQL запросах с пространственными данными могут выполняться такие действия, как:

Для обращения к пространственным объектам слоя используется синтаксис <Название_слоя>.Geometry (если выполняется запрос из одного слоя, название слоя можно опустить).

Для вызова функций работы с пространственным объектом предусмотрены два варианта синтаксиса:

Пример использования разных синтаксисов вызова пространственных функций

Рассмотрим разные синтаксисы на основе функции 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 запросах, могут быть одного из нескольких типов геометрических фигур: