Разработка модуля маршрутизации с использованием Graph Hopper

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.03.2016
Размер файла 3,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

  • Содержание
  • Аннотация
  • Введение
  • 1. Основная часть
    • 1.1 Анализ предметной области
  • 2. Практическая часть
    • 2.1 Проектирование
    • 3. Практическая часть
    • 3.1 Проектирование
  • Заключение
  • Список используемой литературы

Аннотация

Пояснительная записка к курсовому проекту «Разработка модуля маршрутизации с использованием Graph Hopper» по дисциплине «Методы и средства проектирования информационных систем». УГАТУ, кафедра геоинформационных систем, Уфа, 2015 г.

Данная работа была проделана с целью создания пользовательской системы построения маршрутов и нахождения оптимального пути.

Стр.24, табл.3, рис.8, библ.4

Теги: Open Street Map, Graph Hopper.

Введение

Тенденция к разработке автоматизированной системы построения оптимального маршрута между объектами сегодня заметна как никогда. Решение вопроса предоставления конечному пользователю возможности получения, использования и обработки информации, связанной с их местоположением и передвижением является очень актуальной задачей. Автоматизированные информационные системы, включающие в себя компонент навигационных технологий, применяются в самых разнообразных областях человеческой деятельности. В современном мире часто приходится пользоваться средствами маршрутизации. В данном случае на первый план выходят вопросы построения оптимальных маршрутов между объектами, просмотр всего пути и движение по обозначенному пути. Вопрос решения данных задач и поднимается в создании геоинформационных систем, которые в свою очередь имеют возможность построения оптимально пути движения, что, безусловно, обуславливает их актуальность.

Геоинформационная система (ГИС, также географическая информационная система) -- информационная система, предназначенная для сбора, хранения, анализа и графической визуализации пространственных данных и связанной с ними информации о представленных в ГИС объектах. Термин также используется в более узком смысле -- ГИС как инструмент (программный продукт), позволяющий пользователям искать, анализировать и редактировать цифровые карты. Геоинформационные системы широко используются в самых разных отраслях науки, управления и хозяйства. ГИС - это инструментальное средство для управления бизнес информацией любого типа с точки зрения ее пространственного местоположения. Приложения этой технологии в сфере пользования разнообразны. Основные решаемые с ее помощью задачи можно сгруппировать по ответам на базовые вопросы: "Где?", "Кто (или Что)?" и "Как?". Эффективность использования геоинформационных технологий достигается картографической формой представления информации и оперативными возможностями ее анализа. Разноплановая информация представляется в виде отдельных слоев, а их совместный анализ в разных комбинациях позволяет получать дополнительную информацию в виде производных слоев с их картографическим отображением.[1]

Цель проекта - разработка модуля построения оптимального маршрута между объектами, выбранными конечным пользователем. Для достижения поставленной цели необходимо решить следующие задачи:

- провести анализ предметной области;

- проектирование физической модели Graph Hopper;

- выбрать способ реализации системы;

- изучить особенности построения графа дорог.

Цель и задачи определили структуру курсового проекта. В первой главе производится анализ предметной области. Во второй обосновывается выбор способа реализации системы и функциональные требования. В третьей описывается этап разработки проекта: решаются ключевые задачи, создается графический интерфейс системы, выявляются основные аспекты развертывания системы.

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

Автоматизированная система расчета оптимального маршрута между объектами ориентирована на пользователей, которые стремятся оптимизировать и наилучшим образом управлять транспортными передвижениями.

Для документирования основных вех разработки системы и структурированного представления выработанных артефактов использованы средства унифицированного языка моделирования - UML, языка графического описания для объектного моделирования в области разработки программного обеспечения. UML является языком широкого профиля, это открытый стандарт, использующий графические обозначения для создания абстрактной модели системы, называемой UML-моделью [1].

При реализации проекта было изучено значительное число литературных источников, руководств и статей, охватывающих выбранную тематику. Полный их список представлен в конце проекта.

1. Основная часть:

1.1 Анализ предметной области

Анализ предметной области является важнейшим этапом среди всех этапов жизненного цикла системы. Он оказывает существенное влияние на все последующие этапы, являясь в то же время наименее изученным и понятным процессом. На этом этапе, во-первых, необходимо понять, что предполагается сделать, а во-вторых, задокументировать выдвинутые предложения, так как если проектные требования не зафиксированы и не сделаны доступными для участников разработки, то они вроде бы и не существуют вовсе. При этом язык, на котором формулируются результаты анализа, должен быть достаточно прост и понятен.

