Реализация модуля маршрутизации, Разработка модуля с Graph Hopper - Разработка модуля маршрутизации с использованием Graph Hopper
Разработка модуля с 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
Анализ предметной области является важнейшим этапом среди всех этапов жизненного цикла системы. Он оказывает существенное влияние на все последующие...
-
Диаграмма вариантов использования - Разработка модуля маршрутизации с использованием Graph Hopper
Перейдем к определению функций, которые должна выполнять разрабатываемая информационная система. Для документирования функциональных требований мы будем...
-
Введение - Разработка модуля маршрутизации с использованием Graph Hopper
Тенденция к разработке автоматизированной системы построения оптимального маршрута между объектами сегодня заметна как никогда. Решение вопроса...
-
Диаграмма развертывания - Разработка модуля маршрутизации с использованием Graph Hopper
Для представления общей конфигурации и топологии распределенной программной системы в UML предназначены диаграммы развертывания. Диаграмма развертывания...
-
Диаграмма последовательности - Разработка модуля маршрутизации с использованием Graph Hopper
При рассмотрении диаграммы использования, было отмечено, что эта диаграмма описывает функциональное назначение системы, время в явном виде в ней не...
-
Важную роль в проектировании информационных систем играют CASE-средства (Computer-Aided Software/System Engineering). Под термином "CASE-средства"...
-
Для того, чтобы строить диаграммы в соответствии с рисунком 2.7, необходимо реализовать алгоритм соединения двух объектов линией. Для отображения линии...
-
Сравнение аналогов - Разработка программы для реализации редактора временных графов синхронизации
Поскольку конечной целью работы был редактор сетей Петри, интегрированный с внешней библиотекой алгебраических вычислений, было рациональным рассмотреть...
-
Тепловое моделирование было проведено в системе ANSYS Icepak. При заданных условиях окружающей среды (температура +40 ОС), температура на корпусе...
-
На рисунке 1 представлен фрагмент электронной таблицы, в которой содержаться исходные данные для решения задачи. Рисунок 1 - Фрагмент электронной...
-
При запуске программы с входными параметрами {"-makexls" "filename. xls" "температурная_точка" "отклонение" "элемент"} происходит извлечение результатов...
-
В процессе разработки программного средства было создано 12 таблиц. Для их создания использовалось графическое средство SqlYong и кодирование на языке...
-
Для написания АИС использовались следующие языки программирования, программные средства и библиотеки: - Язык программирования PHP 5.4; -...
-
С эксплуатационной точки зрения удобно рассматривать то, как устройства в IoT соединяются и "общаются" друг с другом, говоря о технических моделях...
-
Подход, основанный на "больших" предметах и функциональный критерий кластеризации Поддержка предмета в кластере Ci есть относительное число транзакций в...
-
Описание разработанных модулей В разработанной программе имеется 5 модулей. Главный модуль "Program. cs" предназначен для запуска главного окна...
-
SimpleXML. В PHP версии 5.0 и выше появилось расширение для работы с xml структурой. Библитека SimpleXML содержит большое количество методов для работы с...
-
Так как разработанное ранее приложение LargeItem выводит в выходном файле "большие предметы", то используя специальный аналитический инструмент возможно...
-
Множество D с двумя заданными на нем операциями (плюс) и (умножение) называется диоидом, если выполнены следующие аксиомы: § Ассоциативность. §...
-
Для решения задачи №3 необходимо ввести исходные данные в электронную таблицу, т. е. таблицы 1,2 (рисунок 16). Рисунок 16 - Ввод исходных данных в...
-
Средства разработки В качестве целевого языка программирования была выбрана Java из-за ее распространенности. Данная система разделения кода также...
-
Интерфейс Пользовательский интерфейс программного обеспечения является неотъемлемой его частью. Именно через интерфейс конечный пользователь будет...
-
Обоснование выбранного метода При дизайне системы согласно требованиям или при оптимизации существующей необходимо ввести модель, позволяющую не только...
-
Реализация клиентской части приложения На языке JavaScript, в соответствии с диаграммой классов, представленной в приложении Б, были разработаны объекты...
-
IoT Hub новый сервис, предоставляемый в рамках набора сервисов Azure. Этот сервис предоставляет двустороннее взаимодействие между устройствами и облачной...
-
Для реализации вышеописанных пользовательских историй опишем функциональные требования, на которые будет опираться процесс разработки. Во-первых, самый...
-
В настоящее время существует большое количество поисковых систем, но большинство из них основано на методе, в соответствии с которым документы...
-
Реализация с помощью средств быстрой разработки DbForge Studio for SQL Server -- среда разработки для БД SQL Server, создания отчетов по данным, их...
-
Каскадные таблицы стилей находятся в отдельном файле, подключение к странице сайта осуществляется посредством размещения в <head> ... </head>...
-
Работа с контентом Контент системы содержит как отдельные медийные составляющие - текст, таблицы, ссылки, графику, так и связанные между собой....
-
Для проверки соответствия требованиям ТЗ, была поставлена задача разработки 3-D модели корпуса Kyocera KD-PB1D79 при помощи системы AutoCAD. В этой части...
-
Среда реализации и результаты работы, Среда реализации приложения - Разработка покерного робота
Среда реализации приложения Для реализации системы принятия решений, описанной в данной работе, были использованы средства Microsoft Visual Studio 2008,...
-
Выбор средств реализации информационной системы Названные в параграфе 1.4. настоящей работы задачи могут быть решены тремя типами средств автоматизации:...
-
В программе присутствуют следующие основные модули: - PlatformManager - DeviceManager - ScenariosManager - ScenarioEngine - ExportManager - ImportManager...
-
Реализация базы данных - Разработка мобильного приложения расчета и учета оплаты коммунальных услуг
Для создания таблиц базы данных, структура которой представлена на рис. 21 в программе использовались следующие запросы: CREATE TABLE tariffs ( Tariff_id...
-
Для разработки программного обеспечения использован язык Java. Разработка проводилась в среде Eclipse Ganymede 3.2. В качестве СУБД для тестирования...
-
Запросы - Разработка информационной системы "Гостиница"
Одним из семи стандартных объектов Microsoft Access является запрос. Запросы используются для просмотра, анализа и изменения данных в одной или...
-
Оптимизатор - Разработка программного средства, позволяющего оптимизировать SQL-скрипты
Задача оптимизатора в рамках данной дипломной работы - исправлять части SQL-кода, которые могут приводить к дополнительным тратам памяти и ресурсов. На...
-
Проектирование визуальных конструкций Вторая глава описывает процесс трансформации текстового языка JAPE в визуальный язык, который позволит описывать...
-
Разработка клиент-серверной части проекта, то есть связь между клиентским приложением и базой данных, реализуется при помощи специальной библиотеки MySQL...
Реализация модуля маршрутизации, Разработка модуля с Graph Hopper - Разработка модуля маршрутизации с использованием Graph Hopper