Valhalla实现 -Docker部署利用OSM(Mapbox)地图实现路径规划可视化

news2024/10/6 10:21:22

一. Valhalla基本概念

1. 背景介绍:

官网介绍文档:https://valhalla.github.io/valhalla/

Valhalla是一个开源的路由引擎,能够实现实时路径规划,处理大量请求返回最优路径。
基于 OSM 数据,结合灵活的多模式交通方式、启发式算法和自定义的费用模型,为用户提供高效的路径规划服务。
OSM地图可以参考博文:OpenStreetMap开放街道地图(OSM)介绍

导航道路计算功能是由 Mapzen 开发的,特别是该公司团队中的工程师们专门为开源项目 Valhalla 构建了这一部分功能。在 Mapzen 于 2018 年关闭后,Mapbox 开始接管了 Valhalla 项目,Valhalla 作为一个开源项目,仍然接受社区的贡献和开发。Mapbox 的 Directions API 底层使用的就是 Valhalla。

Mapbox详细介绍可以参考 mapbox详细介绍

2. 路径规划:

Valhalla 支持多种交通方式的路径规划,包括:步行(walking)、自行车(bicycling)、驾车(driving)、公共交通(transit)。能够整合实时交通信息,调整路径规划结果以避开拥堵路段,从而提供更加动态的路线选择。

Valhalla 将 OSM 数据分割成小块(称为 tiles),然后构建路网图。这些 tiles 包含了路网拓扑结构以及其他与路径规划相关的信息,比如道路类型、限速、交通流向等。

3. 路由算法:

路由算法基于 Dijkstra 算法 和 A 启发式搜索算法* 的变种来计算最短路径,A* 算法结合了距离和启发函数(通常是目的地的直线距离)来更高效地找到从起点到终点的最优路径。

二. 本文功能点以及效果图

1. 使用Docker部署Valhalla服务,进行调用

在这里插入图片描述

2. 运行可视化Demos,展示路径规划效果

在这里插入图片描述

3.QGIS中安装Valhalla插件

在QGIS中能够搜索到Valhalla插件,进行使用,主要包括以下两个步骤:

3.1 安装Valhalla插件

在这里插入图片描述

3.2 使用路径规划

在这里插入图片描述
在这里插入图片描述

三. 部署展示路径规划详细步骤

1.准备服务器和数据

1.1 服务器

准备ubuntu机器

1.2 下载OSM数据

https://download.geofabrik.de/asia/japan.html
本例采用的Example为:
kansai-latest.osm.pbf (日本关西数据)

2. 安装部署

2.1 安装docker

在 Ubuntu 上安装 Docker大致步骤如下:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce
sudo systemctl start docker

2.2 安装Valhalla环境,配置、启动服务

cd xxx/ (kansai-latest.osm.pbf所在目录)
docker pull ghcr.io/valhalla/valhalla:latest
docker run -it -v `pwd`:/work -p 8002:8002 ghcr.io/valhalla/valhalla:latest
ls -l /work
cd /work/
mkdir valhalla_tiles
valhalla_build_config --mjolnir-tile-dir ${PWD}/valhalla_tiles --mjolnir-tile-extract ${PWD}/valhalla_tiles.tar --mjolnir-timezone ${PWD}/valhalla_tiles/timezones.sqlite --mjolnir-admin ${PWD}/valhalla_tiles/admins.sqlite > valhalla.json
valhalla_build_tiles -c valhalla.json kansai-latest.osm.pbf (需要30分钟左右)
du -d1 -h ./valhalla_tiles/
find valhalla_tiles | sort -n | tar cf valhalla_tiles.tar --no-recursion -T -
ls -l valhalla_tiles.tar
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
valhalla_service valhalla.json 1

2.3 效果展示

上述即完成了部署工作,可以调用对应接口进行返回路径规划信息。

Request:

$ curl http://xxx:8002/route --data ‘{“locations”:[{“lat”:34.98597,“lon”:135.75795},{“lat”:35.00373,“lon”:135.76928}],“costing”:“auto”,“directions_options”:{“units”:“kilometers”}, “language”: “ja-JP”}’ | jq ‘.’

Response

在这里插入图片描述

3.valhalla demo程序

以上主要是将valhalla部署在服务器上并且调用接口查看效果,如果想要通过查看可视化直观展示效果,可以使用下列demo进行运行展示。

3.1 Git地址

https://github.com/valhalla/demos

3.2 代码修改、运行

(1)demos\routing\index-internal.html文件中替换localhost为 部署ubuntu机器IP
(2)运行demos\routing\index-internal.html文件

3.3 运行效果

选择两个坐标点即可显示对应路径规划信息,并且返回对应路径规划数据。
在这里插入图片描述

四.总结

Valhalla是一个开源的路由引擎。本文主要对Valhalla进行了简单介绍,然后详细介绍了使用Docker容器中部署Valhalla服务,调用和具体展示的Demo,以及在QGIS中使用valhalla插件路径规划示例。对于有路径规划导航相关需求的开发人员,Valhalla是一个很不错的选择。

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

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

相关文章

百度文心智能体平台开发萌猫科研加油喵

百度文心智能体平台开发萌猫科研加油喵 在科研的道路上,研究生们常常面临着巨大的压力和挑战。为了给这个充满挑战的群体带来一些鼓励和温暖,我借助百度文心智能体平台开发了一个独特的智能体 《萌猫科研加油喵》。 一、百度文心智能体平台介绍 百度文…

Cilium-实战系列-(一)Cilium-安装与部署

