Транспортный справочник позволяет получать информацию о остановках, маршрутах, отрисовывать карту всех маршрутов с учетом реальных географических координат, подобно примеру ниже, а самое главное - строить кратчайшие маршруты между остановками с учетом пересадок, направления движения и времени ожидания автобусов.
Пример SVG-изображения для карты маршрутов
Проект реализован в виде консольного приложения, с версией C++17. Использованы STL, Protobuf, SVG и JSON
- make_base - режим формирования базы данных и ее сохранение в бинарный файл. Сериализация выполняется при помощи Protobuf 3
- process_requests - режим выполнения запросов в сохраненной ранее базе данных.
- serialization_settings - задает настройки сериализации базы данных (имя файла для базы данных)
- routing_settings - настройки маршрутизации (скорость автобусов и время ожидания)
- render_settings - настройки визуализации (параметры svg)
- base_requests - информация о маршрутах и остановках
- stat_requests - команды к базе данных на получение информации и построение маршрута:
- Bus "name": выводит названия остановок, через которые проходит запрошенный автобусный маршрут;
- Stop "name": выводит названия автобусных маршрутов, которые проходят через заданную остановку;
- Map: запрос на отрисоку карыт всех маршрутов;
- Route "from", "to": запросы на построение маршрута между двумя остановками