本地部署Graphhopper路径规划服务(graphhopper.sh启动版)

news2024/11/22 21:49:49

文章目录

  • 文章参考
  • 源码获取
  • 一、配置Java环境变量
  • 二、配置Maven环境变量
  • 三、构建graphhopper步骤
    • 1. 下载数据
    • 2. 配置graphhopper配置文件`config-example.yml`
    • 3. 在项目中启动命令行执行`./graphhopper.sh build`
      • 3.1|、遇到的问题
        • 3.1.1、pom.xml中front-maven-plugin-无法下载npm6.14.5
        • 3.1.2、无法抽取npm-6.14.5.tar.gz文件
    • 4. 启动服务./graphhopper.sh -a web -i ./china-latest.osm.pbf
      • 4.1、问题
        • 4.1.1、解析的地图数据过大导致内存溢出发生错误
      • 4.2、启动完成验证

文章参考

个人尝试本地部署Graphhopper路径规划引擎的过程基本参考本地部署Graphhopper实现离线地图路径规划功能(小白放心食用版)。
本文主要是对整个过程从环境配置到服务部署的过程以及遇到的问题进行了记录。有些问题在参考的博客中有记录,本文并未完全移植,而是根据部署过程中遇到的其他问题进行了记录和解决。
部署过程中遇到的问题可以参照本文和参考博文记录的问题进行解决,希望能起到作用,有不足的地方也请指出。

源码获取

特别说明:使用的是graphhopper的stable分支
获取方式

  • 方式1:使用git命令:git clone -b stable https://github.com/graphhopper/graphhopper.git
  • 方式2:直接下载zip文件,切换到stable分支,下载zip文件,graphhoper项目地址
    在这里插入图片描述

一、配置Java环境变量

  1. 下载Java Development Kit (JDK):
    访问Oracle官网或者OpenJDK官网,下载适合你操作系统的JDK版本。传送门:官网
    JDK1.8夸克网盘下载:
    链接:https://pan.quark.cn/s/be289bd5a448 提取码:1YRZ
  2. 安装JDK:
    下载完成后,运行安装程序,按照提示完成JDK的安装。安装完成后,JDK通常会默认安装到一个路径,在Windows上可能是 C:\Program Files\Java\jdk-xx
  3. 设置环境变量:
    配置JAVA_HOME环境变量:在系统环境变量中新增一个名为JAVA_HOME的变量,其值为你JDK的安装路径,比如 C:\Program Files\Java\jdk-xx。
    配置PATH环境变量:将JDK的bin目录添加到PATH变量中,这样系统就可以找到Java和Javac命令。例如,将 C:\Program Files\Java\jdk-xx\bin 添加到PATH中。
    配置CLASSPATH:在系统环境中新建变量名:CLASSPATH;变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
  4. 验证安装:
    cmd启动命令终端,输入 java -version 和 javac -version 来检查Java和编译器是否成功安装和配置。

二、配置Maven环境变量

大体步骤如下:

  1. 下载Maven:
  2. 设置环境变量
  • 系统变量中,新建一个名为 MAVEN_HOME 的变量,指向你解压缩Maven的目录
  • 编辑系统变量 Path,在末尾添加 %MAVEN_HOME%\bin
  1. 验证安装:
    打开命令行输入 mvn -v 命令,检查输出是否显示了Maven的版本信息,确认安装成功。
  2. 配置settings.xml(可选):
    Maven的全局配置文件位于 M2_HOME/conf/settings.xml,可以根据需要进行配置,例如设置镜像、代理等。需要修改maven目录中conf文件夹下的settings.xml文件
  • Maven配置JDK版本
 <profiles>
 .......
    <profile>
      <id>JDK-1.8</id>
      <activation>
          <activeByDefault>true</activeByDefault>
          <jdk>1.8</jdk>
      </activation>
      <properties>
          <maven.compiler.source>1.8</maven.compiler.source>
          <maven.compiler.target>1.8</maven.compiler.target>
          <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
      </properties>
    </profile>
........
</profiles>
  • 配置国内镜像
<mirrors>
  ......
      <mirror>  
      <id>alimaven</id>  
      <name>aliyun maven</name>  
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
      <mirrorOf>central</mirrorOf>          
    </mirror>
  .......
 </mirrors>
  • 配置Maven本地仓库地址
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
 ......
 <localRepository>D:\Program Files\Java\mvn-repository</localRepository>
 ......
</settings>

三、构建graphhopper步骤

1. 下载数据

地图数据下载地址,可以根据根据需要下载,我下载的中国的数据,有1g过,后面构建运行的时候还挺耗时的。
我将china-latest.osm.pbf放在了源码项目的根目录了
pbf地图数据下载页面截图

