Да. Хотя проскакивала информация, что дублирующиеся точки отсеиваются на стадии upload, но не уверен.
В JOSM дублирующиеся точки треков появляются если загружать какой-то участок дважды (например перекрывающиеся тайлы).
В Казахстане навалом таких транков, которые в реальности две раздельные встречные полосы, а отрисованы конвертированным треком.
Повторюсь, конечно же этот инструмент не для повседневного использования, но иногда был бы очень удобен.
Смог посмотреть работу OverQuantum только сегодня.
Сразу гладко ничего не бывает. Поставил vb-шную прогу в процесс (для обзорной карты РФ), но на результат работы ситигидовский конвертор ругается:
*** error: router graph containes degenerated edge(s)
Похоже на какой-то косяк в дорожном графе. Надо искать в чем именно.
Ну могу предложить тупо схлопывать рёбра длины меньше X метров. Достану из чулана функцию CollapseJunctions1
Обозначьте значение X. У меня GPSmapedit находит 6 проблем при 2.3 м (3 со скрина + 3 других, на N57.04 - не находит).
“Дорога пересекает сама себя” - это подстава У меня только кольца находятся (оно и логично, более сложную конструкцию функция SaveChain не сделает). Если это тоже надо убрать - нужен критерий. В моей проге можно скорректировать SaveChain, чтобы начальная точка не была равна конечной, тогда последний отрезок будет сохраняться отдельной дорогой. Но, по-моему это криво.
Так, если она стала востребована, я немного поднажму.
По коду я добрался до JoinDirections3, по числу строк где-то ~50%. Но там наткнулся на проблему, т.к. в java идут операции с двойной точностью, то разница нарастает и в один прекрасный момент в vb-шном коде точка попадает в границы, а у меня нет. Именно на этом шаге дальше происходит зацикливание
Зацикливание чего происходит? Всего алгоритма? Разница в 1 точку к такому приводить не должна.
Результат JoinDirections3 в целом зависит даже от порядка расположения точек в массиве Nodes.
Зацикливание идёт на метку lSkipNode2:
Эта getNodeInBboxByCluster выдаёт одни и те же 6 или около того точек, снова и снова. Возможно да, косяк в их первоначальном состоянии. Я пытался сравнивать точки по координатам, но из-за повышенной точности расчётов отличия начинаются в 5-6 знаках и однозначно сопоставить точки не удаётся. Следующей идеей у меня добавить поле с каким нибудь хешем, но пока не реализовал.
Косяк либо в цепочке ClustersChain, либо про записи ClustersFindLastNode/ClustersFindLastCluster. При правильной работе getNodeInBboxByCluster не может второй раз выдать ту же точку.
Округление тут ни при чём, ИМХО.
Округление тут играет злую шутку когда я начинаю сравнивать результаты работы на VB и Java, и одна из точек выпадает у меня из BBox и следовательно дальше идёт рассинхронизация и я не могу сравнивать результаты Хм… что-то я не подумал, надо взять другой какой нибудь файл, там возможно моя ошибка всплывёт в другом месте.