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

文章目录

  • 文章参考
  • 源码获取
  • 一、配置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 datagraphhopper.flag_encoders: cargraph.location: graph-cachehttp.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.rhkb.cn/news/385131.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨境电商独立站:Shopify/Wordpress/店匠选哪个?

在面对不断增加的平台运营压力时&#xff0c;不少跨境电商的商家逐渐将注意力转向建立自己的独立站。据《中国跨境出口电商发展报告&#xff08;2022&#xff09;》所示&#xff0c;中国拥有的独立站数量在2022年已接近20万个&#xff0c;这表明独立站已成为卖家拓展海外市场的…

昇思25天学习打卡营第11天|xiaoyushao

今天分享ResNet50迁移学习。 在实际应用场景中&#xff0c;由于训练数据集不足&#xff0c;所以很少有人会从头开始训练整个网络。普遍的做法是&#xff0c;在一个非常大的基础数据集上训练得到一个预训练模型&#xff0c;然后使用该模型来初始化网络的权重参数或作为固定特征提…

苦学Opencv的第十一天:图像的形态学操作

Python OpenCV从入门到精通学习日记&#xff1a;图像的形态学操作 前言 图像形态学是图像处理中的一个重要分支&#xff0c;主要关注图像中物体的形状和结构。通过形态学操作&#xff0c;我们可以对图像进行有效的分析和处理&#xff0c;例如图像的腐蚀与膨胀、开运算与闭运算…

大模型学习笔记十四:Agent模型微调

文章目录 一、大模型需要Agent技术的原因二、Prompt Engineering可以实现Agent吗&#xff1f;&#xff08;1&#xff09;ReAct原理展示和代码&#xff08;2&#xff09;ModelScope&#xff08;3&#xff09;AutoGPT&#xff08;4&#xff09;ToolLLaMA 三、既然AutoGPT可以满足…

利用OSMnx求路网最短路径并可视化(二)

书接上回&#xff0c;为了增加多路径的可视化效果和坐标匹配最近点来实现最短路可视化&#xff0c;我们使用图形化工具matplotlib结合OSMnx的绘图功能来展示整个路网图&#xff0c;并特别高亮显示计算出的最短路径。 多起终点最短路路径并计算距离和时间 完整代码#运行环境 P…

C++——QT:保姆级教程,从下载到安装到用QT写出第一个程序

登录官网&#xff0c;在官网选择合适的qt版本进行下载 这里选择5.12.9版本 点击exe文件下载&#xff0c;因为服务器在国外&#xff0c;国内不支持&#xff0c;所以可以从我的网盘下载 链接: https://pan.baidu.com/s/1XMILFS1uHTenH3mH_VlPLw 提取码: 1567 --来自百度网盘超级…

Linux--网络基础

目录 1.计算机网络背景 2. 初识协议 2.1概念 2.2 协议分层 2.3OSI 七层模型 2.4TCP/IP 五层(或四层)模型 3.再识协议 3.1为什么要有 TCP/IP 协议&#xff1f; 3.2什么是 TCP/IP 协议&#xff1f; 3.3TCP/IP 协议与操作系统的关系(宏观上&#xff0c; 怎么实现的) 3.…

一键解锁:科研服务器性能匹配秘籍,选择性能精准匹配科研任务和计算需求的服务器

一键解锁&#xff1a;科研服务器性能匹配秘籍 HPC科研工作站服务器集群细分领域迷途小书童 专注于HPC科研服务器细分领域kyfwq001 &#x1f3af;在当今科技飞速发展的时代&#xff0c;科研工作对计算资源的需求日益增长&#x1f61c;。选择性能精准匹配科研任务和计算需求的服…

HarmonyOS和OpenHarmony区别联系

前言 相信我们在刚开始接触鸿蒙开发的时候经常看到HarmonyOS和OpenHarmony频繁的出现在文章和文档之中&#xff0c;那么这两个名词分别是什么意思&#xff0c;他们之间又有什么联系呢&#xff1f;本文将通过现有的文章和网站内容并与Google的AOSP和Android做对比&#xff0c;带…

