|
|
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
Добрый день, друзья. Передо мой встала нетривиальная задача реализации "разбиения маршрута на отрезки". Исходные данные - есть массив точек (например 100), которые характерезуют маршрут на плоскости, траектрорию движения. Даны координаты текущего положения (крайняя точка маршрута). Необходимо найти 3 точки, которые, с какой-то долей вероятности, характерезуют переломы траектории. Не знаю, как подробнее объянить, в приложенном изображении все понятнее. Т.е. с минимальной погрешностью нужно разложить маршрут на 3 прямые. Разложить маршрут с помошью функции кусочно-линейной аппроксимации. В какую сторону копать? Ну да, все это нужно будет реализовать, после математического решения. Свои соображения - найти полином 3-его порядка, который будет характеризовать 2 точки перегиба Применить преобразования Хафа - идентифицировать является ли данный отрезок прямой и с каким приближением. http://ru.wikipedia.org/wiki/Преобразование_Хафа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 16:27 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
Мне в этом изображении не нравятся одна вещь. Я верю в две первые точки перелома (если смотреть слева направо), но не понимаю как ты выбрал третью? Там на картинке как минимум еще две потенциальные точки перелома есть, и на первом и на втором отрезках. А вообще, я бы подошел к этой задаче проще. Если у нас исходная линия уже задана отрезками (массив точек), то можно сделать что-то в духе последовательного загрубления: Берем три последовательных точки (это два отрезка), измеряем угол между этими двумя отрезками. Если угол отличается от 180 на величину меньше чем X. То выкидываем среднюю точку. Проходим таким образом по всему пути. Получаем новый массив точек который представляет загрубленный путь с перегибами больше чем начальный X. Если этих перегибов больше требуемых трех - увеличиваем X и повторяем загрубление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 19:58 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
geonewНеобходимо найти 3 точки, которые, с какой-то долей вероятности, характерезуют переломы траектории. Не знаю, как подробнее объянить, в приложенном изображении все понятнее. Боюсь, пока Вы не можете толком сформулировать "что надо найти", задача не имеет шанса быть решена. И дёрганья в сторону "как решать" только усугубят проблемы в "что решать-то". Попробуйте описать реальную решаемую задачу. Почему именно три точки, зачем они нужны... Иначе решение может оказаться очень странным... например, по некоторым соображениям напрашивается фрагмент правильного N-угольника, вписанный в траекторию )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 22:24 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
geonew, да можно все токи перелома точно вычислить без всякой апроксимации если есть координаты точек :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 22:37 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
White OwlА вообще, я бы подошел к этой задаче проще. Если у нас исходная линия уже задана отрезками (массив точек), то можно сделать что-то в духе последовательного загрубления: Берем три последовательных точки (это два отрезка), измеряем угол между этими двумя отрезками. Если угол отличается от 180 на величину меньше чем X. То выкидываем среднюю точку. Проходим таким образом по всему пути. Получаем новый массив точек который представляет загрубленный путь с перегибами больше чем начальный X. Если этих перегибов больше требуемых трех - увеличиваем X и повторяем загрубление. Интересная идея, спасибо. White Owl Мне в этом изображении не нравятся одна вещь. Я верю в две первые точки перелома (если смотреть слева направо), но не понимаю как ты выбрал третью? Там на картинке как минимум еще две потенциальные точки перелома есть, и на первом и на втором отрезках. Да, третья точка выбрана не совсем корректно. Это просто для наглядности. softwarer Попробуйте описать реальную решаемую задачу. Почему именно три точки, зачем они нужны... Иначе решение может оказаться очень странным... например, по некоторым соображениям напрашивается фрагмент правильного N-угольника, вписанный в траекторию )))) Есть алгоритм оповещения о подъезде к заданной токе, путем добавления 3-х дополнительных (подъезжаем именно по этой дороге, с этой стороны). 3 точки долдны максимально близко характерезовать путь подъезда. Алгоритм уже оттестирован и работает кореектно. Сейчас эти 3 точки выбираются вручную. Ну, дальше вы сами понимаете..=) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 12:01 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
geonewЕсть алгоритм оповещения о подъезде к заданной токе, путем добавления 3-х дополнительных (подъезжаем именно по этой дороге, с этой стороны). 3 точки долдны максимально близко характерезовать путь подъезда.А как строится маршрут? Если по Яндекс.Картам (с которых взята иллюстрация), то, имхо, проще периодически перезапрашивать маршрут. Если оставшийся путь уменьшается, значит "подъезд" осуществляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 12:09 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
miksoftА как строится маршрут? Если по Яндекс.Картам (с которых взята иллюстрация), то, имхо, проще периодически перезапрашивать маршрут. Если оставшийся путь уменьшается, значит "подъезд" осуществляется. Нет. Карт в алгоритме нет, в теме они просто для нагрядности. Маршрут не стрится - это gps-трек, точки gps координат, снятые с некоторым интервалом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 12:29 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
geonewэто gps-трек, точки gps координат, снятые с некоторым интервалом.Тогда "подъезжаем именно по этой дороге" не взлетит. Достаточно сдвига на несколько метров, который GPS не почувствует из ограниченной точности, и все - другая дорога, например, во встречном направлении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 12:42 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
miksoftТогда "подъезжаем именно по этой дороге" не взлетит. Достаточно сдвига на несколько метров, который GPS не почувствует из ограниченной точности, и все - другая дорога, например, во встречном направлении. Все это "пройдено". Прекрасно понимаю, что без некой пограшности не обойтись. Но желательно ее минимизировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 12:57 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
geonewmiksoftТогда "подъезжаем именно по этой дороге" не взлетит. Достаточно сдвига на несколько метров, который GPS не почувствует из ограниченной точности, и все - другая дорога, например, во встречном направлении. Все это "пройдено". Прекрасно понимаю, что без некой пограшности не обойтись. Но желательно ее минимизировать.Или я не понял задачу, или вы загоняетесь. Чем не годится просто расстояние до цели? Если оно достаточно долго сокращается и уже достаточно малО - значит подъезжаем. Как я понимаю, точек из будущего все равно нет, т.е. проедет машина нужный поворот мимо или не проедет - не угадаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 13:27 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
miksoftИли я не понял задачу, или вы загоняетесь. Чем не годится просто расстояние до цели? Если оно достаточно долго сокращается и уже достаточно малО - значит подъезжаем. Как я понимаю, точек из будущего все равно нет, т.е. проедет машина нужный поворот мимо или не проедет - не угадаешь. Можем подъезжать с другой стороны. Можем по паралельной дороге, находящейся в 500 метрах от заданной (в этом случае точности gps более чем достаточно). Можем подъезжать по перпедикулярной дороге, а точка будет раполагаться на перекрестке, пересечении 2 дорог (нас интересует подъезд именно по заданнной дороге). Важно движемся ли мы именно по заданной дороге в заданном направлении или нет, а не просто приближаемся или удаляемся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 13:40 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
geonewВажно движемся ли мы именно по заданной дороге в заданном направлении или нет, а не просто приближаемся или удаляемся.Т.е. еще как-то должна быть дана "заданная дорога", т.е. маршрут. Однако:geonewМаршрут не строится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 13:43 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
geonewЕсть алгоритм оповещения о подъезде к заданной токе, путем добавления 3-х дополнительных (подъезжаем именно по этой дороге, с этой стороны). 3 точки долдны максимально близко характерезовать путь подъезда. Тогда точки перегиба не при чём, а вот действительно важный момент - алгоритму на вход должны подаваться все возможные маршруты одновременно (чтобы он мог выбрать для каждого характерные точки, не принадлежащие другим маршрутам). Вообще задача вызывает сомнение (в том смысле, что прикидывая возможные алгоритмы и тестовые случаи для них, начинает казаться, что алгоритм всегда будет возможно обмануть), но в общем путь решения выглядит следующим: взять все маршруты, посчитать точки достаточно резких поворотов, потом объединить близкие поворотные точки и построить соответствующий граф "ближайших улиц" и на нём для каждого маршрута найти "свою" последовательность вершин, отличающую от всех других. Будет ли их именно три... не уверен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 13:53 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
Да, забыл упомянуть - возможно, в роли характерных точек надо будет брать не повороты, а как раз наоборот, середины "прямых". А может - и то, и другое. Это уже надо реализовать варианты и сравнить на практических данных, что лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 13:54 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
miksoft, Положение исходной точки и 3 дополнительные точки, т.е. 4 точки, соединенные прямыми назовем маршрутом подъезда. Наглядно видно на изображении. Маршрута нет изначально. Маршрут подъезда (3 точки перелома) мы должны как раз найти. И, повторно двигаясь в этом месте, имель возможность определить, повторяем ли мы траекторию движения, движемся ли мы по той же дороге в том же направлении, по которому двигались ранее(собрали статистику, нашли путь подъезда, ранее) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 13:59 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
softwarerДа, забыл упомянуть - возможно, в роли характерных точек надо будет брать не повороты, а как раз наоборот, середины "прямых". А может - и то, и другое. Это уже надо реализовать варианты и сравнить на практических данных, что лучше.Алгоритм уже написан, работает хорошо. Основан на точках перегиба. Только устанавливаются они пока вручную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 14:02 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
Можно задаться шириной коридора и тянуть ее от 1-й точки до тех пор пока все точки ложаться в коридор. Если это условие нарушено то поставить точку и начать строить новый прямой коридор и т.д. Вроде тривиально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 15:50 |
|
||
|
Реализация кусочно-линейной апроксимации маршрута подъезда
|
|||
|---|---|---|---|
|
#18+
самое простое: запросить яндекс о названии улицы для каждой координаты, если в массиве одинаковых названий встретится иные наименования в малом количестве, то вероятнее всего это ошибка позиционирования, если же иных наименований много , то это точка поворота правда это не учитывает, что улицы могут идти стык-в-стык (без поворотов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 00:33 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38384749&tid=1341691]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
81ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 411ms |

| 0 / 0 |
