Skip to content

Latest commit

 

History

History
153 lines (134 loc) · 5.68 KB

README.md

File metadata and controls

153 lines (134 loc) · 5.68 KB

Transport Catalogue

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

Описание

Транспортный справочник - это приложение, которое оперирует базой данных остановок и маршрутов и позволяет получать статистические данные, строить карту маршрутов и находить кратчайший маршрут.

Любые запросы к транспортному справочнику передаются и получаются через JSON-файлы. Для заполнения базы данных транспортного справочника используются запросы base_requests. Для получения данных из транспортного справочника используются запросы stat_requests. Кроме того, для настройки параметров карты используется запрос render_settings, а для настройки параметров движения транспорта - запрос routing_settings.


Запросы base_requests на заполнение базы данных бывают двух типов:

  • "Bus" - информация о маршруте; состоит из названия, списка остановок, типа маршрута (кольцевой/некольцевой).

    Пример запроса:

        {
            "is_roundtrip": false,
            "name": "35",
            "stops": [
                "Gastello",
                "TRK Piter"
            ],
            "type": "Bus"
        }
  • "Stop" - информация об остановке; состоит из названия, gps-координат, реального расстояния до других остановок.

    Пример запроса:

        {
            "latitude": 55.555871,
            "longitude": 37.69087,
            "name": "Gastello",
            "road_distances": {
                 "TRK Piter": 1500
            },
            "type": "Stop"
        }

Запросы stat_requests на получение данных бывают следующих типов:

  • "Bus" - информация о маршруте

    Пример запроса:

        {
            "id": 2,
            "name": "35",
            "type": "Bus"
        }

Ответом на такой запрос будут статистические данные о маршруте:

        {
            "curvature": 0.796523,
            "request_id": 2,
            "route_length": 10180,
            "stop_count": 6,
            "unique_stop_count": 5
        }       
  • "Stop" - информация об остановке

    Пример запроса:

        {
            "id": 3,
            "name": "Moskovskaia metro station",
            "type": "Stop"
        }

Ответом на такой запрос будут статистические данные об остановке:

        {
            "buses": [
                "297",
                "35"
            ],
            "request_id": 3
        }
  • "Route" - кратчайший маршрут от остановки до остановки, учитывая время в пути и время на пересадки

    Пример запроса:

          {
              "from": "Tipanova",
              "id": 5,
              "to": "Pochta",
              "type": "Route"
          }

Ответом на такой запрос будет информация об ожидании на пересадочных остановках и о необходимых маршрутах, а также общее время в пути:

        {
            "items": [
                {
                    "stop_name": "Tipanova",
                    "time": 6,
                    "type": "Wait"
                },
                {
                    "bus": "297",
                    "span_count": 1,
                    "time": 3.9,
                    "type": "Bus"
                },
                {
                    "stop_name": "Gagarina",
                    "time": 6,
                    "type": "Wait"
                },
                {
                    "bus": "43",
                    "span_count": 1,
                    "time": 3.1,
                    "type": "Bus"
                }
            ],
            "request_id": 5,
            "total_time": 19.0
        }
  • "Map" - SVG-карта маршрутов и остановок

    Пример запроса:

        {
            "id": 6,
            "type": "Map"
        }

Ответом на такой запрос будет текстовое представление SVG-файла:

        {
            "map": "<?xml version="1.0" encoding="UTF-8" ?><svg xmlns="http://www.w3.org/2000/svg" version="1.1"> ... </svg>",
            "request_id": 6
        }

Пример карты:

alt text

В файлах input.json и output.json приведён пример с запросами к транспортному справочнику и ответов на них. В файле output.svg представлена карта данного примера. Другие примеры могут быть высланы по личной просьбе.

Применяемые навыки

ООП, шаблоны, method chaining, стандартные алгоритмы, JSON, SVG, графы.