前言: 1、首先说一下这篇实战系列和Cilium-ebpf系列文章为 “一文一武”,一个注重点解,一个注重实际操作。 Cilium ebpf 系列文章-什么是ebpf?(一)_clium ebpf-CSDN博客文章浏览阅读419次。一、We Create a containe…

【Python】Hypercorn:轻量级的异步ASGI/WSGI服务器

Hypercorn 是一个支持异步 ASGI 和同步 WSGI 应用的高效 Python 服务器。它结合了现代协议支持(包括 HTTP/1、HTTP/2 和 HTTP/3),并且为异步 Web 框架(如 FastAPI 和 Quart)提供了卓越的性能和灵活性。通过 Hypercorn&…

2.创建第一个MySQL存储过程(2/10)

引言 在现代数据库管理中,存储过程扮演着至关重要的角色。它们是一组为了执行特定任务而编写的SQL语句集合,这些语句被保存在数据库中,并且可以被多次调用执行。存储过程不仅可以提高数据库操作的效率,还能增强数据的安全性和一致…

来自德国的义齿雕刻机电主轴SycoTec 4033

在口腔医学的精密世界中,每一次技术的飞跃都意味着患者体验与治疗效果的双重提升。随着数字化、自动化技术的蓬勃发展,义齿加工领域正经历着前所未有的变革,而德国SycoTec公司推出的4033高速电主轴卓越的性能和广泛的应用性,提升了…

计算机毕业设计 网上体育商城系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

Python第三方库选择与使用陷阱避免

Python第三方库选择与使用陷阱避免 Python 生态系统丰富多样,其中的第三方库提供了许多强大的功能,使得开发者可以快速构建应用。然而,随着第三方库的增多,如何选择合适的库并避免一些常见的使用陷阱成为了开发者需要关注的重点。…

ChatGPT Canvas:交互式对话编辑器

自两年前 ChatGPT 发布以来,主流 AI 均以对话形式进行交互。传统的对话式界面可以直观看到反馈结果,但在需要深度编辑和协作的项目中就略显局限。为了解决此问题,几个月前 Claude 就发布过 Artifacts 功能,用来拓展原有对话。而现…

ROS C++ : 通过 ROS Service 实现进程间同步函数调用

文章目录 1、基本概念1.1、官方定义1.2、Service服务与Topic话题的区别 2、C 代码编写2.1、自定义 .srv 文件2.2、C 服务端代码编写2.3、C 客户端代码编写2.4、CMakeLists.txt 文件编写2.5、package.xml文件编写 3、编译运行3.1、执行 catkin_make 编译程序3.2、执行 source 部…

爬虫——XPath基本用法

第一章XML 一、xml简介 1.什么是XML? 1,XML指可扩展标记语言 2,XML是一种标记语言,类似于HTML 3,XML的设计宗旨是传输数据,而非显示数据 4,XML标签需要我们自己自定义 5,XML被…

计算机网络——ftp

在网络通信中,控制连接和数据连接是两种不同类型的连接,它们各自具有特定的功能和用途。 一、控制连接 定义与功能: 控制连接主要用于在通信双方之间传输控制信息,以建立、维护和终止数据连接。它负责协调和管理数据传输的过程&am…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-05

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-04 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-04目录1. LLM-Augmented Symbolic Reinforcement Learning with Landmark-Based Task Decomposition摘要研究背景问题与挑战如何…

如何用python抓取豆瓣电影TOP250

1.如何获取网站信息? (1)调用requests库、bs4库 #检查库是否下载好的方法:打开终端界面(terminal)输入pip install bs4, 如果返回的信息里有Successfully installed bs4 说明安装成功(request…

【JavaEE】——文件IO的应用

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:文件的搜索(面试高频) 二:文件的复制 三&#xff1a…

森林火灾的预防方案

对于森林火灾的预防,我们需要了解森林火灾形成的原因。一般来森林火灾的形成分为自然原因和人为原因;自然原因多为干燥天气的自燃、雷电火等,而人为原因多是农、林、牧业生产用火,林副业生产用火,以及工矿运输生产用火…

无人机(自组穿越机,航模)-芯片选型

飞控MCU: 型号尺寸子型号参数规格备注STM325*532位ARM Cortex-M3 CPU,72MHz,256KB Flash,20KB RAMLQFP 48F33*332位ARM Cortex-M4 CPU,72MHz,256KB Flash,40KB RAMMPU6050F45*532位ARM Cortex-M4 CPU&…

分享我“Excel 表格”关键字的博客笔记(python脚本全程自动)

Python脚本全程自动,全部Python内建工具脚本纯净。 (笔记模板由python脚本于2024年10月05日 19:51:06创建,本篇笔记适合喜欢Excel和Python的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大…

MQ(仅供自己参考)

同步通讯的优缺点: 优点:时效高,数据一致,过程简单 缺点:耦合度高。性能下降。CPU等待资源的浪费。级联失败。 2、异步通讯:异步调用常见的实现就是事件驱动模式 异步的优缺点: 优点&#xf…

隐喻的使用及误用

Larry Constantine 著,whoisred 译 长期以来,在图形用户界面设计中,隐喻(metaphor)一直很流行。但是,虽然有少数简单的隐喻——如文件夹及垃圾箱——令人击节叫好,可事实上,大多数隐…

去噪扩散模型

Denoising Diffusion Probabilistic Models 图像扩散模型是一种生成模型,它基于概率扩散过程来生成新的图像。 核心步骤包括:(1)前向扩散过程;(2)逆向扩散过程 前向扩散过程(正向过…