GraphHopper es un motor de enrutamiento rápido y eficiente en memoria lanzado bajo la licencia Apache 2.0. Se puede utilizar como una biblioteca Java o un servidor web independiente para calcular la distancia, el tiempo, las instrucciones paso a paso y muchos atributos de la carretera para una ruta entre dos o más puntos. Más allá de esta ruta "A-to-B", admite "ajustarse a la carretera", cálculo isócrono, navegación móvil y más. GraphHopper utiliza datos OpenStreetMap y GTFS de forma predeterminada y también puede importar otras fuentes de datos.
Tenemos una comunidad abierta y damos la bienvenida a todos. Háganos saber sus problemas, casos de uso o simplemente salude. Consulte nuestras pautas comunitarias.
Todas las preguntas van a nuestro foro donde también tenemos subsecciones especialmente para desarrolladores, uso de dispositivos móviles y nuestro componente de coincidencia de mapas. También puedes buscar respuestas en Stackoverflow.
Lea nuestra guía de contribución para obtener información sobre temas como encontrar y corregir errores y mejorar nuestra documentación o traducciones. También tenemos buenos primeros números para empezar a contribuir.
Para comenzar, puede probar GraphHopper Maps, leer nuestra documentación e instalar GraphHopper, incluida la interfaz de usuario de Maps, localmente.
Consulte el archivo de registro de cambios para conocer los cambios en la API de Java.
Para instalar la interfaz de usuario de GraphHopper Maps y el servicio web localmente necesita una JVM (>= Java 17) y haga:
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
Después de un rato, verá un mensaje de registro con "Servidor - Iniciado", luego vaya a http://localhost:8989/ y verá un mapa de Berlín. Debería poder hacer clic derecho en el mapa para crear una ruta.
Consulte la documentación que contiene, por ejemplo, la guía de elevación y la guía de implementación.
Las imágenes de Docker creadas por la comunidad desde la rama master
se pueden encontrar aquí (actualmente a diario). Consulte el Dockerfile para obtener más detalles.
Para ver la función de enrutamiento de carreteras de GraphHopper en acción, vaya a GraphHopper Maps.
GraphHopper Maps es una interfaz de usuario de código abierto, que puede encontrar aquí. Puede utilizar este motor de enrutamiento de código abierto o la API GraphHopper Directions, que proporciona la API de enrutamiento, una API de optimización de rutas (basada en jsprit), una API Matrix rápida y una búsqueda de direcciones (basada en fotones). El proyecto Photon también cuenta con el apoyo de GraphHopper GmbH. Además de la API GraphHopper Directions, se utilizan mosaicos de mapas de varios proveedores, siendo el predeterminado Omniscale.
Todo esto está disponible de forma gratuita, a través de conexiones cifradas y desde servidores alemanes, ¡para una experiencia de planificación de rutas agradable y privada!
empezar
Existe un servicio web que puede ser consumido por nuestro cliente de navegación Android.
El enrutamiento sin conexión ya no es compatible oficialmente, pero aún debería funcionar, ya que Android es compatible con la mayor parte de Java. Vea la versión 1.0 con la demostración de Android y vea también esta solicitud de extracción de la bifurcación de iOS que incluye una demostración para iOS.
Utilice isócronas para calcular y visualizar el área accesible para un determinado modo de viaje.
Puede probar la interfaz de usuario de depuración en http://localhost:8989/maps/isochrone para ver los puntos finales /isochrone
y /spt
en acción.
Existe el subproyecto de coincidencia de mapas para ajustar los rastros GPX a la carretera.
GraphHopper admite varios algoritmos de enrutamiento, como Dijkstra y A *
y sus variantes bidireccionales. Además, le permite utilizar jerarquías de contracción (CH) muy fácilmente. A esto lo llamamos modo de velocidad ; sin esta preparación CH, lo llamamos modo flexible .
El modo de velocidad viene con respuestas muy rápidas y livianas (menos RAM) y no utiliza heurísticas. Sin embargo, sólo son posibles perfiles de vehículo predefinidos y esta preparación adicional del CH requiere tiempo y recursos.
Luego está el modo híbrido , que también requiere más tiempo y memoria para la preparación, pero es mucho más flexible en cuanto a cambiar propiedades por solicitud o, por ejemplo, integrar datos de tráfico. Además, este modo híbrido es más lento que el modo de velocidad, pero es un orden de magnitud más rápido que el modo flexible y utiliza menos RAM para una solicitud.
Si existen los preparativos, puede cambiar entre todos los modos en el momento que lo solicite.
Lea más sobre los detalles técnicos aquí.
Elegimos la licencia Apache para facilitarle la integración de GraphHopper en sus productos, incluso de código cerrado. Le sugerimos que contribuya con sus cambios, ya que GraphHopper evoluciona rápidamente.
OpenStreetMap es compatible directamente con GraphHopper. Sin los sorprendentes datos de OpenStreetMap, GraphHopper no sería posible en absoluto. Otros datos de mapas necesitarán un procedimiento de importación personalizado, consulte, por ejemplo, Ordnance Survey, Shapefile como ESRI o Navteq.
GraphHopper está escrito en Java y se ejecuta oficialmente en Linux, Mac OS X y Windows.
Incruste GraphHopper con soporte OpenStreetMap en su aplicación Java mediante el siguiente fragmento:
< dependency >
< groupId >com.graphhopper</ groupId >
< artifactId >graphhopper-core</ artifactId >
< version >[LATEST-VERSION]</ version >
</ dependency >
Vea nuestra aplicación de ejemplo para comenzar rápidamente.
Puede personalizar GraphHopper con conocimientos de Java (con una API de alto y bajo nivel) y también sin conocimientos de Java utilizando los modelos personalizados.
Con el módulo web, proporcionamos código para consultar GraphHopper a través de HTTP y disminuir el uso del ancho de banda tanto como sea posible. Para ello utilizamos una codificación de polilínea eficiente, el algoritmo Ramer-Douglas-Peucker y un filtro de servlet GZIP simple.
Del lado del cliente, proporcionamos un cliente Java y JavaScript.
GraphHopper también se ejecuta en el escritorio en una aplicación Java sin acceso a Internet. Para fines de depuración, GraphHopper puede producir mosaicos vectoriales, es decir, una visualización de la red de carreteras en el navegador (consulte el n.º 1572). También se proporciona una interfaz de usuario basada en Swing de nivel más bajo a través de MiniGraphUI en el módulo de herramientas; vea algunas visualizaciones realizadas con ella aquí. Se puede implementar una visualización de mapas rápida y lista para producción para el escritorio a través de Mapsforge o Mapsforge vtm.