Путешествие на собственном авто приносит не только незабываемые впечатления, но и предоставляет полную свободу выбора. Можно подобрать один оптимальный маршрут, который будет и удобен, и комфортен, и позволит насладиться всей прелестью достопримечательностей и окружающего пейзажа, в тех местах, которые подобраны самостоятельно. Чтобы поездка не омрачилась разными неприятными ситуациями, такими, как блуждание в поисках нужной дороги, или же полным непониманием того, куда занесла судьба на четырех колесах, нужно не только правильно рассчитать маршрут, но и иметь наглядное представление о нем. Не каждый автомобилист имеет в своем распоряжении навигатор, а если и имеет, то не все устройства могут рассчитать маршрут на автомобиле в полном объеме, предоставляя водителю автомобиля только общие данные о том, каков будет путь из пункта А в пункт Б. Но есть вариант намного лучше, современный геосервис GraphHopper предоставляет водителям возможность рассчитать маршрут самостоятельно, не тратя на это много времени.

GraphHopper - это быстрый роутинговый движок, написанный на Java. Graphhopper строит маршруты для машин, велосипедов и пешеходов по всей планете.

К его отличительным особенностям можно отнести:

- работу с картографическими данными OpenStreetMap

- эффективное использования памяти

- широкие возможности по настройке

- свободная лицензия Apache

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

Пользователю предоставляется пользовательский интерфейс (форма), с которым он непосредственно работает (см.рис.1).

Рисунок 1 - Форма пользователя

Какие данные можно получить, заполнив форму для прокладки нужного маршрута:

­ Полный расчет расстояния между объектами

­ При расчете весь путь будет разбит на определенные участки.

­ Добавление нескольких точек, проезд через которые интересуют пользователя

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

Частным случаем такой реализации я рассматриваю разработку модуля, который будет строить маршруты с некоторыми критериями. Область построения ограничивает точку «ДО» областью Республики Крым. То есть пользователю в конечном результате представиться геосистема, в которой он указывает начальные координаты (название объекта) и дополнительные точки проезда произвольной области, и конечную точку, которая будет отвечать требованиям ограничения.

2. Практическая часть

2.1 Проектирование информационной модели и Функциональные требования к системе.

Важную роль в проектировании информационных систем играют CASE-средства (Computer-Aided Software/System Engineering). Под термином «CASE-средства» понимаются программные средства, поддерживающие процессы создания и сопровождения информационных систем, включая анализ и формулировку требований, проектирование прикладного программного обеспечения и баз данных, генерацию кода, тестирование, документирование, обеспечение качества, конфигурационное управление и управление проектом, а также другие процессы. CASE-средства позволяют максимально систематизировать и автоматизировать все этапы разработки программного обеспечения [1].

Этапы анализа и проектирования вне зависимости от модели жизненного цикла являются определяющими при построении информационных систем (ИС). CASE-средства обеспечивают качество принимаемых технических решений и подготовку проектной документации. При этом большую роль играют методы визуального представления информации. Это предполагает построение структурных или иных диаграмм в реальном масштабе времени, использование многообразной цветовой палитры, сквозную проверку синтаксических правил. Графические средства моделирования предметной области позволяют разработчикам в наглядном виде изучать существующую ИС, перестраивать ее в соответствии с поставленными целями и имеющимися ограничениями.

В настоящее время используется большое количество подходов, которые позволяют, так или иначе, создавать модели бизнес-процессов предприятий. Как бы то ни было, их использование гарантирует стандартизированный подход к описанию, позволяет накапливать опыт и практические навыки и на протяжении длительного времени обеспечивать понимание созданных моделей другими сотрудниками.

Важнейшими из подходов к проектированию ИС являются структурный (функциональный) и объектно-ориентированный.

Объектно-ориентированный подход использует объектную декомпозицию, при этом статическая структура системы описывается в терминах объектов и связей между ними, а поведение системы описывается в терминах обмена сообщений между объектами. Объектно-ориентированная технология имеет много преимуществ. При моделировании эту систему можно модифицировать и дополнить путем добавления новых свойств к уже имеющимся компонентам или путем создания новых компонентов. При таком подходе классы, созданные во время проектирования системы, можно использовать повторно, что позволяет существенно снизить в дальнейшем время разработки. При проектировании сложных многоуровневых ИС целесообразно использовать объектно-ориентированный подход. Особенность данного подхода заключается в описании взаимодействующих объектов многоуровневой ИС. При этом каждый объект ИС обладает собственным поведением, моделирующим поведение реального объекта.

