Поиск и удаление пересекающихся полигонов в MapInfo
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 17 дек 2018, 17:33
- Репутация: 0
- Откуда: Россия, Москва
Поиск и удаление пересекающихся полигонов в MapInfo
Уважаемые Форумчане, доброго дня. Облазил кучу форумов и сайтов, но конкретного ответа так и не нашел.
Поставлена задача: Найти и удалить все пересекающиеся полигоны на карте. Примерное кол-во полигонов примерно 80.000. Про стандартную функцию по поиску пересечений знаю, но как это применить для решения данной задачи не приложу ума. Про SQL запросы тоже читал. Но конкретики, и пошаговых действий так и не нашел.
Может быть найдется тот человек, который сможет все объяснить ОТ и ДО доходчиво.
Возможно ли это сделать в MapInfo и если да, то как? Если это делается через SQL запрос, то что и в какой строке нужно прописывать. Заранее Всем спасибо за ответы!
Поставлена задача: Найти и удалить все пересекающиеся полигоны на карте. Примерное кол-во полигонов примерно 80.000. Про стандартную функцию по поиску пересечений знаю, но как это применить для решения данной задачи не приложу ума. Про SQL запросы тоже читал. Но конкретики, и пошаговых действий так и не нашел.
Может быть найдется тот человек, который сможет все объяснить ОТ и ДО доходчиво.
Возможно ли это сделать в MapInfo и если да, то как? Если это делается через SQL запрос, то что и в какой строке нужно прописывать. Заранее Всем спасибо за ответы!
- MI user
- Участник
- Сообщения: 63
- Зарегистрирован: 14 янв 2013, 17:08
- Репутация: 33
- Откуда: Оренбург
Re: Поиск и удаление пересекающихся полигонов в MapInfo
Если нужно использовать SQL-запрос, то:
1) В таблицу добавить колонку для хранения уникального идентификатора. Например, "UID".
2) Заполнить UID не повторяющимися значениями. Меню "Таблица\Обновить колонку", значение ROWID.
3) Сделать копию таблицы. Меню "Таблица\Сохранить копию".
4) Открыть копию.
В итоге должно быть открыто две таблицы, содержащих одинаковые данные. Допустим Tab1 и Tab2.
Тогда SQL-запрос будет такой:
Получим список пересекающихся объектов и их UID.
1) В таблицу добавить колонку для хранения уникального идентификатора. Например, "UID".
2) Заполнить UID не повторяющимися значениями. Меню "Таблица\Обновить колонку", значение ROWID.
3) Сделать копию таблицы. Меню "Таблица\Сохранить копию".
4) Открыть копию.
В итоге должно быть открыто две таблицы, содержащих одинаковые данные. Допустим Tab1 и Tab2.
Тогда SQL-запрос будет такой:
Код: Выделить всё
SELECT
Tab1.UID, Tab1.obj
FROM Tab1, Tab2
WHERE Tab2.obj contains Tab2.obj and Tab1.UID <> Tab2.UID
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 17 дек 2018, 17:33
- Репутация: 0
- Откуда: Россия, Москва
Re: Поиск и удаление пересекающихся полигонов в MapInfo
Понял, а где в форме SQL-pзапроса прописывать весь этот код? В графе "C Условием"?
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 17 дек 2018, 17:33
- Репутация: 0
- Откуда: Россия, Москва
- MI user
- Участник
- Сообщения: 63
- Зарегистрирован: 14 янв 2013, 17:08
- Репутация: 33
- Откуда: Оренбург
Re: Поиск и удаление пересекающихся полигонов в MapInfo
Да, оператор "contains" ищет вхождение центроида первого объекта во второй. Моя оплошность, не правильно понял задачу. Самому как-то надо было найти объекты-дубли, для этого и код.Balaclawa_Crew писал(а): ↑17 дек 2018, 18:10И не направлена ли эта операция на поиск наложений в двух таблицах? Мне нужно найти пересечение полигонов в 1 таблице....
Код записывать в окно SQL.
- MI user
- Участник
- Сообщения: 63
- Зарегистрирован: 14 янв 2013, 17:08
- Репутация: 33
- Откуда: Оренбург
Re: Поиск и удаление пересекающихся полигонов в MapInfo
Пожалуй, вот так можно:
В результате получим таблицу Пересечения, в которой будет указана площадь пересечения объектов. Если площадь больше 0, значит объект с этим UID точно пересекается с каким-то другим объектом.
Вот например:
Код: Выделить всё
Select Area(Overlap(Tab1.Obj, Tab2.Obj), "sq m") "П_Пересечения", Tab1.UID "UID1", Tab2.UID "UID2"
FROM Tab1, Tab2
WHERE (Tab1.obj intersects Tab2.obj) AND (Tab1.UID <> Tab2.UID)
Order By П_Пересечения
Into Пересечения
Вот например:
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 17 дек 2018, 17:33
- Репутация: 0
- Откуда: Россия, Москва
Re: Поиск и удаление пересекающихся полигонов в MapInfo
Это уже интереснее. Только не могу понять, для чего в данном случае Tab2? Как должна выглядеть структура таблиц Tab1 и Tab2?
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 17 дек 2018, 17:33
- Репутация: 0
- Откуда: Россия, Москва
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Поиск и удаление пересекающихся полигонов в MapInfo
Tab1 и Tab2 могут быть одной и той же таблицей
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 21 ноя 2013, 15:16
- Репутация: 14
Re: Поиск и удаление пересекающихся полигонов в MapInfo
Добрый день, а подскажите пожалуйста если нужна выборка не по всем объектам Tab1, а по объектам выборки из этой таблицы с неким условием, например CATEGORY_TXT="Земли населенных пунктов"
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 29 гостей