GraphHopper est un moteur de routage rapide et économe en mémoire publié sous licence Apache 2.0. Il peut être utilisé comme bibliothèque Java ou serveur Web autonome pour calculer la distance, le temps, les instructions étape par étape et de nombreux attributs routiers pour un itinéraire entre deux points ou plus. Au-delà de cet itinéraire « A vers B », il prend en charge le « snap to road », le calcul d'isochrone, la navigation mobile et bien plus encore. GraphHopper utilise les données OpenStreetMap et GTFS par défaut et peut également importer d'autres sources de données.
Nous avons une communauté ouverte et accueillons tout le monde. Faites-nous part de vos problèmes, de vos cas d'utilisation ou dites-nous simplement bonjour. Veuillez consulter nos directives communautaires.
Toutes les questions sont adressées à notre forum où nous avons également des sous-sections spécialement destinées aux développeurs, à l'utilisation mobile et à notre composant de correspondance de cartes. Vous pouvez également rechercher des réponses dans Stackoverflow.
Lisez notre guide de contribution pour obtenir des informations sur des sujets tels que la recherche et la correction de bugs et l'amélioration de notre documentation ou de nos traductions ! Nous avons également de bons premiers numéros pour commencer à contribuer.
Pour commencer, vous pouvez essayer GraphHopper Maps, lire notre documentation et installer GraphHopper, y compris l'interface utilisateur de Maps, localement.
Consultez le fichier journal des modifications pour les modifications de l'API Java.
Pour installer l'interface utilisateur GraphHopper Maps et le service Web localement, vous avez besoin d'une JVM (>= Java 17) et effectuez :
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
Après un moment, vous voyez un message de journal avec « Serveur - Démarré », puis allez sur http://localhost:8989/ et vous verrez une carte de Berlin. Vous devriez pouvoir faire un clic droit sur la carte pour créer un itinéraire.
Voir la documentation qui contient par exemple le guide d'élévation et le guide de déploiement.
Les images Docker créées par la communauté à partir de la branche master
peuvent être trouvées ici (actuellement quotidiennement). Voir le Dockerfile pour plus de détails.
Pour voir la fonctionnalité de calcul d'itinéraire routier de GraphHopper en action, veuillez vous rendre sur GraphHopper Maps.
GraphHopper Maps est une interface utilisateur open source, que vous pouvez trouver ici. Il peut utiliser ce moteur de routage open source ou l'API GraphHopper Directions, qui fournit l'API de routage, une API d'optimisation de route (basée sur jsprit), une API Matrix rapide et une recherche d'adresse (basée sur photon). Le projet photon est également soutenu par GraphHopper GmbH. En plus de l'API GraphHopper Directions, des tuiles cartographiques de divers fournisseurs sont utilisées, la valeur par défaut étant Omniscale.
Tout cela est disponible gratuitement, via des connexions cryptées et depuis des serveurs allemands - pour une expérience de planification d'itinéraire agréable et privée !
Commencer
Il existe un service Web qui peut être utilisé par notre client de navigation Android.
Le routage hors ligne n'est plus officiellement pris en charge mais devrait toujours fonctionner car Android prend en charge la plupart de Java. Voir la version 1.0 avec la démo Android et voir également cette pull request du fork iOS comprenant une démo pour iOS.
Utilisez les isochrones pour calculer et visualiser la zone accessible pour un certain mode de déplacement.
Vous pouvez essayer l'interface utilisateur de débogage sur http://localhost:8989/maps/isochrone pour voir les points de terminaison /isochrone
et /spt
en action.
Il existe le sous-projet de correspondance de cartes pour aligner les traces GPX sur la route.
GraphHopper prend en charge plusieurs algorithmes de routage, tels que Dijkstra et A *
et ses variantes bidirectionnelles. De plus, il vous permet d’utiliser très facilement les hiérarchies de contraction (CH). Nous appelons ce mode vitesse ; sans cette préparation CH, on parle de mode flexible .
Le mode vitesse est livré avec des réponses très rapides et légères (moins de RAM) et n'utilise pas d'heuristique. Cependant, seuls des profils de véhicules prédéfinis sont possibles et cette préparation supplémentaire du CH prend du temps et des ressources.
Ensuite, il y a le mode hybride qui nécessite également plus de temps et de mémoire pour la préparation, mais il est beaucoup plus flexible en ce qui concerne la modification des propriétés par requête ou par exemple l'intégration des données de trafic. De plus, ce mode hybride est plus lent que le mode vitesse, mais il est un ordre de grandeur plus rapide que le mode flexible et utilise moins de RAM pour une requête.
Si les préparations existent, vous pouvez basculer entre tous les modes au moment de la demande.
En savoir plus sur les détails techniques ici.
Nous avons choisi la licence Apache pour vous permettre d'intégrer facilement GraphHopper dans vos produits, même fermés. Nous vous suggérons de contribuer à vos modifications, car GraphHopper évolue rapidement.
OpenStreetMap est directement pris en charge par GraphHopper. Sans les données étonnantes d'OpenStreetMap, GraphHopper ne serait pas du tout possible. D'autres données cartographiques nécessiteront une procédure d'importation personnalisée, voir par exemple Ordnance Survey, Shapefile comme ESRI ou Navteq.
GraphHopper est écrit en Java et fonctionne officiellement sous Linux, Mac OS X et Windows.
Intégrez GraphHopper avec la prise en charge d'OpenStreetMap dans votre application Java via l'extrait suivant :
< dependency >
< groupId >com.graphhopper</ groupId >
< artifactId >graphhopper-core</ artifactId >
< version >[LATEST-VERSION]</ version >
</ dependency >
Consultez notre exemple d’application pour démarrer rapidement.
Vous pouvez personnaliser GraphHopper avec des connaissances Java (avec une API de haut et bas niveau) et également sans connaissances Java en utilisant les modèles personnalisés.
Avec le module Web, nous fournissons du code pour interroger GraphHopper via HTTP et réduire autant que possible l'utilisation de la bande passante. Pour cela, nous utilisons un codage polyligne efficace, l'algorithme Ramer – Douglas – Peucker et un simple filtre de servlet GZIP.
Côté client, nous fournissons un client Java et JavaScript.
GraphHopper fonctionne également sur le bureau dans une application Java sans accès à Internet. À des fins de débogage, GraphHopper peut produire des tuiles vectorielles, c'est-à-dire une visualisation du réseau routier dans le navigateur (voir #1572). Une interface utilisateur basée sur Swing de plus bas niveau est également fournie via MiniGraphUI dans le module d'outils, voir quelques visualisations réalisées avec ici. Une visualisation cartographique rapide et prête pour la production pour le bureau peut être implémentée via mapsforge ou mapsforge vtm.