RUS  ENG 

Анализ пересечения объектов разных слоев (SQL)

Дмитрий Емельянов , 8 марта 2023

Анализ пересечения объектов разных слоев (SQL)

SQL-запросы ZuluGIS позволяют не просто определить взаимодействуют объекты в пространстве или нет, но еще и посчитать степень взаимодействия, к примеру какая часть объекта (его площадь или длина) попадает в другой. В конструкциях таких запросов используется оператор Intersection

Для примера создадим 2 слоя, они сохранены в архив карты ZuluGIS (пример для скачивания доступен ниже, архивы карт доступны в ZuluGIS 2021) и на них рассмотрим работу оператора Intersection. В основном (Зеленый) слое нарисовано 3 зеленых квадрата площадью 900 кв.м., в дополнительном (Желтый) 4 желтых многоугольника площадью 200 кв.м. 

Пример 1. Определим площадь желтых фигур, расположенных в зеленых квадратах. 

Запрос будет содержать конструкцию GROUP BY и объект обработки геометрии Intersection

SELECT
g.[name],
sum(g.Geometry.Intersection(y.Geometry).area())
FROM [Зеленый] as g, [Желтый]AS y
group by g.[name]


Пример 2. Запишем в базу данных основного слоя площадь желтых фигур, расположенных в соответствующих зеленых квадратах. 

Для формирования вложенной таблицы площадей запрос так же будет содержать конструкции GROUP BY и объект обработки геометрии Intersection и конструкцию INNER JOIN (внутреннее соединение) для сопоставления результатов вложенного запроса с объектами основного слоя.

update g1 SET g1.[Площадь желтых]= t2.y_sum
from [Зеленый] as g1
INNER JOIN
   select g2.sys,
   sum(g2.Geometry.Intersection(y2.Geometry).area()) as y_sum
   FROM [Зеленый] as g2, [Желтый]AS y2
   group by g2.sys) as t2
on g1.sys = t2.sys


Online справка

 К остальным примерам


Скачать пример (11.13 КБ)


Возврат к списку

Последнее обновление — 09.03.2023 17:25:30