助力樱桃智能自动化采摘,基于嵌入式端超轻量级模型LeYOLO全系列【n/s/m/l】参数模型开发构建果园种植采摘场景下樱桃成熟度智能检测识别系统

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经渗透到我们生活的方方面面&#xff0c;从智能家居到自动驾驶&#xff0c;再到医疗健康&#xff0c;其影响力无处不在。然而&#xff0c;当我们把目光转向中国的农业领域时&#xff0c;一个令人惊讶的…

python-NLP:2词性标注与命名实体识别

文章目录 词性标注命名实体识别时间命名实体&#xff08;规则方法&#xff09;CRF 命名实体识别方法 词性标注 词性是词汇基本的语法属性&#xff0c;通常也称为词类。词性标注是在给定句子中判定每个词的语法范畴&#xff0c;确定其词性并加以标注的过程。例如&#xff0c;表示…

【React】详解“最新”和“最热”切换与排序

文章目录 一、基本概念和初始化二、切换与排序功能的实现1. 函数定义和参数2. 设置活动 Tab3. 定义新列表变量4. 根据排序类型处理列表4.1 按时间降序排序4.2 按点赞数降序排序 5. 更新评论列表 三、渲染导航 Tab 和评论列表1. map 方法2. key 属性3. className 动态赋值4. onC…

模式Hash和history

vuerouter有两种路由模式Hash和history。区别&#xff1a;Hash为默认模式&#xff0c;url中包含一个#符号的哈希部分。优势&#xff1a;兼容性好&#xff0c;不需要后端服务器的特殊配置。缺点&#xff1a;不够美观&#xff0c;搜索引擎优化较差。History模式使用的浏览器的His…

小程序多排数据横向滚动实现

如何实现多排数据滚动效果 swiper 外部容器 swiper-item 每一页的数据 因为现在有多排数据,现在在swiper-item 中需要循环一个数组 初版 <template><view><view class"container"><view class"swiper-box"><swiper class&qu…

《Utilizing Ensemble Learning for Detecting Multi-Modal Fake News》

系列论文研读目录 文章目录 系列论文研读目录论文题目含义ABSTRACTINDEX TERMSI. INTRODUCTIONII. RELATED WORKA. FAKE NEWS CLASSIFICATION APPROACHES FOR SINGLE-MODALITY 单模态虚假新闻分类方法1) SINGLE-MODALITY BASED CLASSIFICATION APPROACHES USING TEXTUAL FEATUR…

家政项目小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;家政人员管理&#xff0c;家政服务管理&#xff0c;咨询信息管理&#xff0c;咨询服务管理&#xff0c;家政预约管理&#xff0c;留言板管理&#xff0c;系统管理 微信端账号功能…

Servlet1-Servlet程序、请求处理、继承体系

目录 什么是Servlet 手动实现Servlet程序 ​编辑url地址如何定位到Servlet程序去访问 Servlet的生命周期 ​编辑GET和POST请求的分发处理 通过继承HttpServlet类实现Servlet程序 IDEA菜单生成Servlet程序 Servlet类的继承体系 ServletConfig类 ServletContext类 什么…

go语言day19 使用git上传包文件到github Gin框架入门

git分布式版本控制系统_git切换head指针-CSDN博客 获取请求参数并和struct结构体绑定_哔哩哔哩_bilibili &#xff08;gin框架&#xff09; GO: 引入GIn框架_go 引入 gin-CSDN博客 使用git上传包文件 1&#xff09;创建一个github账户&#xff0c;进入Repositories个人仓…

新能源充电桩结构设计的核心要素

充电桩结构设计的核心要素 一、外观设计 外观设计对于用户体验和充电站的可接受性具有举足轻重的地位。其设计应遵循现代化、直观易懂的原则&#xff0c;同时符合人机工程学原理&#xff0c;以确保用户操作的便捷性。此外&#xff0c;外观设计还需与城市规划和环境美学相协调…

特斯拉财报看点:FSD拳打华为,Robotaxi 脚踢百度

大数据产业创新服务媒体 ——聚焦数据 改变商业 特斯拉发最新财报了&#xff0c;这不仅是一份财务报告&#xff0c;更是一张未来发展的蓝图。在这份蓝图中&#xff0c;两个关键词格外耀眼——FSD&#xff08;全自动驾驶系统&#xff09;和Robotaxi&#xff08;无人驾驶出租车&…