Как сделать приложение для транспортировки GPS?
Я живу в Сплите, Хорватия, и городская автобусная компания недавно обвинила новое программное обеспечение, и вот что оно делает: если я пассажир и жду автобус на автобусной станции, есть огромный монитор, на котором я можно увидеть код автобуса и время, которое понадобится ему, чтобы добраться до моей станции. Проблема в том, что за два года использования программного обеспечения я ни разу не видел, чтобы время прибытия было даже точным. Я знаю, что данные GPS могут быть неточными, но это.... И это меня так расстраивает, что я решил, что попытаюсь написать аналогичное приложение для моего итогового экзамена в CS в колледже. Проблема в том, что я много раз искал в Интернете последние несколько дней и не могу найти хорошие отправные точки. Итак, мой вопрос: вы когда-нибудь участвовали в таком проекте, и если да, то могли бы вы дать мне несколько советов, будь то учебники или книги по теме? Я ценю любой вклад. Если я сделал ошибку в отношении самого вопроса, не стесняйтесь закрыть его. Спасибо!
1 ответ
Вы, вероятно, будете иметь:
- Объект транспортного средства, содержащий местоположение каждого транспортного средства, назначенный маршрут, направление движения по маршруту и следующую запланированную остановку, предыдущую запланированную остановку, время прибытия на предыдущую запланированную остановку
- Массив маршрутов, который содержит список остановок и структуру данных, содержащую историческое время прохождения между остановками на каждом маршруте
Теперь обновления для местоположения транспортного средства выдвигаются к объекту транспортного средства.
Если вы хотите обновить отображение на станции, найдите все маршруты, проходящие через эту станцию, и для каждого маршрута отобразите приблизительное время прибытия следующего транспортного средства на этом маршруте.
В основе этого лежит расчетная структура времени прибытия. Определите это, предполагая некоторое расстояние между остановками и средней скоростью движения.
Теперь, каждый раз, когда транспортное средство прибывает на остановку, вычисляет реальное время, которое потребовалось, чтобы добраться туда с его последней остановки, и используйте это для обновления среднего времени прохождения, связанного с получасовыми приращениями (или что у вас есть), вы также можете по сезону и / или дню недели. Целью биннинга является неявный учет различной загруженности трафика временем суток, днем недели и / или сезоном. Предполагая, что в остальном однородные условия, вы в конечном итоге получите приличную оценку времени прохождения между каждой станцией.
Вы можете найти полезным использовать фильтр Калмана.
Оценки времени в пути между более удаленными станциями могут быть более точными, чем время в пути между соседними станциями, если вы хотите посмотреть на это. Марковские цепочки высших порядков также могут помочь в описании статистики транзитных времен.
Просто идеи.