как найти "висячие" линии
- nadiopt
- Гуру
- Сообщения: 4744
- Зарегистрирован: 29 янв 2009, 13:27
- Репутация: 495
- Ваше звание: хрюкало
- Откуда: Санкт-Петербург
- Контактная информация:
как найти "висячие" линии
имеется слой дорог, в котором некоторые дороги никуда не ведут (изолированы полностью)
вопрос: как средствами QGIS (или GRASS) все их найти (а хорошо бы еще и подсоединить к ближайшей ведущей куда-нибудь дороге. Понятно, что будет не очень корректно, но для быстрого расчета расстояний сгодится).
вопрос: как средствами QGIS (или GRASS) все их найти (а хорошо бы еще и подсоединить к ближайшей ведущей куда-нибудь дороге. Понятно, что будет не очень корректно, но для быстрого расчета расстояний сгодится).
- Вложения
-
- 2019-07-18 15_14_03-_babush1 - QGIS.png (15.76 КБ) 8250 просмотров
ин гроссен фамилен нихт клювен клац клац
- oldbay
- Участник
- Сообщения: 53
- Зарегистрирован: 14 июл 2015, 11:46
- Репутация: 19
- Откуда: Санкт-Петербург
- Контактная информация:
Re: как найти "висячие" линии
Теоретически можно попробовать используя PostGis:
1) Собрать в мультилинии все: находящиеся в контакте, пересекающиеся и соприкосающиеся между собой геометрии.
2) Определить основную сеть дорог (мультилинию) и все остальные - скажем через пересечение с точкой на основной дорожной сети, всё что не попало - это "висящие" линии
3) Чтобы соединить с основной сетью: разобрать основную сеть на точки, пройтись циклом по "висящим" линиям и выделить на них конечные точки "висясих" дорог, найти наименьшее расстояние между такими концами и ближайшей точкой на основной сети дорог, нарисовать линию между этими найденными точками. Скорее всего получится фигня - но ничего лучше в голову не приходит.
Но вот "овчинка стоит выделки" - только если данная задача не разовая, а постоянно необходимая. Так как для всего этого придётся писать функцию на plpgsql или на python с использованием psycopg2 и набором запросов.
1) Собрать в мультилинии все: находящиеся в контакте, пересекающиеся и соприкосающиеся между собой геометрии.
2) Определить основную сеть дорог (мультилинию) и все остальные - скажем через пересечение с точкой на основной дорожной сети, всё что не попало - это "висящие" линии
3) Чтобы соединить с основной сетью: разобрать основную сеть на точки, пройтись циклом по "висящим" линиям и выделить на них конечные точки "висясих" дорог, найти наименьшее расстояние между такими концами и ближайшей точкой на основной сети дорог, нарисовать линию между этими найденными точками. Скорее всего получится фигня - но ничего лучше в голову не приходит.
Но вот "овчинка стоит выделки" - только если данная задача не разовая, а постоянно необходимая. Так как для всего этого придётся писать функцию на plpgsql или на python с использованием psycopg2 и набором запросов.
- nadiopt
- Гуру
- Сообщения: 4744
- Зарегистрирован: 29 янв 2009, 13:27
- Репутация: 495
- Ваше звание: хрюкало
- Откуда: Санкт-Петербург
- Контактная информация:
Re: как найти "висячие" линии
да вот нет, задача разовая - надо собрать граф из ОСМ и лесных дорог, оцифрованных с планшетов:(
ин гроссен фамилен нихт клювен клац клац
- oldbay
- Участник
- Сообщения: 53
- Зарегистрирован: 14 июл 2015, 11:46
- Репутация: 19
- Откуда: Санкт-Петербург
- Контактная информация:
-
- Активный участник
- Сообщения: 211
- Зарегистрирован: 11 авг 2015, 16:13
- Репутация: 45
Re: как найти "висячие" линии
А при помощи топологии вы не пробовали?
Задайте соответствующие условия и они должны выбраться автоматически. Заодно проверите качество пересечений.
Может я и ошибаюсь, но час назад успешно нашел все зазоры между полигонами. Может и для вашего случая правило можно сформулировать.
Удачи!
Задайте соответствующие условия и они должны выбраться автоматически. Заодно проверите качество пересечений.
Может я и ошибаюсь, но час назад успешно нашел все зазоры между полигонами. Может и для вашего случая правило можно сформулировать.
Удачи!
-
- Гуру
- Сообщения: 977
- Зарегистрирован: 27 янв 2009, 22:57
- Репутация: 258
Re: как найти "висячие" линии
Наиболее известный из алгоритмов: depth-first search algorithm
Плагин QGIS Topology Checker Plugin
https://www.youtube.com/watch?v=_GK2ll_TcQo
В GRASS есть grass topology tools.
Я делаю по другому: все дороги рисую в OSM. Там много разных валидаторов для Online-контроля качества.
https://www.keepright.at/report_map.php ... C360%2C390
Универсальный валидатор на основе конвертации в СГ
OSM Inspector
Плагин QGIS Topology Checker Plugin
https://www.youtube.com/watch?v=_GK2ll_TcQo
В GRASS есть grass topology tools.
Я делаю по другому: все дороги рисую в OSM. Там много разных валидаторов для Online-контроля качества.
https://www.keepright.at/report_map.php ... C360%2C390
Универсальный валидатор на основе конвертации в СГ
OSM Inspector
- nadiopt
- Гуру
- Сообщения: 4744
- Зарегистрирован: 29 янв 2009, 13:27
- Репутация: 495
- Ваше звание: хрюкало
- Откуда: Санкт-Петербург
- Контактная информация:
Re: как найти "висячие" линии
спасибо на добром слове! только вектор пока не полностью готов (собираю лесные дороги из 100500 папок по каждому участковому лесничеству). А давать на допиливание не конечный слой мне совесть не позволяет
bim2010 - но ведь ОСМ внимательно относится к происхождению данных. Если бы я сама рисовала, например, по снимкам, я бы конечно сразу рисовала в ОСМ. А тут готовые пропиетарные
ин гроссен фамилен нихт клювен клац клац
-
- Активный участник
- Сообщения: 216
- Зарегистрирован: 21 окт 2009, 13:29
- Репутация: 28
- Откуда: Новосибирск
Re: как найти "висячие" линии
Можно попробовать сделать из сети полигоны с небольшим буфером, потом объединить, потом разделить на отельные области. Кто сам по себе - не имеет связи с сетью.
-
- Гуру
- Сообщения: 977
- Зарегистрирован: 27 янв 2009, 22:57
- Репутация: 258
Re: как найти "висячие" линии
Nadiopt писала:
В OSM удобно наличие выгрузок карт под разные навигаторы. Процесс итерационный: загружаю в гармин и отмечаю все различия.
Сначала я получил разрешение от администрации парка:но ведь ОСМ внимательно относится к происхождению данных. Если бы я сама рисовала, например, по снимкам, я бы конечно сразу рисовала в ОСМ.
Подобные разрешения получил от администрации области и города. Затем отрисовал дороги в OSM по снимкам сверхвысокого разрешения, т.е. геометрия моя. Текущая задача - отредактировать к реальному состоянию т.к. то, что хорошо читаемо на снимках и даже имеет местами асфальтобетонное покрытие в реале нет возможности проехать по разным причинам (нет мостов, шлагбаум на въезде, заборы, заросло, ветровал, и т.п.).На ваше письмо от 06 декабря 2013 об использовании материалов с интернет ресурсов официального портала Национального парка “Смоленское Поозерье” сообщаем, что администрация Национального парка “Смоленское Поозерье” не возражает против использования открытых материалов с сайта http://www.poozerie.ru/ и геопортала http://park.smolensk.rekod.ru/ для обрисовки карт проекта OpenStreetMap.
В OSM удобно наличие выгрузок карт под разные навигаторы. Процесс итерационный: загружаю в гармин и отмечаю все различия.
- nadiopt
- Гуру
- Сообщения: 4744
- Зарегистрирован: 29 янв 2009, 13:27
- Репутация: 495
- Ваше звание: хрюкало
- Откуда: Санкт-Петербург
- Контактная информация:
Re: как найти "висячие" линии
некоторое приближение к решению проблемы - плагин Disconnected Islands. Он ищет изолированные куски и показывает их цветом, а там уж вручную поправить можно
ин гроссен фамилен нихт клювен клац клац
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей