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

Вычисление площадей пересечения

Добавлено: 21 июл 2023, 02:22
Alexey22
Здравствуйте.
Стоит задача сделать запрос по двум слоям, в случае пересечения слоев, вывести площадь пересечения.
В MI это делалось с помощью запроса:
Fields {Слой1.колонка1, Слой1.колонка2, Слой2.колонка1, Слой2.колонка2, area(overlaps(Слой1.obj, Слой2.obj), "sq m")}
Tables {Слой1, Слой2}
Where {(Слой1.obj Intersects Слой2.obj ) and (Слой1.Колонка1 <> Слой2.Колонка2 ) }
Group {}
Order {}
Into {}

В Аксиоме в результате запроса колонка площадей пересечения остается пустой.
Подскажите пожалуйста как в Аксиоме реализована данная возможность?

Re: Вычисление площадей пересечения

Добавлено: 21 июл 2023, 06:51
Александр
Cправка по overlaps расширенного диалекта SQL
help.png
help.png (4.51 КБ) 11050 просмотров
Эта функция возвращает логическое значение накладываются ли два объекта.
Кроме того, эта функция работает с типом геометрии SL_GEO.
Аксиома работает с различными типами геометрии и для некоторых функции, при работе с геометрией TAB (GEO), требуется приведение к геометрии SL_GEO
Это можно сделать с помощью функции FromAxiGeo(). Чтобы наоборот, преобразовать геометрию SL_GEO к типу TAB нужно вызвать ToAxiGeo()

Функция, которая возвращает само пересечение двух объектов Intersections
help1.png
help1.png (3.05 КБ) 11050 просмотров
тут
overlaps.zip
(4.51 КБ) 491 скачивание
две таблицы с пересекающимися объектами:
img0.png
img0.png (20.45 КБ) 11050 просмотров

следующий запрос:
Query.zip
(352 байт) 502 скачивания
строит таблицу с пересекающимися областями и вычисляет их площадь:
img1.png
img1.png (17.44 КБ) 11050 просмотров

Результат запроса:
img2.png
img2.png (23.36 КБ) 11050 просмотров

Re: Вычисление площадей пересечения

Добавлено: 25 июл 2023, 08:49
Александр
Добавлено Администратором:
Предыдущее сообщение было удалено автором.
Ответ остался к удалённому сообщению


По шести цифрам сложно что-то сказать.
Данные Вы не приложили, запросы не привели.
Так что буду предполагать.

Вероятнее всего измерения проводились в долготе/широте. Вероятно речь о площади почти 70 тыс. кв. км.

В этом случае, точность измерения площади низкая и MapInfo вычисляет её на сфере. При этом заметно округляя результаты. Аксиома вычисляет точнее.