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

Удаление "мусорных линий"

Добавлено: 14 сен 2018, 11:52
krasheninnikov
Добрый день! Я новичок в QGIS, прошу подсказать в следующей ситуации:
Имеется шейп-файл с изолиниями, у каждой своя высотная отметка в атрибутивной базе. Данный шейп получен из панхроматического SRTM. Присутсвуют "мусорные линии" которые нужно удалить. Линия из двух или трех точек, с несущественными данными.
В ручную каждую выделять крайне долго.
Пробую через "выбрать по выражению" с оператором point_n(), не выделяет ничего, length( ) выделяет все.
Так же пробовал через "вектор" -> "проверить геометрию", однако постоянно получаю аварийное закрытие программы.
Чувствую что есть очень простой способ решения моей проблемы, но его я не знаю)

Re: Удаление "мусорных линий"

Добавлено: 15 сен 2018, 15:04
antonv
krasheninnikov, попробуйте так: у вас изолинии наверняка в WGS84, сначала пересохраните их в какую-нибудь проекцию в метрах (только не в 3857), а потом добавьте им через калькулятор поле, заполнив его функцией $length - она даст результат в метрах. Откройте атрибутивную таблицу, отсортируйте записи по этому новому полю по возрастанию. Выделите через shift первые сколько-то записей, с длиной, которой посчитаете "мусорной".

Re: Удаление "мусорных линий"

Добавлено: 17 сен 2018, 21:02
Prince660
Ещё есть вариант написать простой скрипт на питоне, который будет считать точки в линиях и пересохранять в другой файл только линии в которых больше 3х точек, и/или больше какой-то длинны.

Re: Удаление "мусорных линий"

Добавлено: 17 сен 2018, 22:45
gamm
Тогда уж лучше записать длину в поле, и сделать выборку. А еще лучше сгладить растр до нужной детальности.