Страница 1 из 1

Запрос SQL

Добавлено: 20 фев 2024, 06:18
Matveev
Здравствуйте, подскажите пожалуйста, какую необходимо прописать функцию, чтобы считалась площадь перекрытия одним объектом другого?

Re: Запрос SQL

Добавлено: 20 фев 2024, 07:26
LiSa
Здравствуйте! Уточните, пожалуйста, у Вас 2 полигональные таблицы? Есть объекты, которые накладываются друг на друга. Есть объекты, которые друг на друга на накладываются. Нужно, используя графический оператор, выявить наложение (содержание) и посчитать площадь.

Re: Запрос SQL

Добавлено: 21 фев 2024, 01:30
Matveev
Да, у меня две таблицы, содержащие графику, нужно узнать площадь наложения одного на другой.

Re: Запрос SQL

Добавлено: 21 фев 2024, 11:53
Александр
В примере:
test.zip
(4.15 КБ) 26 скачиваний
две таблицы (one и two), объекты которых накладываются
map.png
map.png (91.12 КБ) 911 просмотров
Чтобы посчитать площадь перекрытия с помощью SQL, требуется выполнить следующее SQL-выражение:

Code: Select all

SELECT SUM(Area(Intersection(FromAxiGeo(One.obj), FromAxiGeo(Two.obj)), 'sq m')) as area FROM One,Two WHERE One.obj Intersects Two.obj
В интерфейсе это выглядит так:
sql.png
sql.png (50.03 КБ) 911 просмотров
Поясню:
  • Функция FromAxiGeo используется для преобразования геометрии из формата Аксиомы в формат SpatiaLite. На вход функции передается геометрический объект Аксиомы.
  • Функция Intersection возвращает геометрический объект, являющийся пересечением двух объектов. Функция работает с форматом геометрии SpatiaLite, поэтому требуется перевод геометрии с помощью FromAxiGeo.
  • Функция Area вычисляет площадь геометрического объекта.
  • Функция SUM суммирует данные.
  • Оператор Intersects возвращает true, если объекты пересекаются.
Данное SQL-выражение сначала находит пересечение геометрических объектов One.obj и Two.obj с помощью функции Intersection и FromAxiGeo. Затем вычисляет площадь этого пересечения в квадратных метрах с помощью функции Area. После этого суммирует все полученные площади пересечений с помощью функции SUM и выводит итоговую сумму в столбце area.

Re: Запрос SQL

Добавлено: 27 фев 2024, 00:18
Matveev
Здравствуйте! Перепробовал все... Нужный результат так и не получил.... Пример, как было в МапИнфо:

Re: Запрос SQL

Добавлено: 27 фев 2024, 12:03
Александр
Если я правильно понимаю, то приблизительно так.
sql1.png
sql1.png (46.83 КБ) 817 просмотров

Re: Запрос SQL

Добавлено: 29 фев 2024, 02:28
Matveev
Спасибо большое, получилось!)