В первой версии проекта положение судна казалось парой чисел: широтой и долготой. Карта принимает координаты, ставит маркер — задача решена.
Первые проверки показали, что координата и достоверное положение судна — не одно и то же.
Три источника и три разных ограничения
AIS
Коммерческие AIS-сервисы предоставляли готовую карту и API, но для конкретной внутренней задачи часть нужных данных обновлялась нерегулярно.
Проблемой была не только стоимость доступа. Устаревшая точка выглядит так же убедительно, как свежая. Пользователь видит маркер, но может не заметить, что последнее сообщение было получено несколько дней назад.
Это не оценка AIS как технологии в целом. Для проекта оказалось важно различать наличие позиции и её пригодность для конкретного рабочего сценария.
Сотовая геолокация
M2M-платформа оператора связи позволила получать координаты SIM-карт. Такая точка показывала приблизительный район, но могла оказаться на берегу или в стороне от судового хода.
Сотовую координату нельзя считать GPS-позицией. Она полезна как один из сигналов, если хранится вместе со временем и собственным уровнем доверия.
GPS-трекеры
GPS-трекер потенциально точнее, потому что получает спутниковые координаты непосредственно на судне.
В проверявшейся интеграции конечная точка всё равно требовала контроля. Точная причина не была зафиксирована: проблема могла находиться в протоколе передачи или его интерпретации на сервере.
Реальная цепочка длиннее одного устройства:
спутник
→ приёмник
→ трекер
→ прошивка
→ протокол
→ канал связи
→ сервер
→ парсер
→ преобразование
→ карта
Ошибка на любом этапе может дать технически корректное сообщение с неверным результатом.
Почему нельзя просто перенести точку на воду
Первая идея после проверки сотовых координат выглядела очевидно: если судно оказалось на суше, нужно найти ближайшую воду.
Однако алгоритм не знает, какая вода относится к маршруту. Ближайшим объектом может оказаться:
- несудоходная протока;
- озеро или технический водоём;
- соседний рукав;
- другой берег;
- акватория, которая геометрически близка, но не связана с нужным участком пути.
Для корректировки нужен предметный контекст:
- последнее достоверное положение;
- водная система;
- атлас ЕГС и участок пути;
- речной километр;
- порт, шлюз или ориентир;
- ожидаемое направление движения.
Геометрически ближайшая точка не обязательно является предметно правильной.
Хранить источник, а не только результат
В проекте принято правило: исходную координату нельзя молча заменить «исправленной». Она остаётся фактом работы конкретного источника, а уточнение сохраняется как отдельный результат.
Для каждой позиции важны:
- источник;
- время получения;
- способ расчёта;
- признак корректировки;
- расстояние смещения;
- необходимость ручного подтверждения.
Так карта перестаёт изображать одну безусловную истину. Она показывает лучшее известное положение и объясняет, почему выбрана именно эта точка.
Большое смещение требует проверки
Автоматическая коррекция может быть опаснее исходной ошибки. Если новое положение отличается на десятки километров, его нельзя применять только потому, что маркер теперь выглядит правдоподобно.
Безопасный сценарий включает:
- расчёт без изменения исходных данных;
- показ старой и предлагаемой позиции;
- расстояние смещения;
- причину выбора;
- отдельное подтверждение крупных изменений.
История точек — не маршрут
Линия между двумя известными позициями не становится фактическим путём судна. Между сообщениями судно могло идти по изгибам реки, проходить шлюзы, стоять или возвращаться.
История должна показывать отдельные определения местоположения. Соединяющая линия допустима как вспомогательная визуализация, но не как подтверждённый маршрут.
Что изменилось в модели
Вместо поиска одного «лучшего» внешнего сервиса проект пришёл к системе, которая:
- принимает несколько источников;
- сохраняет исходные данные;
- оценивает качество и актуальность;
- сопоставляет точку с донесением и ЕГС;
- отделяет автоматическое предположение от подтверждённой информации.
«Борт» и связанная с ним web-дислокация не являются навигационной системой и не предназначены для судовождения. Расчётное положение используется как эксплуатационная информация с обязательным указанием источника и качества.