Skip to content

fediukov/ya_transport_catalogue

Repository files navigation

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, графы.

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages