Добрый день.
Убедительная просьба в корне пересмотреть алгоритм прогноза прибытия на остановку в Локаторе, и как следствие отображение в Остановочных табло.
Для работы требуется занесение времени прибытия на все промежуточные остановки, как минимум до остановки с табло, а объяснить заказчику у которого, в принципе не предусмотрены расписания по промежуточным остановкам, что ему нужно потратить уйму времени на приблизительный расчёт этих расписаний - хотя пользы кроме, как для табло - это никакого не принесёт, очень сложно.
Одна крупная российская компания, назовём её для примера "Ондекс" для подобной реализации, копит данные определённый промежуток времени и потом, на основании этих данных и расчётной скорости транспорта - составляет прогноз. Точность отличная. Понимаю, что это уж очень сложный путь решения.
Предлагаю рассмотреть следующий вариант:
У нас всегда есть время первой остановки (ВПЕР) и время последней остановки (ВПОС) в каждом расписании.
Есть длина трека построенного по всему маршруту (ДЛ)
Если принять в качестве аксиомы для себя, что движение будет равноускоренным, то можно посчитать среднюю скорость (Vср) для каждого расписания
Vср= ДЛ/(ВПОС-ВПЕР)
Зная среднюю скорость для каждого расписания, и длину трека между 1 остановкой и 2 остановкой (ДЛ2) можем вычислить время требуемое (В2) на поездку от 1 остановки до 2 остановки
В2=ДЛ2/Vср
И рассчитать прогноз прибытия на вторую остановку (ПР2)
ПР2 = ВПЕР + В2
и т.д.
ПРх=ПР(х-1)+ДЛ(x)/(ДЛ/(ВПОС-ВПЕР))
Если внутри расписания всё таки присутствуют несколько промежуточных значений, то расчёт делится на столько участков, сколько внесено промежуточных значений.
Таким образом можно заполнить (закрытую) БД по каждому расписанию внутри системы. И далее использовать Ваш текущий вариант расчёта прогноза прибытия.
Расчёт производится по факту сохранения расписания и пересчитывается при пересчёте трека маршрута или изменения расписания.
Понятное дело, что это приблизительные значения и не стоит их использовать для расчёта опережения и отставания в режиме слежения диспетчера или выводить в качестве статичных данных в локаторе,
но для расчёта времени прибытия в реальном времени на остановки в Локаторе (и соответственно на остановочные табло) - этого будет вполне достаточно и снизит бессмысленную нагрузку на диспетчерскую перевозчика.
Если вы считаете, что данный подход не соответствует Вашим стандартам, тогда прошу сделать возможность загрузки расписаний из таблицы EXCEL.
Предусмотреть файл шаблона внутри каждого конкретного маршрута в который можно внести свои значения с учётом собственных расчётов и импортировать в маршрут (хотя бы табличную часть, без схем действия и объектов)