Сейчас во многих городах появились сервисы, показывающие на карте движение общественного транспорта.
Наш Курган не является исключением.
Есть только одна проблема: чтобы увидеть, куда ходят автобусы, нужен компьютер или хотя бы мощный смартфон, способный загрузить всю карту.
Если вы много передвигаетесь по городу, то максимум, что у вас есть под рукой, это обычный телефон, на котором ни о какой карте не может быть и речи.
Вот почему в прошлом году мы создали услуга , который превращает информацию о движении автобусов в простой текстовый формат, вполне доступный для любого обычного телефона или смартфона.
Ниже под катом я расскажу об основных этапах разработки.
Мечтать
Все начинается с мечты.Многие люди (в том числе и я) хотели бы не тратить время на остановках в поисках любимого автобуса.
Особенно в 30-градусный мороз.
Особенно когда два из пяти автобусов на маршруте внезапно (!!) сломались.
Как было бы приятно в такой момент посмотреть на телефоне, куда едет твой автобус.
Возможно, нет О Лучше подождать и проще ехать с пересадкой? Или, наоборот, не прыгать в первый попавшийся автобус, а подождать немного, а выйти на тот, который пойдет по необходимости.
Или (высший пилотаж) спланировать выход из дома так, чтобы вообще не стоять на остановке.
План Действий
Конечно, в нашем городе есть карта, по которой ездят автобусы в реальном времени.Но попытки открыть его в моем (достаточно старом) смартфоне закончились ничем - не открывается.
Тогда в голову пришла резонная мысль – а что, если превратить данные с карты в обычный текст? Что-то вроде этого: б.
Солнечный -> 1-й микрорайон X 537 ЕС: KZKT -> --- Гастрономическое воскресенье 1-й микрорайон -> б.
Солнечная Х 446 К?: АТС №6 > ---- 5-й микрорайон в конце X 442 К?: 1-й микрорайон финал Ведь все, что нам по сути нужно знать, это направление движения автобусов, между остановками которых находится каждый из них, и, возможно, номерной знак тоже пригодится.
Оказывается, информации не так уж и много - подойдет любой телефон.
Естественно, немаловажным фактором является объем мобильного трафика – в данном случае он также минимален.
Таким образом, нам нужен сервис, который сможет превращать положение автобусов на карте в текст.
Алгоритмы
Для разработки алгоритма, естественно, нужны исходные данные: остановки (координаты, названия) и сами маршруты (координаты всех отрезков).Делались связи между остановками и маршрутами, участками с направлениями и т.д. Все складывалось в таблицы MySQL. В бета-версии алгоритм был самым простым: берём геоточку, соответствующую автобусу, и с помощью SQL-запроса находим, к какому участку маршрута она ближе всего.
Далее по отрезку восстанавливаем остановки, между которыми едет автобус, и направление его движения.
Идея хорошая, но практика показала, что она работает только для кубических автобусов в вакууме.
В реальности автобусы начинают «прыгать» из одного направления в противоположное, и наоборот. Это, как нетрудно догадаться, связано с реальным движением транспорта – объездами, перекрестками, разворотами и тому подобным.
Примерно через месяц алгоритм был доработан.
Мы заметили, что GPS-трекеры помимо координат выдают еще и текущее направление движения (азимут).
Грубо говоря, азимут – это угол между направлением на север и стрелкой, характеризующей расположение автобуса.
Если мы добавим эту информацию в наш первый алгоритм, он получится намного лучше.
Ведь даже с учетом всех «покачиваний» автобуса его азимут не может измениться более чем на 50-60 градусов от фактического направления движения.
Теперь мы можем достаточно точно определить, откуда приходит и куда идет каждый автобус.
Определение азимута автобуса:
Проверка точности
Естественно, мы не могли не проверить точность нашего алгоритма.Вообще говоря, для идеального теста нам пришлось бы ездить на автобусах и сразу смотреть в телефоне, правильно ли определено направление или нет. Поэтому мы пошли несколько окольным путём.
Предположим, что два человека через небольшой промежуток времени сделали один запрос на один и тот же маршрут. Очевидно, что за такой короткий промежуток времени ни один автобус не успеет сменить направление на противоположное (исключаем те, что находятся в конце).
Если наш алгоритм показывает, что один из автобусов внезапно изменил направление, то это означает ошибку расчета.
Исходя из этой логики, мы сделали скрипт, который перебрал все накопленные данные.
Были взяты пары данных с разницей не более 2 минут. На разных маршрутах таких пар было от трёхсот до нескольких тысяч.
Рассчитанная точность (количество ошибок/общее количество пар) оказалась достаточно хорошей – 94-98%.
Как видите, алгоритм иногда все же дает сбой, но для текущего уровня этого вполне достаточно.
Кроме того, мы рекомендуем пользователям сделать 2-3 запроса на устранение подобных аномалий.
Интерфейс
По интерфейсу рекомендации вполне стандартные.Через какое-то время мы перевели всё на твиттер-ботстрап, чтобы это можно было читать на любых устройствах — от самых простых телефонов до мощных планшетов.
Номер маршрута вводится прямо в адресную строку, либо можно выбрать ссылку на странице, где все маршруты перечислены подряд (некоторым так удобнее).
На самой странице есть только кнопки обновления.
Ничего лишнего.
Интерфейс (просмотр на рабочем столе):
Кроме того, есть ICQ-бот, который дает аналогичные ответы.
Достаточно отправить ему номер интересующего вас маршрута.
Статистика
На данный момент посещаемость сервиса составляет 100-150 человек в день, каждый из которых делает 6-8 запросов.Кому-то эти цифры могут показаться небольшими, но они были достигнуты без каких-либо инвестиций в рекламу.
Кроме того, многие моменты еще требуют «тонкой настройки», чтобы сервис был максимально полезен людям.
Мы ставим на первое место качество, а не посещаемость.
План развития
Наконец о самом вкусном.Сейчас «мобильные автобусы» составляют основу диплома, который делает один из наших студентов.
Суть диплома довольно интересна: используя информацию о движении автобусов, рассчитать пробки, возникающие в городе, и на основании пробок дать рекомендации, по какому маршруту лучше добираться из пункта А в пункт Б.
Мне кажется, что в настоящее время это крайне актуально, причем не только для пассажиров, но и автомобилистов, и всех тех, кто сильно зависит от дорожной ситуации (такси, доставка еды, служебный транспорт и т. д.).
Ближе к маю посмотрим, что можно сделать — попробуем отписаться на хабе.
Утренние пробки в Кургане (данные на 14 февраля):
И, конечно, мы открыт для обсуждения , если вы хотите реализовать нечто подобное в своем городе.
Хватит тратить время на остановках, лучше потратим его на что-нибудь более полезное! :-) P.S. Часто задаваемый вопрос — Почему бы не сделать приложение для Android? — Заявку подать можно, но это вторично.
Основная задача, которую мы решаем – научиться конвертировать геоданные в текстовый формат. Как только мы научимся это делать, формат вывода информации станет делом техники.
Можно через браузер, можно через аську-бота, можно через Jabber, можно через приложение.
Теги: #общественный транспорт #общественный транспорт #общественный транспорт #мобильная связь #автобусы #рекламирую
-
Свифт Книги
19 Oct, 24 -
Карты Яндекс Для Приложения Такси
19 Oct, 24 -
Форекс 3.0.4
19 Oct, 24 -
Go: Два Года В Производстве
19 Oct, 24 -
Веболомка 2016
19 Oct, 24