Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маршрут по дорогам на основе GPS трека 
:(
    Опции темы
vlad21
  Дата 4.12.2011, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.10.2007

Репутация: нет
Всего: нет



Дано:
- набор GPS координат (GPS трек)
- дорожный граф

Требуется построить маршрут по дорогам графа максимально приближенный к GPS треку.

Кто нибудь сталкивался с подобной задачей?

Пока думаю оценить близость всех ребер графа к GPS треку и построить маршрут по дорогам исходя из этой оценки. Подозреваю, что данное решение не оптимально. Может быть есть какие нибудь другие решения?
PM MAIL   Вверх
maxdiver
Дата 4.12.2011, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 29.1.2008
Где: Саратов

Репутация: 16
Всего: 18



Я когда-то решал похожую задачку: дана огромная куча GPS-точек (от разных поездок), и надо по ним построить граф дорог (предполагая, что большинство людей ездят по дорогам smile ).

Но ваша задача, по-видимому, гораздо проще. Если у вас GPS-точки хорошо согласуются с дорожной картой, то я бы решал таким образом: для каждой GPS-точки нашёл ближайшее к ней ребро графа, и увеличил бы у этого ребра счётчик на один. В результате для всех дорог, которые проходят вдоль искомого маршрута, эти счётчики получатся большими - так что дальше останется просто выкинуть рёбра с маленькими числами. Либо не выкидывать никакие рёбра, а найти путь от стартовой точки до конечной с максимально возможным минимумом значения счётчика.
PM MAIL WWW ICQ   Вверх
vlad21
Дата 4.12.2011, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.10.2007

Репутация: нет
Всего: нет



2 maxdiver:

Что то подобное и я хочу сделать, но здесь есть проблема - в маршруте могут быть циклы.
PM MAIL   Вверх
ksnk
Дата 4.12.2011, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



Цитата(vlad21 @  4.12.2011,  10:15 Найти цитируемый пост)
- набор GPS координат (GPS трек)

Что такое трек? Последовательный набор точек, каждая последующая в котором, снята ПОСЛЕ предыдущих?
Цитата(vlad21 @  4.12.2011,  10:15 Найти цитируемый пост)
Требуется построить маршрут по дорогам графа максимально приближенный к GPS треку.

Какие проблемы? Не удается выяснить ближайшую дорогу? Если дорог несколько - нужно выбирать все, попадающие в диапазон погрешности GPS и идя по треку, выкидывать те, которые уже не подходят...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
vlad21
Дата 5.12.2011, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.10.2007

Репутация: нет
Всего: нет



Цитата(ksnk @  4.12.2011,  18:48 Найти цитируемый пост)
Что такое трек? Последовательный набор точек, каждая последующая в котором, снята ПОСЛЕ предыдущих?

Да, еще есть время каждой точки.

Цитата(ksnk @  4.12.2011,  18:48 Найти цитируемый пост)
Какие проблемы? Не удается выяснить ближайшую дорогу? Если дорог несколько - нужно выбирать все, попадающие в диапазон погрешности GPS и идя по треку, выкидывать те, которые уже не подходят...

Вообще у меня у самого в голове масса вариантов, но все они, при ближайшем рассмотрении, не работают или работают плохо в той или иной ситуации.
На самом деле задача не так проста, как кажется на первый взгляд. И придумать алгоритм, который работает во всех ситуациях не просто.

Пока у меня вариант решения у меня примерно такой же, как и предложил maxdiver: оценить все ребра дорог по критерию близости к треку и затем построить путь исходя из этого критерия.
Вот только с циклами проблемы: в пути могут быть циклы.  Но, думаю, что проблему с циклами можно решить используя дополнительный параметр - время каждой координаты GPS.

Вообще очень хотелось бы получить советы людей, которые сталкивались с подобной задачей сами или понимают как ее можно решить. Хотелось бы больше конкретики.
PM MAIL   Вверх
maxdiver
Дата 7.12.2011, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 29.1.2008
Где: Саратов

Репутация: 16
Всего: 18



Ну всё же я ещё раз выскажу своё видение алгоритма.

Для каждой GPS-точки мы находим ближайшую к ней дорогу. Тем самым, если мы выпишем GPS-точки в порядке возрастания времени, то мы получим последовательность дорог в порядке их обхода.

Понятно, что главная трудность - в том, что так мы найдём некоторые лишние дороги, потому что когда человек проезжал перекрёсток, ближайшей на какое-то время могла стать другая дорога, чем та, по которой он на самом деле поедет дальше.


Решение мне видится такое: давайте научимся понимать для каждой дороги, действительно ли человек проехал её, или эта дорога - случайная "помеха". В качестве критерия можно взять такой: дорога является "помехой", если есть GPS-точка, близкая к одному её концу, но нет GPS-точки, близкой к другому её концу.

Формально это выглядит так. Пусть мы сейчас рассматриваем i-ую GPS-точку P[i], а ближайшая к ней дорога - это дорога (A,B) (где A - ближайший к точке P[i] конец дороги). Найдём, сколько ещё точек, следующих непосредственно после P[i], тоже находятся ближе всего к дороге (A,B) - пусть это количество равно k. Тогда эти k точек P[i+1]..P[i+k] должны монотонно приближаться к точке B, причём последняя из них - P[i+k] - должна находиться от B на расстоянии не более, скажем, distance(A,B) / 2. Если всё это выполнено, то дорога (A,B) - "хорошая", добавляем её в ответ, и переходим сразу к точке P[i+k+1]. Если не выполнено, то пропускаем эту дорогу, и тоже переходим к точке P[i+k+1].



P.S. Тут ещё многое зависит от того, с какой частотой снимались эти GPS-точки: не получится ли так, что какую-то дорогу в пути человек может "пролететь" одной-двумя GPS-точками. В этом случае алгоритм, конечно, усложняется.
PM MAIL WWW ICQ   Вверх
vlad21
Дата 8.12.2011, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.10.2007

Репутация: нет
Всего: нет



2 maxdiver:
Спасибо, полезный для размышления совет.

Цитата(maxdiver @  7.12.2011,  23:34 Найти цитируемый пост)
P.S. Тут ещё многое зависит от того, с какой частотой снимались эти GPS-точки: не получится ли так, что какую-то дорогу в пути человек может "пролететь" одной-двумя GPS-точками. В этом случае алгоритм, конечно, усложняется. 

Здесь проблем нет, частоту получения точек сами задаем, сейчас - одна точка в секунду. И идем мы пешком.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0725 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.