Pull to refresh

Comments 4

Недавно по работе озадачили меня добавить на карту прокладку маршрута общественным транспортом. Из доступных данных была геометрия дорог. Долго думал как же все реализовать, в итоге решил составлять базу всех остановок и рисовать геометрию всех маршрутов. Слава богу город у нас небольшой и маршрутов не так много. Реализовал методом перебора ближайших остановок начальной и конечной точки на предмет проходящих одинаковых маршрутов. Если маршрутов одинаковых через них не проходит, то уже идет поиск остановок в которой пересекаются маршруты проходящие через эти две точки. Если интересно что получилось можно посмотреть тут maps.zabmedia.ru
Как-то это всё кустарно.
Хорошее решение должно иметь под собой продуманную математику, здесь этого не видно.
Алгоритмы на графах уже довольно проработаны, и насколько я понимаю, в итоге они сводятся к довольно простым операциям, но на больших матрицах — это то что уже можно было бы оптимизировать в SQL.
Способ сбора «переходов» между остановками — как я понял, используется кратчайшее расстояние. Стоило использовать особенности карты. Например, между двумя близкими точками может пролегать шоссе, перейти которое можно только по переходу.
В целом предложенный вариант — это решить задачу «хоть как нибудь», от него довольно далеко до действительно хорошего решения.
Любой переход с остановки на остановку это число, которое характеризует затрачиваемое время. Если там переход под шоссе, то просто число будет выше. Расставлять числа для всех пересадок, а их там ???, это тоже не совсем простая задача.
??? — 5000 пересадок(случайно нажал ентер, а потом написал неправду)
Sign up to leave a comment.

Articles