а) Одиночных - могу сделать. А если будет цепочка/“жучок” коротких линков? А если они будут U-образной петлёй (т.е. расстояние между концами - не критерий) ? Zkir, какой N и куда лучше “высыпать” ошибки - в выходной .mp-шник "; ERROR: "-ами или в отдельный файлик простым списком?
Имхо, подбирается методом итераций, чтоб ложных срабатываний немного было.
Образцово-показательный способ - карта со ссылками для JOSM
Если ошибок немного (ну, полсотни, скажем), можно просто список со ссылками. Зная координаты, ссылку несложно сформировать. Хотя б приблизительную.
Сейчас важнее поправить сам алгоритм, таким образом:
Если линк длиннее 500 метров, причем тупо между началом и концом, никуда его не стягивать. Java версию тоже.
Дык, это давно есть уже. Валидатор связности по уровням, в нем такой линк вылезет как изолят.
Это надо на РФ проверять.
Надо было в задачу включать тест рутинга, на той же java. Потому что проверять нормально или нет, надо так - строить маршруты между точками, и смотреть насколько они отличаются, на исходной карте и на упрощенной. Если не отличаются - значит нормально
Ну лады, будет параметром у Load_MP(). Если длина вея превысит предел, флаг _link со всех отрезков вея будет снят (primary_link превратится в primary и т.п.). Потребуется складировать перечень отрезков в массив, так что загрузка _link-ов затормозится.
Позже чем при загрузке файла сделать нельзя.
Ну точнее можно, но это будет анализ не веев, а цепочек отрезков. Если к линку посредине что-то будет подключено, то цепочка окажется короче чем исходный вей.
Закоммитил.
При 1200 метрах, в январском RU-OVRV.roads.mp нашлось 115 линков длиннее. Список.
При запредельном значении - нет отличий при конвертации RU-OVRV.roads.mp
Что есть кольцо?
У меня сейчас стоит детектирование замкнутых дорожных петель короче лимита (1200 метров, вызов CheckShortLoop2() ) и стягивание их как развязок, но оно стоит вторым после маркирования как развязок всех (уцелевших) _link-ов. Если маркирование _link-ов отключить, то детектор петель зацепит дуги развязок и т.п. Нужен более чёткий критерий “кольцо, но не развязка”.
Объединение двухвеек в одновейки делать? Если нет, то кольца стянут в точку место схождения двухвеек. Если да, то останутся не объединённые двухвейные дороги в развязках.
Что значит скрещивание дорог? Любое пересечение, где можно съехать с одной на другую?
Зацепит и зацепит. Наверно я могу и так это потестировать, всем дорогам назначить один тип
Объединение двухвеек в одновейки делать?
Делать.
Сделал. Зрелище душераздирающее. Это с выключенным JoinAcute, с включённым ещё забористее.
Исходник и mp-результат по прямоугольнику Москва-Бологое - тут.
ИМХО, такой хоккей нам не нужен.
Если да, то останутся не объединённые двухвейные дороги в развязках.
Не очень понял почему останутся?
Хм, вроде не остались. Видимо, мои ощущения от старых версий JoinDirections
Любое пересечение, даже без общей ноды.
В этой карте некоторые развязки уже отвалились.
Требуется пересечение и рутинговая нода
А хорошо ли это? Есть места где реально только мост и всё, съехать с одной дороги на другую низзя.
Впрочем, в ближайшее поиск пересечения делать не буду.
Подходящей функции в коде нету, нужно городить новую с учётом всех исключений (попадание точкой на другую дорогу).