2. 配置graphhopper配置文件config-example.yml

  datareader.file: "./china-latest.osm.pbf"
  # Local folder used by graphhopper to store its data
  graphhopper.flag_encoders: car
  graph.location: graph-cache
  http.port: 8989

3. 在项目中启动命令行执行./graphhopper.sh build

3.1|、遇到的问题

3.1.1、pom.xml中front-maven-plugin-无法下载npm6.14.5
[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.10.0:install-node-and-npm (install node and npm) on project graphhopper-web: Could not download npm: Could not download https://registry.npmjs.org/npm/-/npm-6.14.5.tgz: Read timed out -> [Help 1]

无法下载错误截图
解决办法:打开graphhoper项目文件夹下的pom.xml文件,在plugins标签内添加如下配置,就是更改了npm源为淘宝最新的npm源,如果不行的话尝试一下科学上网

 <plugin>
    <groupId>com.github.eirslett</groupId>
    <artifactId>frontend-maven-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>install node and npm</id>
            <goals>
                <goal>install-node-and-npm</goal>
            </goals>
            <configuration>
                <nodeDownloadRoot>http://nodejs.org/dist/</nodeDownloadRoot>
                <npmDownloadRoot>https://registry.npmmirror.com</npmDownloadRoot>
                <!-- <nodeVersion>v9.11.1</nodeVersion> -->
            </configuration>
        </execution>
    </executions>
</plugin>
3.1.2、无法抽取npm-6.14.5.tar.gz文件

[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.10.0:install-node-and-npm (install node and npm) on project graphhopper-web: Could not extract the npm archive: Could not extract archive: 'D:\Program Files\Java\mvn-repository\com\github\eirslett\npm\6.14.5\npm-6.14.5.tar.gz': EOFException -> [Help 1]
无法抽取文件错误截图

解决办法:删除...\com\github\eirslett\目录下的eirslett文件夹,然后执行mvn clean install
参考文章Could not extract the npm archive (using frontend-maven-plugin 1.3) #545

4. 启动服务./graphhopper.sh -a web -i ./china-latest.osm.pbf

执行命令:./graphhopper.sh -a web -i ./china-latest.osm.pbf

4.1、问题

4.1.1、解析的地图数据过大导致内存溢出发生错误

解决办法export JAVA_OPTS="-Xmx4g -Xms4g"#加大至4G内存

4.2、启动完成验证

因为要解析地图数据,会耗费大概15分钟左右,很多人在浏览器输入http://127.0.0.1:8989,网页一直打转,没有立马加载出来,是因为服务还没有完全启动,很多博客忽略这个环节,启动成功的标志是
服务完全启动截图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1951715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

结构型设计模式-组合模式

一、组合模式 对于这个图片肯定会非常熟悉&#xff0c;上图我们可以看做是一个文件系统&#xff0c;对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树&#xff0c;当我们找到某个叶子节点后&#xff0c;就可以对叶子节点进行相关的操作。可以将…

Python安装库太慢?配置好这个速度飞起

经常听到初学python的小伙伴在抱怨&#xff0c;python安装第三方库太慢&#xff0c;很容易失败报错&#xff0c;如果安装pandas、tensorflow这种体积大的库&#xff0c;简直龟速。 为什么pip会很慢&#xff1f; 先来了解下pip&#xff0c;pip是一个非常流行的python包管理工具…

【苍穹】完美解决由于nginx更换端口号导致无法使用Websocket

一、报错信息 进行到websocket开发的过程中&#xff0c;遇到了前端报错&#xff0c;无法连接的提示&#xff1a; 经过F12排查很明显是服务端和客户端并没有连接成功。这里就涉及到之前的坑&#xff0c;现在需要填上了。 二、报错原因和推导 应该还记得刚开苍穹的第一天配置前…

技术实践—微前端技术应用

微前端是一种新兴的前端架构模式&#xff0c;是一种类似于微服务的架构&#xff0c;将微服务的理念应用于浏览器端。其核心理念是将一个大而单一的前端应用拆分为多个小型独立的微应用。这些微应用各自独立&#xff0c;可以由不同团队开发维护&#xff0c;部署&#xff0c;组合…

docker发布镜像到自己远程私有仓库

1、登录docker hub创建自己的仓库地址&#xff1a;https://hub.docker.com/repository/create 输入仓库名称 2.构建镜像 略过。。。。请自己查找别的资料&#xff0c;此篇文章只讲述镜像推送到远程 3.推送 假设你已经构建了一个镜像 web/online-editor:latest&#xff0c;现…

【React学习打卡第二天】

受控表单绑定、React获取Dom\组件通信、useEffect、自定义hook函数和ReactHooks使用规则 一、受控表单绑定1.准备React状态值2.通过value属性绑定状态&#xff0c;通过onChange属性绑定状态同步的函数 二、React中获取DOM1. 使用useRef创建 ref 对象&#xff0c;并与 JSX 绑定2…

使用图数据库Nebula Graph快速上手史上最大规模的中文知识图谱ownthink_v2教程(没写完,明天再写)

一、前言 本教程主要参考官方教程&#xff1a;使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink (nebula-graph.com.cn) 来带着大家一步一步复现实验内容。 本教程主要使用到的数据集&#xff1a; ownthink/KnowledgeGraphData: 史上最大规模1.4亿中文知识图谱…

MySQL 存储

关系型数据库是基于关系模型的数据库&#xff0c; 而关系模型是通过二维表来保存的&#xff0c;所以关系型数据库中的数据的村方式就是行列组成的表&#xff0c;每一列代表一个字段&#xff0c;每一行代表一条记录。表可以看作某个实体的集合&#xff0c;实体之间存在的联系需要…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十三章 设备树下的platform驱动

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

基于开源大模型的问答系统本地部署实战教程

1. 现有大模型产品使用感受 在开始教你搭建属于自己的本地大模型之前&#xff0c;先说下自己日常使用大模型的感受。常用的比较好的国外大模型工具&#xff0c;经常会遇到网络卡或者token数量、使用次数限制的问题。而国内的大模型工具虽然不存在网络的问题&#xff0c;但…

简单几步,教你使用scikit-learn做分类和回归预测

经常听到初学python的小伙伴在抱怨&#xff0c;python安装第三方库太慢&#xff0c;很容易失败报错&#xff0c;如果安装pandas、tensorflow这种体积大的库&#xff0c;简直龟速。 为什么pip会很慢&#xff1f; 先来了解下pip&#xff0c;pip是一个非常流行的python包管理工具…

基于微信小程序+SpringBoot+Vue的资料分享系统(带1w+文档)

基于微信小程序SpringBootVue的资料分享系统(带1w文档) 基于微信小程序SpringBootVue的资料分享系统(带1w文档) 校园资料分享微信小程序可以实现论坛管理&#xff0c;教师管理&#xff0c;公告信息管理&#xff0c;文件信息管理&#xff0c;文件收藏管理等功能。该系统采用了Sp…

初识C++ · AVL树(2)

目录 前言&#xff1a; 1 左右旋 2 右左旋 3 部分细节补充 3.1 单旋和插入 3.2 部分小函数 前言&#xff1a; AVL树作为一种结构&#xff0c;理解树的本身是不大难的&#xff0c;难的在于&#xff0c;树旋转之后的连接问题&#xff0c;写AVL树的代码大部分都是在旋转部分…

在jeesite开源平台上写了一个SQL命令中心的功能

实现目的: 这个SQL命令中心,是因为老项目就有这个页面,主要的功能是根据写出的SQL语句查询数据,并且在查出的数据基础上直接修改更新,还有新增和删除的功能,这么一说跟plsql就一样一样的了;这页面本来是给运维的同事来用,而且他们还会用plsql和Navicat等SQL语言操作工…

[OJ]平均串问题,存在超时问题未解决

众所周知&#xff0c;两个数a和b的平均数计算公式为(ab)/2。 实际上平均数也可以描述为&#xff1a;从较小的数依次遍历到较大的数&#xff0c;将遍历的数放入一个列表中&#xff0c;该列表的中心元素。例如&#xff1a;求 3和7的平均数&#xff0c;列表为{3,4,5,6,7}&#xff…

FPGA与ASIC:深入解析芯片设计的双子星

前言 在半导体世界里&#xff0c;FPGA&#xff08;Field-Programmable Gate Array&#xff0c;现场可编程门阵列&#xff09;与ASIC&#xff08;Application-Specific Integrated Circuit&#xff0c;专用集成电路&#xff09;是两种截然不同的芯片设计策略&#xff0c;各自在…

短视频矩阵系统,一键智能成片

在信息爆炸的时代&#xff0c;短视频以其短平快的特点迅速崛起&#xff0c;成为人们获取信息、娱乐消遣的重要渠道。然而&#xff0c;如何在这个竞争激烈的领域中脱颖而出&#xff0c;制作出吸引眼球的爆款视频呢&#xff1f;今天&#xff0c;我们就来揭秘一款神奇的短视频矩阵…

76.WEB渗透测试-信息收集- WAF、框架组件识别(16)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;75.WEB渗透测试-信息收集- WAF、框架组件识别&#xff08;15&#xff09; Php的Laraverl…

C语言 之 理解指针(4)

文章目录 1. 字符指针变量2. 数组指针变量2.1 对数组指针变量的理解2.2 数组指针变量的初始化 3. 二维数组传参的本质4. 函数指针变量4.1 函数指针变量的创建4.2 函数指针变量的使用 5. 函数指针数组 1. 字符指针变量 我们在前面使用的主要是整形指针变量&#xff0c;现在要学…

php--高级反序列化

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…