GraphHopper — это быстрый и эффективно использующий память механизм маршрутизации, выпущенный по лицензии Apache 2.0. Его можно использовать в качестве библиотеки Java или автономного веб-сервера для расчета расстояния, времени, пошаговых инструкций и многих дорожных атрибутов для маршрута между двумя или более точками. Помимо маршрутизации «A-to-B», он поддерживает «привязку к дороге», расчет изохроны, мобильную навигацию и многое другое. GraphHopper по умолчанию использует данные OpenStreetMap и GTFS, а также может импортировать другие источники данных.
У нас открытое сообщество и мы приветствуем всех. Сообщите нам о своих проблемах, вариантах использования или просто поздоровайтесь. Пожалуйста, ознакомьтесь с правилами нашего сообщества.
Все вопросы можно задать на нашем форуме, где у нас также есть подразделы, специально посвященные разработчикам, использованию мобильных устройств и нашему компоненту сопоставления карт. Вы также можете поискать ответы в Stackoverflow.
Прочтите наше руководство для получения информации по таким темам, как поиск и исправление ошибок, а также улучшение нашей документации или переводов! У нас также есть хорошие первые шаги для начала работы с вкладом.
Для начала вы можете попробовать GraphHopper Maps, прочитать нашу документацию и установить GraphHopper, включая пользовательский интерфейс Maps, локально.
См. файл журнала изменений для изменений Java API.
Чтобы установить пользовательский интерфейс GraphHopper Maps и веб-службу локально, вам понадобится JVM (>= Java 17) и выполните:
wget https://repo1.maven.org/maven2/com/graphhopper/graphhopper-web/10.0/graphhopper-web-10.0.jar
https://raw.githubusercontent.com/graphhopper/graphhopper/10.x/config-example.yml
http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
java -D " dw.graphhopper.datareader.file=berlin-latest.osm.pbf " -jar graphhopper * .jar server config-example.yml
Через некоторое время вы увидите сообщение журнала с надписью «Сервер — Запущен», затем перейдите по адресу http://localhost:8989/ и увидите карту Берлина. У вас должна быть возможность щелкнуть правой кнопкой мыши на карте, чтобы создать маршрут.
См. документацию, содержащую, например, руководство по повышению прав и руководство по развертыванию.
Образы Docker, созданные сообществом из master
ветки, можно найти здесь (в настоящее время ежедневно). Дополнительную информацию см. в Dockerfile.
Чтобы увидеть в действии функцию маршрутизации дорог GraphHopper, перейдите на GraphHopper Maps.
GraphHopper Maps — это пользовательский интерфейс с открытым исходным кодом, который вы можете найти здесь. Он может использовать этот механизм маршрутизации с открытым исходным кодом или API GraphHopper Directions, который предоставляет API маршрутизации, API оптимизации маршрутов (на основе jsprit), быстрый Matrix API и поиск адресов (на основе Photon). Фотонный проект также поддерживается GraphHopper GmbH. Помимо API GraphHopper Directions используются фрагменты карты от различных поставщиков, по умолчанию используется Omniscale.
Все это доступно бесплатно через зашифрованные соединения и с немецких серверов - для приятного и конфиденциального планирования маршрута!
Начать
Существует веб-сервис, который может использоваться нашим навигационным клиентом Android.
Автономная маршрутизация больше официально не поддерживается, но все равно должна работать, поскольку Android поддерживает большую часть Java. См. версию 1.0 с демо-версией Android, а также этот запрос на включение iOS, включая демо-версию для iOS.
Используйте изохроны для расчета и визуализации зоны достижимости для определенного режима передвижения.
Вы можете попробовать пользовательский интерфейс отладки по адресу http://localhost:8989/maps/isochrone, чтобы увидеть конечные точки /isochrone
и /spt
в действии.
Существует подпроект сопоставления карт для привязки следов GPX к дороге.
GraphHopper поддерживает несколько алгоритмов маршрутизации, таких как Dijkstra и A *
и его двунаправленные варианты. Кроме того, он позволяет очень легко использовать иерархии сокращений (CH). Мы называем это скоростным режимом ; без этой подготовки CH мы называем его гибким режимом .
Скоростной режим обеспечивает очень быструю и легкую реакцию (меньше оперативной памяти) и не использует эвристику. Однако возможны только заранее определенные профили транспортных средств, и такая дополнительная подготовка CH требует времени и ресурсов.
Кроме того, существует гибридный режим , который также требует больше времени и памяти для подготовки, но он гораздо более гибок в отношении изменения свойств для каждого запроса или, например, интеграции данных о трафике. Кроме того, этот гибридный режим медленнее скоростного режима, но на порядок быстрее гибкого режима и использует меньше оперативной памяти на один запрос.
Если подготовка существует, вы можете переключаться между всеми режимами по запросу.
Подробнее о технических деталях читайте здесь.
Мы выбрали лицензию Apache, чтобы вам было проще встраивать GraphHopper в ваши продукты, даже с закрытым исходным кодом. Мы предлагаем вам внести свои изменения обратно, поскольку GraphHopper быстро развивается.
OpenStreetMap напрямую поддерживается GraphHopper. Без потрясающих данных OpenStreetMap GraphHopper вообще был бы невозможен. Для других картографических данных потребуется специальная процедура импорта, см., например, Ordnance Survey, Shapefile, такой как ESRI или Navteq.
GraphHopper написан на Java и официально работает на Linux, Mac OS X и Windows.
Встройте GraphHopper с поддержкой OpenStreetMap в ваше Java-приложение с помощью следующего фрагмента:
< dependency >
< groupId >com.graphhopper</ groupId >
< artifactId >graphhopper-core</ artifactId >
< version >[LATEST-VERSION]</ version >
</ dependency >
Посмотрите наш пример приложения, чтобы быстро начать работу.
Вы можете настроить GraphHopper со знанием Java (с API высокого и низкого уровня), а также без знания Java, используя пользовательские модели.
С помощью веб-модуля мы предоставляем код для запроса GraphHopper через HTTP и максимально уменьшаем использование полосы пропускания. Для этого мы используем эффективное кодирование ломаных линий, алгоритм Рамера-Дугласа-Пойкера и простой фильтр сервлетов GZIP.
На стороне клиента мы предоставляем клиент Java и JavaScript.
GraphHopper также работает на рабочем столе в приложении Java без доступа к Интернету. В целях отладки GraphHopper может создавать векторные тайлы, то есть визуализацию дорожной сети в браузере (см. #1572). Кроме того, через MiniGraphUI в модуле инструментов предоставляется более низкоуровневый пользовательский интерфейс на основе Swing, некоторые визуализации, выполненные с его помощью, см. здесь. Быструю и готовую к использованию визуализацию карты для рабочего стола можно реализовать с помощью Mapsforge или MapsForge vtm.