Проект подготовлен в рамках курсового проекта по компьютерным технологиям 4 семестра МФТИ.
Transport map - это приложение формирующее базу данных, основываясь на данных, полученных с "Портала открытых данных правительства Москвы". Далее с помощью algorithm формируется новая база данных, где находятся оптимальные маршруты, соединяющие любые две пары остановок. Далее подключается server, где и происходит визуализация карты.
Пользователю предоставляются два окна, куда он может вбивать назание остановок, между которыми ему требуется совершить свой путь. Если у пользоателя возникла проблема с названием остановок, то окна подскажут ему решение. Так же пользователь может свободно перемещаться по карте.
При желании можно построить автобусные маршруты для любого другого города, при наличии даных.
- Программы в папке parser
- alg.py в папке "algorithm"
- run.py в папке "server"
Для установки требуется набрать следующую команду в терминале:
git clone git@github.com:Gugush284/transport_card.git Для работы парсера для скачивания данных требуются следующие библиотеки:
requestsjsontimemathsqlite3
Для того, чтоб запустить parser нужно:
- Запустить файл parser_db.py (парсит данные с сайта, записывает их в базу данных)
Для того, чтоб запустить программу, исправляющую databse, нужно:
- Запустить файл edit_db.py (программа заменяет имена маршрутов и остановок на их id)
- Запустить файл edit_db1.py (программа корректирует столбец Route_Num, проверяя его данные на валидность)
- Запустить файл edit_db2.py (программа для вставки обратного пути цепочки остановок для некольцевого маршрута+возможной инверсии обозначений кольцевого маршрута)
- Запустить файл edit_db3.py (программа вставляет координаты остановки в координаты маршрута + вставляет обратные координаты для маршрута в обратную сторону)
Для работы алгоритма необходимо: Либо переимееновать базу данных в example.db, либо в коде alg.py и read_db заменить упоминания файла example.db при использовании библиотеки os на нужное Вам название
Для корректной работы сервера необходимо установить следующие библиотеки:
osflaskflask_wtfsqlitefolium
- Для того, чтобы запустить сервер, необходимо запустить python скрипт run.py и перейти по ссылке.
- На открытой странице небходимо ввести названия первой и последней остановки, и нажать на кнопку отправить чтобы получить маршрут.
- Для того, чтобы вернуться на первоначальную страницу, необоходимо нажать на back to map. Шаблоны для URL страниц находятся в директории app/templates.
- Search.html отвечает за первоначальную страницу, login.html - за страницу с построеным маршрутом.
- Обработка URL запросов и построение маршрута производятся в файле views.py.
- Cкрипт init.py инициализирует сервер и импортирует views.py
- Для построения маршрута и карты со всеми остановками в скрипте views.py создаются файлы basic_map.html и route_map.html
К сожалению приложение не позволяет легко добавлять маршруты в базу данных, оно так же не предоставляет выбор маршрута, а сразу предлагает оптимальный.
- Алгоритм Дейкстры в alg.py будет работать быстрее, если заняться распараллеливанием процессов.
- Алгоритм дублирует остановки в финальной базе данных. Программа работает и так, но увеличивается время поиска и вес самой базы
- База данных требует перестройки: выяснилось, что старый сайт предоставляет несогласованные данные для остановок и маршрута. На перспективу можно построить базу данных самостоятельно, используя другие источники данных
Проект свернут в силу неактуальности (команда сдала курсовую; появились более интересные проекты)
Находится в репозитории
За алгоритм отвечали Кисляк Полина, Егор Барышников
За парсер и выкачку данных Влад Нестеренко
За сервер Дмитрий Михалун