Прочитайте posfix, чтобы увидеть, является ли сигнал действительным (где-то в предложении $ GPGGA, если вы анализируете необработанные строки NMEA). Если это 0, игнорируйте сообщение.
Кроме того, вы можете посмотреть комбинацию HDOP и количества спутников, если вам действительно нужно быть уверенным, что сигнал очень точный, но в нормальных ситуациях это не требуется.
Конечно, не помешает проверить работоспособность сигналов GPS:
- широта между -90,90;
- долгота между -180..180 (или E..W, N..S, 0..90 и 0..180, если вы читаете необработанные строки NMEA);
- скорость от 0 до 255 (для обычных автомобилей);
- расстояние до предыдущих совпадений измерений (на основе широты / долготы) приблизительно соответствует указанной скорости;
- разница во времени с системным временем, не превышающим x (если системные часы не могут быть доверенными или не основаны на синхронизации GPS :-));
Чтобы выполнить сопоставление карты, вы в основном перебираете свои сегменты дороги и проверяете, какой сегмент наиболее вероятен для вашего текущего положения, направления, скорости и, возможно, предыдущих измерений GPS и совпадений.
Если вы не работаете с приложением в реальном времени или если задержка обратной связи является приемлемой, вы даже можете заглянуть в «будущее», чтобы увидеть, какой сегмент является наиболее вероятным.
Делать все это правильно - искусство само по себе, и это пространство здесь слишком короткое, чтобы углубляться в него.
Часто трудно со 100% уверенностью определить, на каком участке дороги кто-то находится. Например, если есть 2 параллельные дороги, которые одинаково близки к текущей позиции, это вопрос творческой эвристики.