Skip to content

FireE1/cpp-transport-catalogue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Transport_Catalogue

Проект представляет из себя систему городской маршрутизации. Программа принимает для считывания и выдает ответы на запросы файл в формате JSON.

  1. На вход подается указание файла сериализации protobuf(.db), настройки поведения атобусов (ожидание на остановке, скорость автобусов), настройки рисуемой карты, информация остановок и автобусов.
  2. Запрос на вывод формируется из обязательного указания файла сериализации protobuf(.db) и опционально: название(я) остановок, автобусов, а так же путь между двумя остановками и конструирование карты маршрутов (каждому отдельному объекту запроса должен назначаться идентификатор(id)).
  3. Вывод запроса выдает информацию о запрошенных остановках и автобусах, а так же маршрута между остановкими (кратчайший) и карту, в формате .svg.

Варианты работы программы лежат в директории Test_Files.

Использование:

  1. Запуск программы с аргументом make_base, с входным JSON файлом, для постороения базы:
  {
      "serialization_settings": {
          "file": "transport_catalogue.db"
      },
      "routing_settings": {
          "bus_wait_time": 2,
          "bus_velocity": 30
      },
      "render_settings": {
          "width": 1200,
          "height": 500,
          "padding": 50,
          "stop_radius": 5,
          "line_width": 14,
          "bus_label_font_size": 20,
          "bus_label_offset": [
              7,
              15
          ],
          "stop_label_font_size": 18,
          "stop_label_offset": [
              7,
              -3
          ],
          "underlayer_color": [
              255,
              255,
              255,
              0.85
          ],
          "underlayer_width": 3,
          "color_palette": [
              "green",
              [
                  255,
                  160,
                  0
              ],
              "red"
          ]
      },
      "base_requests": [
          {
              "type": "Bus",
              "name": "14",
              "stops": [
                  "Улица Лизы Чайкиной",
                  "Электросети"
              ],
              "is_roundtrip": true
          },
          {
              "type": "Stop",
              "name": "Улица Лизы Чайкиной",
              "latitude": 43.590317,
              "longitude": 39.746833,
              "road_distances": {
                  "Электросети": 4300
              }
          },
          {
              "type": "Stop",
              "name": "Электросети",
              "latitude": 43.598701,
              "longitude": 39.730623,
          }
      ]
  }
  1. Запуск программы с аргументом process_requests с входным файлом JSON, для считывания запроса (опцианально можно указать выходной JSON файл (перезапись)):
  {
      "serialization_settings": {
          "file": "transport_catalogue.db"
      },
      "stat_requests": [
          {
              "id": 218563507,
              "type": "Bus",
              "name": "14"
          },
          {
              "id": 508658276,
              "type": "Stop",
              "name": "Электросети"
          },
          {
              "id": 1964680131,
              "type": "Route",
              "from": "Улица Лизы Чайкиной",
              "to": "Электросети"
          },
          {
              "id": 1359372752,
              "type": "Map"
          }
      ]
  }

Системные требования:

  • C++17 (STL)
  • GCC 11.2.0

Стек технологий:

  • CMake 3.12.0
  • Protobuf-cpp 3.18.1

В планах:

  • Реализовать простой UI
  • Добавить маршруты со спутниковых карт

About

Транспортный справочник

Resources

Stars

Watchers

Forks