An open API service indexing awesome lists of open source software.

https://github.com/helleb0re/cpp-transport-catalogue

Транспортный справочник
https://github.com/helleb0re/cpp-transport-catalogue

cpp cpp17 graph-algorithms protobuf

Last synced: 12 months ago
JSON representation

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

Awesome Lists containing this project

README

          

# **Транспортный каталог**

Проект траспортного каталога, который позволяет создать базу данных общественного транспорта, визуализировать маршруты в формате SVG и найти кратчайший путь между остановками.

В проекте используются следующие технологии:
- JSON - формат взаимодействия с сервером
- Protobuf - хранение данных БД в сериализованном виде

## **Использование**
- Запрос на добавление данных в БД
```json
"base_requests": [
// добавление информации о маршруте
{
"type": "Bus",
"name": "134",
"stops": ["Stop-1", "Stop-2"],
"is_roundtrip": false
},
// добавление информации об остановках
{
"type": "Stop",
"name": "Stop-1",
"latitude": 34.325467,
"longitude": 45.351613,
"road_distances": {"Stop-2": 1500}
},
{
"type": "Stop",
"name": "Stop-2",
"latitude": 36.325467,
"longitude": 45.121613,
"road_distances": {"Stop-1": 1500}
}
]
```
- Запрос на получение данных из БД
```json
"stat_requests": [
// получение карты в SVG формате
{ "id": 1, "type": "Map" },
// получение информации об остановке
{ "id": 2, "type": "Stop", "name": "Stop-1" },
// получение информации о маршруте
{ "id": 3, "type": "Bus", "name": "134" }
]
```

- Ответ БД на запросы
```json
[
// карта в SVG формате
{
"map": "\n\n\n134\n134\n134\n134\n\n\nStop-1\nStop-1\nStop-2\nStop-2\n",
"request_id": 1
},
// Информация об остановке Stop-1
{
"buses": [
"134"
],
"request_id": 2
},
// Информация о маршруте 134
{
"curvature": 0.00671543,
"request_id": 3,
"route_length": 3000,
"stop_count": 3,
"unique_stop_count": 2
}
]
```
- Изображение карты

## **Зависимости**

1. [С++17](https://en.cppreference.com/w/cpp/17)
2. [GCC(MinGW-w64)](https://www.mingw-w64.org/) 11+ version requires
3. [CMake](https://cmake.org) 3.8 version requires
4. [Protobuf](https://protobuf.dev/) use proto3