ВВЕДЕНИЕ 5
1 Анализ предметной области 7
1.1 Описание объекта исследования 7
1.2 Разработка моделей BPMN процессов 12
1.3 Анализ существующих решений 14
1.4 Хранение и обработка данных 15
1.5 Актуализация данных 16
1.6 Разработка требований к системе 17
1.7 Прецеденты системы 18
1.8 Устав проекта 20
1.9 Вывод по главе 21
2 Проектирование модулей системы 22
2.1 Структура пакетов 22
2.2 Проектирование Базы данных 24
2.3 Проектирование метода для создания ограничений 27
2.4 Проектирование модификации GraphHopper 29
2.4.1 Загрузка данных в систему 29
2.4.2 Периодическая задача на обновление 30
2.4.3 Создание api метода в DataContainer 31
2.4.4 Проектирование фильтра 31
2.4.5 Реализация использования в алгоритмах маршрутизации 31
2.4.6 Метод для проверки геометрии (waypoint) 33
2.4.7 Вывод на клиенте 34
2.5 Вывод по главе 34
3 Разработка программной части 36
3.1 Класс «Restriction» 36
3.2 Класс «RestrictionContainer» 37
3.3 Класс «UnionedGoContainer» 37
3.4 Класс «EdgeNodeInfo» 39
3.5 Класс RestrictionEdgeFilter 40
3.6 Класс Restrictionjoiner 40
3.7 Класс RestrictionWorker 41
3.8 Класс RestrictionVariantsWorker 42
3.9 Тестирование 44
3.9.1 Класс RestrictionJoinerTest 45
3.9.2 Класс RestrictionEdgeFilterTest 46
3.9.3 Класс UnionedGoContainerTest 47
3.9.4 Класс EdgeNodelnoTest 48
3.10 Клиентская часть 48
3.11 Вывод по главе 51
ЗАКЛЮЧЕНИЕ 52
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 54
ПРИЛОЖЕНИЕ А 55
ПРИЛОЖЕНИЕ Б 80
Организация ООО «Такстелеком» занимается разработкой программных решений, в частности разработкой и поддержкой программных продуктов для такси «Maxim». Компания разрабатывает решения для работы службы заказов такси, мобильные решения для клиентов системы и водителей, гео- информационную систему для построения маршрутов, хранения и обработки гео данных. В рамках данных решений разрабатывается проект GraphHoper, который отвечает за построение графа дорожной карты, формирование и обработку различных данных связанных с дорожной картой. А также предоставляет программный интерфейс для создания оптимальных маршрутов по этому графу, расчета расстояния маршрута и времени проезда по нему, поиска водителей и т.д.
Для создания оптимального маршрута система должна учитывать много различных показателей и параметров, различные ситуации на дорогах, а также правила дорожного движения. На данный момент система учитывает состояние дорог, различные типы дорог, пробки на дорогах и основные дорожные ограничения, но не имеет функциональности для работы со знаками временных ограничений, период действия которых определяется днем недели или временем суток. Ограничение привязывается к конкретному направлению движения. Данные ограничения не позволяют проехать с одной улицы на другую , из-за чего построенный маршрут может быть не всегда оптимальным, или даже не корректным. Также данная функциональность неплохо дополнила бы механизм блокировок, для временного ограничения доступа из одного участка дороги к другому.
Целью данной работы является повышение эффективности построения маршрута за счет разработки временных ограничений, которая позволит учитывать знаки с временными ограничениями, а также предоставит гибкий инструмент для объезда различных препятствий, загруженных дорог. Таким образом, маршрут станет более оптимальным. Для достижения данной цели необходимо:
- Разработать архитектуру данных;
- Реализовать начальную инициализацию данных в системе;
- Реализовать использование данных в системе;
- Реализовать программный интерфейс для создания временных ограничений сторонними сервисами;
- Протестировать новую функциональность системы;
При анализе данной задачи были найдены лучшие варианты для представления требуемых модификаций, а также был выявлен и описан объект исследования. Для модифицируемой части системы составлены bpmn диаграммы процессов, описаны прецеденты. Проанализированы различные варианты реализации модификации, определенны лучшие из них. На основе требований составлено техническое задание.
Для решения поставленной цели были выполнены следующие задачи:
- При проектировании системы были выявлены критические места системы;
- Подробно разобрана база данных и ее структура, определен формат и место хранения данных;
- Спроектирован алгоритм проверки испорченных данных;
- Рассмотрено и спроектировано создание временных ограничений;
- Был выбран вариант создания ограничений через внешний клиент, для того чтобы системы была наиболее гибкая;
- Также спроектирован программный интерфейс и алгоритм его работы;
- Описан процесс загрузки данных в систему;
- Спроектирована задача на периодическое обновление данных, для того чтобы не было необходимости перезагружать систему при добавлении новых данных;
- Составлена диаграмма пакетов системы;
- Были рассмотрены и описаны классы и их объекты;
- Реализованные классы были протестированы;
Таким образом, была спроектирована модификация для внедрения в гео информационную систему компании, которая позволяет хранить и использовать всегда актуальные данные, создавать, отлаживать и редактировать временные ограничения, которые в свою очередь позволяют строить более оптимальные маршруты. Для стабильности системы при последующей ее модификации основные классы были протестированы. Классы были написаны таким образом, чтобы они документировали сами себя, а также добавлена документация в формате javaDoc.