Запрос SQL

Вопросы связанные с работой ГИС Аксиома
Ответить
Аватара пользователя
Matveev
Сообщения: 15
Зарегистрирован: 19 фев 2024, 03:18

Запрос SQL

Сообщение Matveev » 20 фев 2024, 06:18

Здравствуйте, подскажите пожалуйста, какую необходимо прописать функцию, чтобы считалась площадь перекрытия одним объектом другого?
Аватара пользователя
LiSa
Сообщения: 49
Зарегистрирован: 20 сен 2023, 14:19

Re: Запрос SQL

Сообщение LiSa » 20 фев 2024, 07:26

Здравствуйте! Уточните, пожалуйста, у Вас 2 полигональные таблицы? Есть объекты, которые накладываются друг на друга. Есть объекты, которые друг на друга на накладываются. Нужно, используя графический оператор, выявить наложение (содержание) и посчитать площадь.
Аватара пользователя
Matveev
Сообщения: 15
Зарегистрирован: 19 фев 2024, 03:18

Re: Запрос SQL

Сообщение Matveev » 21 фев 2024, 01:30

Да, у меня две таблицы, содержащие графику, нужно узнать площадь наложения одного на другой.
Аватара пользователя
Александр
Сообщения: 424
Зарегистрирован: 18 апр 2019, 08:21

Re: Запрос SQL

Сообщение Александр » 21 фев 2024, 11:53

В примере:
test.zip
(4.15 КБ) 23 скачивания
две таблицы (one и two), объекты которых накладываются
map.png
map.png (91.12 КБ) 393 просмотра
Чтобы посчитать площадь перекрытия с помощью 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 КБ) 393 просмотра
Поясню:
  • Функция FromAxiGeo используется для преобразования геометрии из формата Аксиомы в формат SpatiaLite. На вход функции передается геометрический объект Аксиомы.
  • Функция Intersection возвращает геометрический объект, являющийся пересечением двух объектов. Функция работает с форматом геометрии SpatiaLite, поэтому требуется перевод геометрии с помощью FromAxiGeo.
  • Функция Area вычисляет площадь геометрического объекта.
  • Функция SUM суммирует данные.
  • Оператор Intersects возвращает true, если объекты пересекаются.
Данное SQL-выражение сначала находит пересечение геометрических объектов One.obj и Two.obj с помощью функции Intersection и FromAxiGeo. Затем вычисляет площадь этого пересечения в квадратных метрах с помощью функции Area. После этого суммирует все полученные площади пересечений с помощью функции SUM и выводит итоговую сумму в столбце area.
Аватара пользователя
Matveev
Сообщения: 15
Зарегистрирован: 19 фев 2024, 03:18

Re: Запрос SQL

Сообщение Matveev » 27 фев 2024, 00:18

Здравствуйте! Перепробовал все... Нужный результат так и не получил.... Пример, как было в МапИнфо:
Вложения
так было в МапИнфо, выдавал площади общие, из таблицы Для слияния, и площади пересечения объектов из таблицы Для слияния с таблицей soil map
так было в МапИнфо, выдавал площади общие, из таблицы Для слияния, и площади пересечения объектов из таблицы Для слияния с таблицей soil map
запрос пример.jpeg (199.39 КБ) 321 просмотр
Аватара пользователя
Александр
Сообщения: 424
Зарегистрирован: 18 апр 2019, 08:21

Re: Запрос SQL

Сообщение Александр » 27 фев 2024, 12:03

Если я правильно понимаю, то приблизительно так.
sql1.png
sql1.png (46.83 КБ) 299 просмотров
Аватара пользователя
Matveev
Сообщения: 15
Зарегистрирован: 19 фев 2024, 03:18

Re: Запрос SQL

Сообщение Matveev » 29 фев 2024, 02:28

Спасибо большое, получилось!)
Ответить