Выбрать линии у которых нет пересечений.

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Anik
Новоприбывший
Сообщения: 6
Зарегистрирован: 22 июн 2017, 13:58
Репутация: 0

Выбрать линии у которых нет пересечений.

Сообщение Anik » 09 мар 2023, 12:03

Всем добрый день!
Подскажите, пожалуйста!
Даны линии, у некоторых есть дубликаты, у некоторых нет. Моя задача удалить те линии, у которых нет дублей. Как их выбрать в QGIS? Именно те, у которых нет дублей, чтобы их затем удалить.

Константин Силкин
Завсегдатай
Сообщения: 420
Зарегистрирован: 21 мар 2012, 07:37
Репутация: 67
Откуда: Воронеж

Re: Выбрать линии у которых нет пересечений.

Сообщение Константин Силкин » 09 мар 2023, 12:43

Здравствуйте? Можно пойти от обратного. Выбрать те, которые с кем-то пересекаются, а затем инвертировать выделение

Anik
Новоприбывший
Сообщения: 6
Зарегистрирован: 22 июн 2017, 13:58
Репутация: 0

Re: Выбрать линии у которых нет пересечений.

Сообщение Anik » 09 мар 2023, 13:00

я даже их выбрать не могу, не нахожу инструмент(( пересечение в одном слое не ищет(

Константин Силкин
Завсегдатай
Сообщения: 420
Зарегистрирован: 21 мар 2012, 07:37
Репутация: 67
Откуда: Воронеж

Re: Выбрать линии у которых нет пересечений.

Сообщение Константин Силкин » 09 мар 2023, 13:12

Я бы написал скрипт (мне проще в R, кому-то в Python) с перебором всех объектов и так выявил кто с кем делит общие координаты или пересекается. Их бы скопировал в отдельный файл, а остальные пропустил

crashkkm
Активный участник
Сообщения: 139
Зарегистрирован: 17 окт 2016, 16:37
Репутация: 14

Re: Выбрать линии у которых нет пересечений.

Сообщение crashkkm » 09 мар 2023, 15:54

Освоить R или питон чтобы потом писать скрипт проще чем запустить уже готовые инструменты проверки топологии?
https://pro.arcgis.com/ru/pro-app/lates ... atures.htm

Anik
Новоприбывший
Сообщения: 6
Зарегистрирован: 22 июн 2017, 13:58
Репутация: 0

Re: Выбрать линии у которых нет пересечений.

Сообщение Anik » 09 мар 2023, 15:57

crashkkm, про топологию я знаю, и нахожу эти пересечения с помощью топологии, но он их только подсвечивает, а мне нужно в таблице атрибутов исходного шейпа их отобразить/выделить, чтобы дальше с ними производить манипуляции.

drrrrr
Участник
Сообщения: 86
Зарегистрирован: 31 янв 2012, 10:51
Репутация: 51

Re: Выбрать линии у которых нет пересечений.

Сообщение drrrrr » 09 мар 2023, 17:39

Если речь о дубликатах, не о пересечениях, то создайте виртуальный слой по SQL запросу

Код: Выделить всё

select *, count(*) cnt  from test group by test.geometry
Результирующий слой будет содержать поле cnt - счетчик дубликатов геометрии текущего объекта.
Диалог создания виртуального слоя:
20230309_173741.png
20230309_173741.png (82.16 КБ) 1559 просмотров

gamm
Гуру
Сообщения: 4057
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Выбрать линии у которых нет пересечений.

Сообщение gamm » 09 мар 2023, 18:44

drrrrr писал(а):
09 мар 2023, 17:39
group by test.geometry
интересно, а группировка идет потекстовому представлению (wkt?)?

crashkkm
Активный участник
Сообщения: 139
Зарегистрирован: 17 окт 2016, 16:37
Репутация: 14

Re: Выбрать линии у которых нет пересечений.

Сообщение crashkkm » 10 мар 2023, 04:48

Anik писал(а):
09 мар 2023, 15:57
crashkkm, про топологию я знаю, и нахожу эти пересечения с помощью топологии, но он их только подсвечивает, а мне нужно в таблице атрибутов исходного шейпа их отобразить/выделить, чтобы дальше с ними производить манипуляции.
не знаю про какую топологию вы пишете, ту, про которую пишу я именно это все и можно делать. Задавать нужные правила, подсвечивать, видеть все ошибки в атрибутивной таблице, видеть зоны исправления.

AlexRomantsov
Завсегдатай
Сообщения: 316
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 137
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Выбрать линии у которых нет пересечений.

Сообщение AlexRomantsov » 10 мар 2023, 12:06

Еще вариант.
Меню - Слой - Открыть таблицу атрибутов.
В ней, кнопка Открыть калькулятор полей.
В диалоге - Создать новое поле, Имя, Тип - текст.
В вкладке Выражение вызовем функцию, проверяющую, совпадает ли пространственно текущий объект хотя бы с одним другим:

overlay_equals( 'слой')

Не забудьте выбрать вместо 'слой' в навигаторе (справа от выражения) Слои карты - Ваш слой.
Ок.
После выполнения, в таблице появится поле с заданным именем, в этом поле TRUE - двойной (тройной) объект, FALSE - уникальный объект без дублей.
Ну и осталось отсортировать по полю, выделить в таблице нужное, удалить/классифицировать/скопировать...

Anik
Новоприбывший
Сообщения: 6
Зарегистрирован: 22 июн 2017, 13:58
Репутация: 0

Re: Выбрать линии у которых нет пересечений.

Сообщение Anik » 10 мар 2023, 15:10

AlexRomantsov, спасибо, но что-то он всем линиям одно задал, хотя есть линии и без пересечений.

AlexRomantsov
Завсегдатай
Сообщения: 316
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 137
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Выбрать линии у которых нет пересечений.

Сообщение AlexRomantsov » 13 мар 2023, 05:46

А "что то одно"- false? А ваши двойные линии - точно координатные дубликаты? или просто похожие?

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей