Работаю в MapInfo. У меня есть две карты (допустим, Карта1 и Карта2), каждая из которых состоит из полигонов (объектов). Как найти площадь пересечения каждого объекта Карты1 с каждым объектом Карты2?
Для решения данного вопроса я попытался воспользоваться следующим SQL-запросом:
SELECT sum(AreaOverlap(Карта1.obj, Карта2.obj))
WHERE Карта1.obj Contains Part Карта2.obj
Казалось бы, вопрос решен. Но нет: в ответе получается слишком маленькая площадь пересечения 124030,38. Хотя у Карт площадь по 8 миллионов каждая и они графически явно пересекаются во многих местах.
В чем ошибка в моем запросе? Я действительно не понимаю механику функции или как объекты взаимодействуют между собой при сравнении.
Прилагаю скриншоты запроса, Карты1, Карты2
MapInfo Пересечение объектов
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 02 апр 2019, 14:45
- Репутация: 0
- Откуда: Москва
MapInfo Пересечение объектов
- Вложения
-
- 3.jpg (69.97 КБ) 2501 просмотр
-
- 2.jpg (65.28 КБ) 2501 просмотр
-
- Карта2
- 3.jpg (69.97 КБ) 2501 просмотр
-
- Карта1
- 2.jpg (65.28 КБ) 2501 просмотр
-
- Интересующийся
- Сообщения: 42
- Зарегистрирован: 02 ноя 2011, 09:11
- Репутация: 23
Re: MapInfo Пересечение объектов
Попробуйте использовать Intersects вместо Contains Part и группировку по идентификаторам объектов (предположим, Карта1.ID и Карта2.ID). Ну, и единицы площади указать.
Что-то типа такого:
SELECT sum(Area(Overlap(Карта1.obj, Карта2.obj), "sq km"), Карта1.ID, Карта2.ID
from Карта1, Карта2
WHERE Карта1.obj Intersects Карта2.obj
Group by Карта1.ID, Карта2.ID
into selection
Что-то типа такого:
SELECT sum(Area(Overlap(Карта1.obj, Карта2.obj), "sq km"), Карта1.ID, Карта2.ID
from Карта1, Карта2
WHERE Карта1.obj Intersects Карта2.obj
Group by Карта1.ID, Карта2.ID
into selection
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей