Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > GPS Навигация по городу


Автор: Opik 15.5.2006, 12:32
Задача:
Имея место нахождения(через GPS) и отметив пункт назначения, нужно по карте города построить маршрут движения до этой точки.

Честно говоря не знаю даже с чего начать. Может посоветуете? 

Автор: ALKS 15.5.2006, 12:34

ой, да что сложного-то? smile задача комивояжора...

P.S. простите за оффтоп... но я в восторге от этого топика... 

Автор: Opik 15.5.2006, 12:48
ALKS, 
сказал бы лучше по теме. 

Автор: batigoal 15.5.2006, 12:55
Opik, так тебя интересует алгоритм, или Java-реализация?

Какие у тебя есть исходные данные, в каком виде? 

Автор: powerOn 15.5.2006, 12:56
http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D1%91%D1%80%D0%B0

Эта тема скорее к алгоритмам относится чем к Java. 

Автор: Opik 15.5.2006, 12:57
Lamer George, 
Алгоритм.
Данных никаких нет. Вот смотрю в сторону Google Maps, и думаю, нужно ли это... Вообщем сейчас хочу понять как сие вообще сотворить, а потом уже думать над реализацией. 

Автор: ALKS 15.5.2006, 13:06
Я довольно убежденно могу предположить что Google Maps стоил милионы, а то что его делали несколько лет и очень не мало людей - это я знаю. и алгоритмы там такие которые я думаю ты в сети не найдеш. уникальные решения, хотя и базирующиеся на общедоступной математической теории. Вооще если бы у меня был достойный алгоритм, я бы его тебе не показал. я бы его продал пожалуй, даже знаю кому и за сколько...

P.S. еще раз сорри в эту тему больше не пишу ибо меня колбасит... 

Автор: Artemon 8.5.2007, 15:18
Позновато я увидел эту тему.

1.Маршрут можно построить только по векторной карте.
2. GOOGLE MAPS - бесплатный картографический движок, если его не использовать в коммерческих целях.

Автор: Promitheus 8.5.2007, 16:04
Вообще это не совсем задача комивояжера. Задача комивояжера - это обойти n точек в городе, чтобы суммарное перемещение было минимальным. (её есть более 15 вариантов в зависимости от типа графов и у каждой само собой свои тонсти).

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

Первое, что пришло в голову: это влоб анализировать картинку. Скажем у дорог цвет тёмно-серый (может тёмно коричневый, смотря какая реализация, не суть важно). Сначала находим ближайшую дорогу, а потом идём по дорогам к нужному месту. Можно использовать оценочные функции и разбор нескольких вариантов, чтобы выбрать оптимальный.

Во вложении небольшие художевства в конце рабочего дня на данную тему, не судите строго.  smile 

Автор: SparF 9.5.2007, 11:18
Цитата(Promitheus @  8.5.2007,  16:04 Найти цитируемый пост)
влоб анализировать картинку.

Господа, давайте не будем решать уже решенные задачи, ну зачем заморачиваться с картинкой (растровой картой) если уже давно есть векторные?

Добавлено через 42 секунды
йййоптеть......тема-то годовалая....

Автор: FireSnake 9.5.2007, 14:20
Что вы ему втюхиваете задачу коммивояжера? Здесь работает алгоритм Дейкстры - поиск кратчайшего пути из одной вершины ко всем остальным. Карту города можно представить как граф, где вершины, это перекрестки дорог, а  ребра это сами дороги. Вот он шикарно (очень понятно) расписан на википедии:

http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B

В простейшем варианте сложность составялет O(n^2) и поэтому грубо говоря поиск пути в городе из 1000 вершина 1Гц процесорре займет  1 секунду. Если использовать в реализации красно-черные деревья, то можно снизить сложность до О(NlogN), но там большая константа съедающая возможный прирост скорости поиска.

Автор: Promitheus 10.5.2007, 12:09
Во-первых это было как вариант. А потом, я так понял нет векторного представления карты или есть ?

Автор: Artemon 11.5.2007, 15:56
Легко сказать Алгоритм Дейкстры, а как же ты например учтешь с помощью него дороги с односторонним движением.

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

Так вот если есть только растровая карта, то прочерчиваем ручками маршрут и сохраняем его координаты в файл, а потом читаем от туду по мере надоюности.

Автор: Lomir 12.5.2007, 12:19
Цитата
Легко сказать Алгоритм Дейкстры, а как же ты например учтешь с помощью него дороги с односторонним движением.
Орентированный граф, с одностороним ребром.
А вот как карту в граф перевести, это уже проблемотично.

Автор: Artemon 12.5.2007, 17:07
Да про ориентированный граф верно говоришь, но опятьже повторюсь - ЭТО РУЧНАЯ РАБОТА.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)