Оповещения движения транспорта (объекта)

Как определять движение/остановки объекта в GPS системе?

Добавляя функционал оповещения движения и остановок объекта, я задался вопросом: “а по какому именно критерию определять начало и конец движения?”

Объект периодически отправляя свои координаты, даёт их с погрешностью в несколько метров, потому для системы он движется всё время. А остановки на светофорах так же не являются существенными для отчётов.

Решение

Добавил булевый флаг “двигается/остановился” для объекта и с каждым добавлением новой точки проверяю одно из событий.
1. Если объект движется, то я проверяю случилась ли остановка и переключаю флаг в “остановился”.

2. Если объект стоит, то я проверяю произошло ли движение.

Чтобы не делать две проверки вместо одной. Мне надо проверять либо то, что он поехал, либо то, что он остановился.

Но интервалы и расстояния для срабатывания разные.

Чтобы нивелировать погрешность GPS приёмника, я ставлю срабатывание на случай, в котором объект проехал за 1 минуту 100 метров. Определение движения не моментальное. Реагируем на среднюю скорость выше 6 км/час.

А за остановку считаем тот случай, когда если объект проехал меньше 300 метров за 5 минут. Скорость стала ниже 3.6 км/час.

Начало и конец движения помечаются на карте зелёными и красными маркерами.

Чтобы действовал этот функционал, нужно, чтобы у объекта был включен параметр Alerts (Оповещения) и обязательно вписаны поля телефон и email.

Если заполнен в объекте заполнен email, то нотификации будет приходить по электронной почте, а если только номер телефона, то по SMS.