首页 > 编程知识 正文

osm 搭建离线地图_Graphhopper OSM地图路径规划导航 离线搭建教程

时间:2023-05-06 01:54:31 阅读:277350 作者:3479

GraphHopper是一种快速且内存有效的Java导航引擎,默认使用OSM和GTFS数据,也可导入其他的数据源。支持CH(Contraction Hierarchies)、A*、Dijkstra算法。

优点:

1、算法。Dijkstra算法运行得较慢,但确实能保证找到一条最短路径。最佳优先搜索(BFS)运行得较快,但是它找到的路径不一定是最好的。A*算法把启发式方法(heuristic approaches)如BFS,和常规方法如Dijsktra算法结合在一起的算法。A*是路径搜索中最受欢迎的选择,因为它相当灵活,并且能用于多种多样的情形之中。A*潜在地搜索图中一个很大的区域。和Dijkstra一样,A*能用于搜索最短路径。和BFS一样,A*能用启发式函数(注:原文为heuristic)引导它自己。在简单的情况中,它和BFS一样快;

2、开源。代码开源,可本地部署服务,利用OSM实现离线路径导航,便于构建自己的服务。后期如果考虑对算法进行改进的话,扩展空间比较大;

3、效率。相比较于调用远程服务,调用本地路径规划服务会更快。路径寻找比谷歌地图还要快,与OSRM速度相当(350km路径,平均时间0.8s(0.4s-1.2s));

4、成熟度。已存在一些开源版本的成功运用,且有官方网站、论坛等;

5、功能。导航系统的核心功能是根据地理数据,利用算法进行路径规划导航。Graphhopper实现了路径导航功能,并且支持中文。

分为两个版本:开源和商业版本。本文主要讲述开源版本的离线搭建过程,这里主要利用源码进行搭建,搭建过程比较简单。

1、搭建之前要保证jdk安装完成,且完成环境变量配置。网上有一大推的教程,自行进行校验安装;

2、下载Graphhopper( https://github.com/graphhopper/graphhopper)master分支代码

解压文件,注意这里尽量不要解压到具有中文名称的路径中,否则可能会导致服务无法正常启动情况;

3、到OSM上下载地图数据。例如: http://download.geofabrik.de/europe/germany/berlin.html

下载完成后,将文件放在根目录文件中

4、cd到文件夹中,输入命令: ./graphhopper.sh -a web -i berlin-latest.osm.pbf,启动服务,启动成功如下;

5、以route请求为例,查找坐标点之间的路径,打开浏览器输入: http://localhost:8989/route?point=52.51834,13.394174&point=52.421542,13.31665&type=json&locale=zh-CN&vehicle=car&weighting=fastest&points_encoded=false

成功返回结果;

6、如果不知道坐标范围,可输入 http://localhost:8989/info显示坐标范围:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。