Унифицированный язык моделирования (UML) - это язык для специфицирования, визуализации, конструирования и документирования на основе объектно-ориентированный подхода разные виды систем. UML представляет собой набор диаграмм, описывающих предметную область как в статике (объектные диаграммы), так и в динамике (диаграммы жизненных циклов объектов), а также описывает программную среду с помощью диаграмм модулей. С помощью этого языка достаточно просто переложить результаты анализа на конкретную реализацию с помощью понятия модулей или компонент, которые достаточно часто прямо отражают домены предметной области. В данной выпускной квалификационной работе будут использоваться следующие диаграммы: вариантов использования, последовательности, компонентов, развертывания.

В рамках языка UML все представления о модели сложной системы фиксируются в виде специальных графических конструкций, получивших название диаграмм. В терминах языка UML определены следующие виды диаграмм:

- диаграмма вариантов использования (use case diagram);

- диаграмма классов (class diagram);

- диаграммы поведения (behavior diagrams):

- диаграмма состояний (statechart diagram);

- диаграмма деятельности (activity diagram);

- диаграммы взаимодействия (interaction diagrams):

- диаграмма последовательности (sequence diagram);

- диаграмма кооперации (collaboration diagram);

- диаграммы реализации (implementation diagrams):

- диаграмма компонентов (component diagram);

- диаграмма развертывания (deployment diagram).

2.1.1 Диаграмма вариантов использования

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

- определить общие границы и контекст моделируемой предметной области;

- сформулировать общие требования к функциональному поведению проектируемой системы;

- разработать исходную концептуальную модель системы для ее последующей детализации в форме логических и физических моделей;

- подготовить исходную документацию для взаимодействия разработчиков системы с ее заказчиками и пользователями.

Суть диаграммы вариантов использования состоит в следующем. Проектируемая система представляется в виде множества сущностей или актеров, взаимодействующих с системой с помощью вариантов использования. При этом актером (actor) или действующим лицом называется любая сущность, взаимодействующая с системой извне. Это может быть человек, техническое устройство, программа или любая другая система, которая может служить источником воздействия на моделируемую систему так, как определит сам разработчик [2]. Вариант использования служит для описания сервисов, которые система предоставляет актеру. Диаграмма вариантов использования может дополняться пояснительным текстом, который раскрывает смысл или семантику составляющих ее компонентов. Цель варианта использования заключается в том, чтобы определить законченный аспект или фрагмент поведения некоторой сущности без раскрытия её внутренней структуры. В качестве такой сущности может выступать система или любой элемент модели, который обладает собственным поведением. Каждый вариант использования соответствует отдельному сервису, который предоставляет моделируемая сущность по запросу актера, то есть определяет способ применения этой сущности. Сервис, который инициализируется по запросу актера, представляет собой законченную неделимую последовательность действий.

На рисунке 2 показана диаграмма вариантов использования для модуля маршрутизации, построенные по выбранным параметрам конечного пользователя. Человеческие фигурки обозначают действующих лиц, отдельный вариант использования обозначается на диаграмме эллипсом, возле которого содержится его краткое название или имя в форме глагола с пояснительными словами, а линии и стрелки - различные связи между действующими лицами и вариантами использования.

Рисунок 2 - Диаграмма прецедентом

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

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

В изображенной диаграмме показано, что для осуществления успешного поиска объекта (объектов) пользователь должен произвести следующие действия:

- провести процедуру инициализации;

- ввести параметры для начальной точки (точка А);

- ввести параметры для промежуточной точки (при необходимости);

- ввести параметры для конечной точки (с учетом ограничения);

Также пользователю предоставляется возможность просмотра навигационного журнал, в котором предоставляется подробное следование построенному маршруту.

Модуль координации работы Graph_hopper в свою очередь должен выполнять следующие действия:

- вычислять координаты точек, веденных пользователем;

- запросить атрибутивную информацию с OSM;

- найти название вычисленных точек;

- ограничить область построения маршрута;

- построение оптимального маршрута;

2.1.2 Диаграмма последовательности

