Информационные технологии в спортивном туризме
Информационные Технологии в спортивном туризме.
CodeWords 2025
Автор: Нефёдов Иван Артёмович
Научный руководитель: Илья Сергеевич Косилов
Московский технический университет связи и информатики (МТУСИ)
Всем добрового времени суток. В этой статье мне хотелось бы рассмотреть как ИТ находят применения в спортивном туризме.
Введение: современный спортивный туризм становиться всё более технологичным, а ИТ в спортивном туризме находят всё большее применения. Современные ИТ технологии позволяют спланировать маршрут похода на дальнюю дистанцию с помощью интернет карт, запечатлеть лучшие моменты похода и красивые пезажи, зафиксировать и внести результат участника в протокол соревнования, а так же отслеживать состояние организма на тренировках и подбирать для себя оптимальным темп. В этой статье я хотел бы разобрать как различные гаджеты прочно закрепились в спортивном туризме, а так же как они работают.
- Планирование маршрута.
Идея маршрута у современного туриста рождается в голове так же как и у его предков, но после мысли «Хочу туда» начинается детальное планирование маршрута с помощью цифровой карты и GPS трекера. Затем его трек(пройденный маршрут) записывается в память устройства, это позволяет изучить маршрут после похода и оценить были ли отклонения от изначального плана, набор высот, а так же посмотреть скорость на разных участках маршрута.
1.1 Архитектура цифровых картографических карт и процесс их получения.
Прежде чем карта появится на экране, происходит сложный процесс сбора и обработки исходных данных.
Процесс сканирования слоёв земли:
- Дистанционное зондирование Земли:
Сбор первичных растровых данных со спутников (Landsat, Sentinel, WorldView) и самолётов.
- Фотограмметрия:
Построение 3D-моделей и DEM по серии снимков, которые перекрывают друг друга.
- Лидарное сканирование:
Использование лазера для получения высокоточных данных о поверхности и рельефе.
- Векторизация:
Автоматическое или ручное преобразование растровых данных в векторные слои. Например, выделение контуров зданий со спутникового снимка и создание полигонального слоя.
Эти процессы обеспечивают первичные данные, которые затем проходят через всю картографическую систему.
Для эффективного управления этими данными и предоставления их конечным пользователям, современная цифровая карта строится по трехуровневой архитектуре котору можно разделить на 3 основных уровня: уровень данных, сервисный уровень и уровень визуализации.
- Уровень данных
Этот уровень отвечает за хранение и организацию всех географических данных, обеспечивая их целостность и быстрый доступ.
- Хранилище геопространственных данных
Использует 2 вида форматов:
Векторные форматы: GeoJSON для совместимости с веб-технологиями, Protocol Buffers (PBF) для эффективной передачи по сети благодаря бинарному сжатию
Растровые форматы: GeoTIFF как промышленный стандарт для хранения спутниковых снимков с геопривязкой
- Пространственная БД (PostGIS) с R-tree индексацией
Использоуется длягеографические объекты в нужной области.
PostGIS — расширение PostgreSQL, специализированное для работы с геоданными
R-tree индексация — специальная структура данных для быстрого поиска объектов по географическому положению (например, "найти все здания в видимой области карты")
- Демпферы обновлений
Собирает все мелкие изменения в области через:
Буферизацию частых изменений данных для снижения нагрузки на БД
Пакетной обработки обновлений картографического контента
Обеспечения согласованности данных при массовых правках
- Кеш-слои тайлов CDN
Создаёт копии самых популярных фрагментов карты с помощью:
Многоуровневнего кэширования готовых тайлов карт (векторных и растровых)
Распределения контента через географически близкие узлы CDN для уменьшения задержек
Автоматического обновления кэша при изменении исходных данных
На выходе уровня хранения формируются оптимизированные и структурированные данные, готовые для эффективной обработки сервисным уровнем и последующей передачи клиентским приложениям.
- Сервисный уровень
Обеспечивает логику работы с геоданными: преобразует необработанные пространственные данные в готовые сервисы — геокодирование, построение маршрутов и обработку спутниковых снимков через специализированные микросервисы.
1) Микросервисы геокодирования и маршрутизации – это ядро системы, которое делится на два сервиса.
- Сервис геокодирования
Преобразование текстового адреса в географические координаты (широта, долгота) и наоборот преобразование географических координат в текстовый адрес (Авиамоторная улица 8а)
Клиент через приложение или сайт делает запрос к серверу: (GET/geocode?address=Авиамоторная+улица,+Москва,+дом+8), сервер обрабатывает запрос и высылает json ответ
{ "query": " Москва, Авиамоторная, 8",
"results": [{
"latitude": 55.757167,
"longitude": 37.712145,
"formatted_address": "Авиамоторная ул., 8, Москва, Россия",
"confidence": 0.9
} ]
}
- Сервис построения маршрута между двумя и более точками.
Клиент через приложение делает запрос к серверу:
{"points": [
{"lat": 55.755449, "lon": 37.711815},
{"lat": 55.753544, "lon": 37.621202}
],
"profile": "car",
"avoid_tolls": true,
"traffic": true}
Сервер обрабатывает запрос и высылает JSON ответ:
{"route_id": "crazy_123",
"summary": {
"distance": 15200,
"duration": 2100,
"traffic_delay": 600},
"geometry": "LINESTRING(37.711815 55.755449, 37.590521 55.788735)",
"steps": [
{"instruction": "Выезд с улицы Авиамоторная",
"distance": 500,
"duration": 60,
"type": "depart"},
{"instruction": "Поворот к ПНД №13",
"distance": 200,
"duration": 30,
"type": "arrive"}
],
"waypoints": [
{"name": "Ваше текущее местоположение",
"lat": 55.755449,
"lon": 37.711815},
{"name": "ПНД №13",
"lat": 55.788735,
"lon": 37.590521} ]
}
2) ETL-процессы для обработки спутниковых данных представляют собой конвейеры данных для преобразования спутниковых снимков в готовые данные для карт. Сначало извлекаются данные из различных источников: спутниковые снимки, снимки с БПЛА, вышек и т.д, затем на этапе трансформации выполняется радиометрическая калибровка, атмосферная коррекция, расчет спектральных индексов и тематическая классификация. И в конце процесса происходит загрузка готовых данных в: базы данных, аналитические системы и прочие платформы.
Структура конвеера обработки данных:
pipeline_config = {
"source": "спутник- 1", условный спутник приславший данные
"processing_chain": [ цепочка обработки фото
"atmospheric_correction", удаление атмосферных искажений
"cloud_masking", удаление облаков
"ndvi_calculation", сканирование растительности
"quality_assessment"], проверка
"output_resolution": 10, Детальность карты – 1пкс = 10x10м
"target_crs": "epsg:3857"} Cистема координат
3)API шлюзы для внешних картографических сервисов - выступают единой точкой доступа к множеству картографических сервисов, позволяя клиенту не задумыватся о интеграции с различными провайдерами. Шлюзы обеспечивают агрегацию данных от нескольких источников, кэширование частых запросов, нормализацию форматов ответов и отказоустойчивость. Они также управляют лимитами запросов, аутентификацией и мониторингом качества сервисов.
gateway_config = {
"endpoint": "/v1/geocode",
Список провайдеров геокодирования:
"providers": [
{"name": "yandex", "priority": 1, "timeout": 2},
{"name": "google", "priority": 2, "timeout": 3},
{"name": "osm", "priority": 3, "timeout": 5} ],
"caching": {
"enabled": True,
"ttl": 3600}, Время жизни кэша - 1 час
"fallback_strategy": "round_robin"} Способ резервирования
3) Очереди сообщений (Kafka/RabbitMQ) – обеспечивают связь между компонентами системы, реализуя надежную доставку данных и балансировку нагрузки.
RabbitMQ используетя для сложной маршрутизации задач и рабочих очередей, где критично подтверждение обработки.
Kafka специализируется на обработке потоков данных высокой производительности.
Так выглядит событие в kafka ( поступление нового снимка )
kafka_event = {
"topic": "satellite_images",
"event": { событие
"scene_id": "S2A_MSIL1C_20240527",
"timestamp": "2024-05-27T10:30:00Z", время
"cloud_cover": 0.15,
"storage_path": "s3://satellite/S2A_20240527.tiff" }, путь хранения
"consumers": ["ndvi_service", "cloud_detector"]} получатели
Вот так выгдит задача RabbitMQ для построения маршрута для конкретного пользователя.
rabbitmq_task = {
"queue": "routing_tasks",
"message": {
"task_id": "route_789012",
"points": [
{"lat": 55.7558, "lon": 37.6173},
{"lat": 55.7338, "lon": 37.5880}],
"user_id": "user_12345"},}
На выходе сервисного уровня формируются готовые к использованию картографические данные и сервисы, которые непосредственно потребляются клиентскими приложениями.
3й Уровень - Уровень Виртуализации
Уровень виртуализации отвечает за преобразование подготовленных сервисным уровнем данных в интерактивное графическое представление. Этот уровень обеспечивает рендеринг карт, визуализацию объектов и обработку пользовательского взаимодействия в реальном времени.
- GLSL-шейдеры используются для стилизации карт.
GLSL-шейдеры — это программы, выполняемые на GPU и обеспечивающие продвинутую визуализацию картографических данных в браузере или приложении.
GLSL-шейдеры отвечают за:
Кастомизацию внешнего вида карт
Шейдеры позволяют программно изменять визуальное представление географических данных без загрузки новых ресурсов с сервера.
- Динамическое окрашивание зданий, дорог и природных объектов в зависимости от типа, высоты, назначения
- Настройку толщины линий дорожной сети согласно их классификации (магистрали, второстепенные, пешеходные)
- Изменение стилей отображения в реальном времени — например, переход от дневной к ночной схеме карты
- Адаптацию цветовых палитр под тематику карты (транспортная, туристическая, геологическая)
Визуальные эффекты
Использование шейдеров открывает возможности для сложных визуальных эффектов:
- Полутоновые тени и свечения вокруг объектов для улучшения восприятия глубины
- Анимированные выделения маршрутов и точек интереса
- Имитация физических материалов — стекла, металла, воды
Динамическое изменение стилей
Шейдеры обеспечивают мгновенное переключение между различными стилями отображения:
- Плавные переходы между разными темами оформления
- Изображение на экране обновляется мгновенно, в ответ на движение ползунков, нажатие кнопок и т.д.
Работа DOM для больших наборов данных
Система использует виртуализацию DOM для эффективного управления тысячами интерактивных элементов на карте.
- Управление интерфейсом поверх карты
- Создается ограниченный пул DOM-элементов (например, 1000 единиц), которые переиспользуются для отображения видимых в текущий момент объектов
- Элементы динамически перемещаются и переназначаются при прокрутке карты или изменении масштаба
- Обеспечивается плавная работа интерфейса даже при отображении десятков тысяч географических объектов
Взаимодействие с пользователем
- Обработка жестов и событий (клики, перемещения, масштабирование) с минимальной задержкой
- Интеллектуальный выбор объектов при клике с учетом их визуального перекрытия
- Плавные анимации переходов и преобразований интерфейсных элементов
- Контекстные действия, зависящие от типа выбранного географического объекта
- Реализация сложных сценариев взаимодействия, таких как перетаскивание маршрутов или групповое выделение объектов
- Service Worker для офлайн-кеширования
Service Worker выступает как прокси-серевер между клиентским приложением и сетью, обеспечивая продвинутые возможности кэширования и офлайн-работы с картографическими данными.
Интеллектуальное кэширование тайлов и данных
Система реализует систему кэширования, адаптированную специально для картографического контента. При первом посещении пользователем определенной области карты Service Worker автоматически кэширует векторные и растровые файлы для базового уровня детализации. По мере навигации пользователя по карте в фоновом режиме докачиваются и кэшируются файлы соседних областей и смежных уровней масштабирования, создавая "буферную зону" вокруг текущей позиции пользователя. Система анализирует, какие маршруты и локации пользователь запрашивает наиболее часто, и обеспечивает их приоритетное сохранение в кэше.
Полнофункциональная работа без интернет-подключения
В условиях отсутствия сетевого соединения Service Worker переключается в полностью автономный режим. Пользователи могут просматривать ранее посещенные области карты с полной интерактивностью — масштабировать, панорамировать, взаимодействовать с кэшированными метками и объектами. Доступны базовые операции построения маршрутов между кэшированными точками интереса, используя только локально сохраненные данные дорожной сети. Для навигации в офлайн-режиме система использует предзагруженные графические тайлы и векторные данные дорог, позволяя строить маршруты между известными системе локациями. Пользовательские метки, созданные в офлайн-режиме, сохраняются в локальном хранилище и синхронизируются при восстановлении соединения.
Фоновая синхронизация и обновление данных
При восстановлении сетевого подключения Service Worker инициирует процесс фоновой синхронизации накопленных офлайн-изменений. Созданные пользователем метки, пройденные маршруты и другие пользовательские данные постепенно отправляются. Система выполняет инкрементальное обновление кэшированных картографических данных, проверяя актуальность и подгружая только изменившиеся области. Для часто обновляемых данных (например, пробки, текущее состояние дорожных работ) реализован механизм "stale-while-revalidate" — пользователь мгновенно получает данные из кэша, пока в фоне происходит проверка актуальности. Интеллектуальное управление кэшем автоматически удаляет наименее используемые тайлы по мере достижения лимитов хранилища, сохраняя при этом наиболее релевантные для пользователя данные. При этом критические компоненты приложения (базовые библиотеки, основной UI) сохраняются с высшим приоритетом, гарантируя работоспособность приложения даже в условиях ограниченного пространства хранилища.
Эти архитектурные преимущества реализуются через четкое разделение ответственности между компонентами. Теперь расс полный цикл обработки запроса на примере построения маршрута:
Взаимодействие уровней в картографической системе
Клиент → API Gateway → Микросервисы → База данных → CDN → Клиент
Пользователь вводит точки маршрута в интерфейсе
- Клиентское приложение формирует JSON-запрос к API Getaway:
fetch('https://api.maps.com/route', {
method: 'POST',
body: JSON.stringify({
from: [55.7, 37.6], Широта, долгота точки А
to: [55.8, 37.7] Широта, долгота точки Б
})
})
2. Service Worker перехватывает запросы к статическим ресурсам карты (тайлы, иконки, стили) и обслуживает их из локального кеша при наличии.
Кеширование тайлов карт в Service Worker
self.addEventListener('fetch', (event) => {
if (event.request.url.includes('/tiles/')
event.request.url.includes('/satellite/')) {
event.respondWith(
caches.match(event.request)
.then(response => response fetch(event.request))
);
}
});
3. API Gateway принимает запрос, выполняет аутентификацию, валидацию данных и проксирует запрос к соответствующему микросервису.
- Аутентификация пользователя
Система проверяет валидность токена авторизации, переданного в заголовках запроса. Если аутентификация не пройдена, возвращается ошибка 401 Unauthorized.
- Валидация входных данных
Выполняется проверка корректности переданных координат и параметров маршрута. Валидация включает проверку формата координат, их географических границ и поддерживаемых опций транспорта.
- Проксирование запроса к микросервису маршрутизации
После успешной аутентификации и валидации запрос перенаправляется в микросервис маршрутизации через функцию forward_to_microservice. На этом этапе:
- Балансировщик нагрузки выбирает наименее загруженный инстанс микросервиса
- Запрос передается на выбранный инстанс по URL {instance.url}/calculate
- Оригинальные данные запроса передаются без изменений
- Логирование и сбор метрик
После получения ответа от микросервиса система регистрирует метрики запроса, включая идентификатор пользователя, время выполнения и статус операции
На 4м этапе цепочки начинается подготовка данных для клиента
После успешного расчета маршрута система формирует комплексный ответ, содержащий все необходимые данные для отображения карты и навигации. Ответ включает:
- Векторные тайлы - ссылки на плитки векторных карт в формате PBF, содержащие информацию о дорогах, зданиях и других географических объектах
- Растровые тайлы - спутниковые снимки в формате WebP, служащие подложкой для карты
- Геометрию маршрута - координаты линии маршрута в формате GeoJSON LineString
- Пошаговые инструкции - детальные указания для поездки с поворотами и маневрами
- Метаданные - основную информацию о маршруте, включая общее расстояние в метрах, расчетное время в пути в секундах и географические границы области маршрута
- Инициализация графических компонентов на клиенте
Перед отображением маршрута клиентское приложение выполняет инициализацию графической подсистемы:
Настройка WebGL-рендерера:
- Создается контекст WebGL на canvas-элементе карты
- Компилируются вершинный и фрагментный шейдеры для преобразования географических координат в экранное пространство
- Вершинный шейдер принимает координаты точек через атрибут a_position и преобразует их с помощью матрицы трансформации u_matrix
- Фрагментный шейдер отвечает за окрашивание пикселей в заданный цвет
- Виртуализация DOM-элементов: Создается пул из 1000 переиспользуемых DOM-элементов для отображения меток, маркеров и всплывающих подсказок
- Обработка ответа и визуализация маршрута
- После получения данных от сервера клиентское приложение выполняет последовательную обработку:
- Загрузка векторных тайлов - получает и парсит данные о дорожной сети и географических объектах
- Загрузка растровых подложек - загружает спутниковые снимки для фонового отображения
- Отрисовка маршрута в WebGL - визуализирует линию маршрута с использованием скомпилированных шейдеров
- Создание интерактивных элементов - генерирует DOM-элементы для отображения пошаговых инструкций и точек интереса
1.2 Системы электронного хронометража.
По мимо походов в спортивном туризме так же есть различные дисциплины с короткими дистанциями, в которых участники показывают своё мастерство владения различным оборудованием которое может пригодится в сложных походах. В соревнованиях по различных дисциплинам необходимо знать, за какое время участник пройдёт дистанцию и тут вступает в роль системы электронного хрометража.
Системы электроннного хронометража в туризме всё чаще становятся ключевым элементом для организации мероприятий. Современные системы включают в себя GPS-трекинг, телеметрию и даже возможности отслеживания местонахождения участников.
Принцип работы:
- Участник активирует персональный чип при старте
- Станция фиксирует данные о чипе и времени, когда тот был активирован
- Данные уходят на сервер
Цикл работы схемы:
Участник с чипом → Станция → Сервер (БД) → Результаты участников
Этап 1: Активация чипа
- Участник стартует на дистации и прислоняет чип к станции
- Станция создает электромагнитное поле
- Чип попадает в это поле и активируется за счет полученной от станции энергии
- Чип передает свой уникальный ID станции, затем станция отправляет данные на сервер, на котором будет записан результат участника. Результаты с сервера (БД) можно получить либо прямым SQL запросом, либо посмотреть с помощью веб-интерфейса, также нередки случаи использования CRM для централизованного хранения всех данных о всех участниках.
Этап 2: Сбор данных на станции
После того как ID чипа было получено станцией формируется слудующий пакет данных для отправки на сервер:
{"station_id": "STA-015”, ID станции
"chip_id": "A1B2C3D4”, ID чипа
"timestamp": "2024-01-20T10:30:45.123Z", Время активации чипа
"location": [55.7558, 37.6173], Местонахождение станции
"battery_level": 78} Заряд станции
Этап 3: Отправка данных до базы данных
Шаг 1: Передача на сервер
- Станция отправляет через Wi-Fi, 4G, LTE и т.п
Протоколы: MQTT over TLS как более надёжный, но менее быстрый способ доставить данные из заподтверждения отправки данных, HTTP/2 с gRPC как более быстрый способ при стабильных соединениях, когда потеря данных менее вероятна.
Шаг 2: Верификация данных:
- Проверка подлинности станции
Аутентификация через JWT-токены с ECDSA-подписью для каждой станции
- Проверка наличия зарегистрированного чипа в системе
Используется для того что бы убедиться, что считанный чип официально зарегистрирован для участия в данном мероприятии.
- Проверка георасположения станции
Используется для того что бы убедиться, что считанный чип официально зарегистрирован для участия в данном мероприятии.
Шаг 3: Сохранение в базу данных:
- ID участника
- ID отметки
- Итоговый результат спортсмена
Этап 4: Показ результатов
- Вебинтерфейс или CRM подключается к базе данных, так же возможен прямой запрос в базу данных, но он менее удобен.
- Данные по участникам отображаются в виде таблиц, графиков и т.д.
Таким образом, система фиксации результатов создает надежный фундамент данных. Однако современные технологии позволяют выйти за рамки точечной фиксации на контрольных пунктах и перейти к непрерывному, потоковому мониторингу каждого участника в реальном времени.
Заключение:
В статье я постарался подробно описать, что информационные технологии стали неотъемлемой составляющей спортивного туризма. Они кардинально изменили подходы как к подготовке и проведению походов, так и к организации соревнований.
Цифровые картографические системы, основанные на трехуровневой архитектуре, превратились из простых инструментов навигации в современные платформы для планирования маршрутов похода и его планирования исходя из местности. Современный турист получил возможность не просто проложить маршрут, но и детально изучить его, заранее оценить сложность, взять необходимое оборудование и даже спланировать места ночлега, а после похода проанализировать свое движение и просмотреть отклонения от маршрута.
Современные технологии так же позволили спортивному туризму улучшить организацию соревнований с помощью систем электронного хронометража. Они обеспечивают точность, прозрачность и скорость обработки результатов для объективного судейства.
ИТ не просто облегчают задачи спортивного туризма, а открывают для него совершенно новые горизонты, делая этот вид деятельности более безопасным, доступным, зрелищным и глубоким как для самих спортсменов, так и для их болельщиков.

vavan