Каталог Данных Каталог Организаций Каталог Оборудования Каталог Программного Обеспечения Написать письмо Наши координаты Главная страница
RSS Реклама Карта сайта Архив новостей Форумы Опросы 
Здравствуйте! Ваш уровень доступа: Гостевой
Навигатор: Новости/
 
Rus/Eng
Поиск по сайту    
 ГИС-Ассоциация
 Аналитика и обзоры
 Нормы и право
 Конкурсы
 Дискуссии
 Наши авторы
 Публикации
 Календарь
 Биржа труда
 Словарь терминов
Проект поддерживают  



Авторизация    
Логин
Пароль

Забыли пароль?
Проблемы с авторизацией?
Зарегистрироваться




width=1 Rambler_Top100

наша статистика
статистика по mail.ru
статистика по rambler.ru

Реклама на сайте
Новостные ленты

ООО «Политерм». Анализ пересечения объектов разных слоев (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 КБ)

Компания «Политерм» входит в группу «Проект поддерживают» портала Gisa.ru


Разделы, к которым прикреплен документ:
Страны и регионы / Россия
Тематич. разделы / Картография, ГИС
Тематич. разделы / Инженерные коммуникации
Организации
Прогр.обесп. (ПО)
Новости
 
Комментарии (0) Для того, чтобы оставить комментарий Вам необходимо авторизоваться или зарегистрироваться




ОБСУДИТЬ В ФОРУМЕ
Оставлено сообщений: 0


Источник: https://www.politerm.com/samples/zulugis/sql/sql-intersection/ 21:34:50 10.03 2023   

Версия для печати  
    Анонсы партнеров

    Наши предложения
  Новости Gisa.ru в Телеграм
  Реклама на сайте
  Зарегистрироваться и получать новости по e-mail
  Конференции ГИС-Ассоциации
  Журнал "Управление развитием территории"
  Контакты

Портал Gisa.ru использует файлы cookie для повышения удобства пользователей и обеспечения работоспособности сайта и сервисов. Оставаясь на сайте Gisa.ru вы подтверждаете свое согласие на использование файлов cookie. Если вы не хотите использовать файлы cookie, то можете изменить настройки браузера. Пользовательское соглашение. Политика конфиденциальности.
© ГИС-Ассоциация. 2002-2022 гг.
Time: 0.036337852478027 sec, Question: 71