При рассмотрении диаграммы использования, было отмечено, что эта диаграмма описывает функциональное назначение системы, время в явном виде в ней не присутствует. Временной же аспект поведения может иметь существенное значение при моделировании синхронных процессов, описывающих взаимодействия объектов. Для моделирования взаимодействия объектов во времени в языке UML используются диаграммы последовательности.

На диаграмме последовательности изображаются только те объекты, которые непосредственно участвуют во взаимодействии. Ключевым моментом для диаграмм последовательности является динамика взаимодействия объектов во времени.

В UML диаграмма последовательности имеет как бы два измерения. Первое слева направо в виде вертикальных линий, каждая из которых изображает линию жизни отдельного объекта, участвующего во взаимодействии. Крайним слева на диаграмме изображается объект, который является инициатором взаимодействия. Правее изображается другой объект, который непосредственно взаимодействует с первым. Таким образом, все объекты на диаграмме последовательности образуют некоторый порядок, определяемый очередностью или степенью активности объектов при взаимодействии друг с другом.

На рисунке 3 показана диаграмма последовательности для модуля маршрутизации, построенные по выбранным параметрам конечного пользователя.

Рисунок 3 - Диаграмма последовательности

2.1.3 Диаграмма развертывания

Для представления общей конфигурации и топологии распределенной программной системы в UML предназначены диаграммы развертывания.

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

Те компоненты, которые не используются на этапе исполнения, на диаграмме развертывания не показываются.

Диаграмма развертывания содержит графические изображения процессоров, устройств, процессов и связей между ними. В отличие от диаграмм логического представления, диаграмма развертывания является единой для системы в целом, поскольку должна всецело отражать особенности ее реализации. Разработка диаграммы развертывания, как правило, является последним этапом спецификации модели программной системы.

При разработке диаграммы развертывания преследуют следующие цели:

- определить распределение компонентов системы по ее физическим узлам;

- показать физические связи между всеми узлами реализации системы на этапе ее исполнения;

- выявить узкие места системы и реконфигурировать ее топологию для достижения требуемой производительности.

На рисунке 4 показана диаграмма развертывания, показывающая, как устроена архитектура системы маршрутизации.

В архитектуре системы выделяются открытый внешний контур системы, предназначенный для открытого и публичного использования геопространственных данных для построения маршрутов, и закрытый внутренний контур, предназначенный для формирования геопространственных данных (ввода, редактирования, актуализации).

Рисунок 4 - Диаграмма развертывания

3. Реализация модуля маршрутизации

3.1 Разработка модуля с Graph Hopper

GraphHopper - это быстрый роутинговый движок, написанный на Java. К его отличительным особенностям можно отнести:

· работу с данными OpenStreetMap

· эффективное использования памяти

· широкие возможности по настройке

· свободная лицензия Apache

К роутинговым движкам относится программное обеспечение, позволяющее прокладывать маршрут на карте из одной точки в другую по имеющемуся графу. Существует большое количество программ данного рода, одна из наиболее известных - Open Source Routing Machine (OSRM), написанная на С++.

Так как код GraphHopper полностью открыт, то можно использовать необходимые Java-классы в своём собственном приложении. Кроме того, GraphHopper может быть использован в качестве Веб-сервиса маршрутизации, предоставляющего соответствующий HTTP API [4].

Рисунок 5 - Пример работы Graph Hopper

Последний из методов мы использовали для разработки нашего модуля.

Для этого необходимо было выполнить несколько шагов, а именно:

1. Зарегистрироваться на официальном сайте https://graphhopper.com/

2. Для использования API Направления необходимо получить ключ API. Получить его можно бесплатно после регистрации

Рисунок 6 - Получение API-ключа

3. Скачать с репозитория GitHab zip-файлы, для локального использования

4. Прочитать документацию для API Routing

5. Количество лимитов на запросы ограничено, чтобы увеличить лимиты запроса для производства необходимо оплатить онлайн в течение нескольких минут с помощью кредитной карты.

6. После получения API-ключа присваиваем его переменной key и получаем первый запрос [2]:

"https://graphhopper.com/api/1/route?point=51.131108%2C12.414551&point=48.224673%2C3.867187&vehicle=car&locale=de&debug=true&points_encoded=false&key=[YOUR_KEY]"

Таблица 1 -Параметры маршрутизации API

Параметр

По умолчанию

Описание

point

-

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

locale

en

Языковой результат. Например, pt_PT для португальском или де ля немецкого

optimize

false

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

instructions

true

Если должна быть рассчитана и возвращена навигационная инструкция .

vehicle

car

Транспортное средство, такое как автомобиль, велосипед, пешком.

points_encoded

true

Если false массив GeoJSON в точке возвращается. Если true полученный маршрут будет закодирован. Вам понадобится специальная обработка для декодирования этой строки на стороне клиента, увидеть Java или JavaScript код.

calc_points

true

Если должна быть рассчитана на все точки на маршруте. Иногда только необходимо расстояние и время.

debug

false

Если true, то будет вывод будет отформатирован.

Таблица 2 - Параметры геокодирования

Результат JSON

JSON path/attribute

Description

paths

Массив возможных путей

paths[0].distance

Общая протяженность маршрута, в метрах

paths[0].time

Общее время в пути, в минутах, секундах

paths[0].bbox

Ограничительные рамки маршрута, формат:

minLon, minLat, maxLon, maxLat

paths[0].instructions

Содержит информацию о командах для данного маршрута. Последняя инструкция всегда принимает 0 мс и 0meter.

paths[0].instructions[0].text

Описание того, что пользователь должен сделать для того, чтобы следить за маршрутом. Язык зависит от локального параметра.

paths[0].instructions[0].distance

Расстояние для этой команды, в метре

paths[0].instructions[0].time

Продолжительность для этой команды, в мс

paths[0].instructions[0].interval

Массив, содержащий первый и последний индекс (по отношению к путям [0] .points) точек для этой команды. Это полезно знать, какая часть маршрута действительна.

paths[0].instructions[0].exit_number

[optional] Only available for USE_ROUNDABOUT instructions. The count of exits at which the route leaves the roundabout.

Рисунок 7 - Пример выходных данных

В каждой системе маршрутизации, неотъемлемой частью является геокодирование. Геокодирование есть процесс, преобразующий описание местоположения (например, координаты, адрес или название места) в местоположение на поверхности Земли. Геокодировать можно, вводя описание одного местоположения за один раз или вводя описание сразу нескольких местоположений в таблице.

Рисунок 8 - Пример результата геокодирования

В результате геокодирования получаются географические объекты с атрибутами, которые можно использовать для составления карт, построения маршрутов или пространственного анализа.С помощью геокодирования можно быстро находить различные виды местоположений. Естественно что и Graph Hopper не обходится без этого.

Пример ответа геокодирования (ниже представлена таблица описания URL - параметров):

https://graphhopper.com/api/1/geocode?q=berlin&locale=de&debug=true&key=[YOUR_KEY]

Таблица 3 - Параметры геокодирования

Parameter

Default

Description

Q

-

Укажите адрес

locale

en

Показать результаты поиска на указанном языке. Доступны: французский (FR), английский (EN), немецкий (DE), русский - по умолчанию-EN

limit

10

Желаемое количество результатов (автоподбор)

debug

false

Если true, то результат будет выведен.

point

-

Смещение расположения в формате "широта, долгота», например, точка = 45.93272,11.58803

Для того, чтобы использовать «движок» Graph Hopper нам необходимо было изучить все стороны, вплоть до оформления графического интерфейса. Изучив все файлы css и js, мы изменили внешний вид и оставили необходимую функциональность, при этом поменяв базовую карту на OSM.

Рисунок 8 - Результат преобразований

Заключение

В результате выполнения курсовой работы была спроектирована работа модуля для построения маршрутов. Для детального понимания системы маршрутизации мы составили диаграммы «Прецедентов, «Последовательности», «Развертывания». Рассмотрели также реализацию модуля Graph Hopper.

GraphHopper специально разработан для обеспечения пользовательских путей и нахождения кратчайших путей между любыми объектами. В дополнение к этому, возможно легко использовать GraphHopper непосредственно в приложениях, которые может разрабатывать каждый. Приложение также идеально подходит для выполнения запросов на Android приложение в автономном режиме.

Список используемой литературы

1. Грекул В., Проектирование информационных систем / В. Грекул, Г. Денищенко, Н. Коровкина. М.: Прогресс, 2005. - 304 с.

2. Грехем И. Объектно-ориентированные методы. Принципы и практика / И. Грехем. - М. : Вильямс, 2004. - 880 с.

Электронные ресурсы:

3. http://studopedia.ru/3_19404_geoinformatsionnie-sistemi.html

4. https://graphhopper.com/api/1/docs/routing/

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.