OSRM docker环境启动

news2024/11/20 4:02:17

命令一把梭

wget https://download.geofabrik.de/asia/china-latest.osm.pbf
docker pull osrm/osrm-backend
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/china-latest.osm.pbf
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-partition /data/china-latest.osrm
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-customize /data/china-latest.osrm
docker run -d -p 5000:5000 --rm --name osrm -v "${PWD}:/data" osrm/osrm-backend osrm-routed  --algorithm mld --max-table-size 1000 --max-matching-size 500 /data/china-latest.osrm
# 验证osrm服务是否正常
curl "http://127.0.0.1:5000/route/v1/driving/113.519067,23.125793;113.723684,23.040035?steps=true"
# 前端Web地图可选装,页面类似长这样:https://map.project-osrm.org,https://xxx.xxx是上面安装的osrm服务的https地址
docker run -d -e OSRM_BACKEND='https://xxx.xxx' -p 9966:9966 osrm/osrm-frontend

注意事项

1、准备好梯子,访问https://download.geofabrik.de/asia/china-latest.osm.pbf 有时候需要,该文件一般1.2GB左右大小
2、只下载osm中国地图,pbf格式。
3、对硬件要求高,内存最好有20G以上,内存不够可能在osrm-extract这一步就会报错

[info] RAM: peak bytes used: 12934402048
[error] [exception] std::bad_alloc
[error] Please provide more memory or consider using a larger swapfile

4、用多核多线程cpu。服务启动可以使用 --threads 16 参数设置多线程
5、地图更新频繁,可以通过查看https://map.project-osrm.org/timestamps对应的路由信息更新时间戳来确定是否更新地图

命令解释

以上命令执行过程如下:

  1. 提取数据:使用 osrm-extract 命令从原始地图数据文件(如 .osm.pbf)中提取必要的信息,生成中间文件(.osrm)。
  2. 分区数据:使用 osrm-partition 命令对生成的 .osrm 文件进行分区,优化路由计算性能。
  3. 生成层次结构:使用 osrm-customize 命令生成层次结构数据,进一步优化路由计算。
  4. 启动服务:使用 osrm-routed 命令启动路由服务,提供实际的路由查询功能。

前三条命令为工具命令,是利用osrm-backend docker镜像内的内置工具对地图数据进行预处理,只有第四条为osrm服务的启动命令。

详细解释

1、docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/china-latest.osm.pbf

在使用 OSRM 提供路由服务之前,通常需要先对地图数据进行预处理,生成必要的中间文件。osrm-extract 是这一过程的第一步。这条命令主要用于处理地图数据文件,将其转换为 OSRM 可以使用的格式。生成的 .osrm 文件可以用于后续的路由计算和其他地理信息服务

(1). docker run:
•用于启动一个新的 Docker 容器。
(2) -t:
•分配一个伪TTY(终端)。这通常用于保持容器的标准输入打开,以便你可以与容器进行交互。虽然在这个命令中没有明确的交互需求,但 -t 有时会与其他选项(如 -i)一起使用,以确保容器保持打开状态。
(3) -v “${PWD}:/data”:
•将宿主机当前目录(${PWD})挂载到容器内的 /data 目录。这样,容器可以访问宿主机上的文件,反之亦然。
(4) osrm/osrm-backend:
•指定要使用的 Docker 镜像。这里是 osrm/osrm-backend,这是 Open Source Routing Machine 的官方镜像,用于处理地图数据和提供路由服务。
(5) osrm-extract:
•在容器启动后要执行的命令。osrm-extract 是 OSRM 工具链中的一个命令,用于从原始地图数据文件(通常是 .osm.pbf 格式)中提取必要的信息,生成中间文件(.osrm 文件)。
(6) -p /opt/car.lua:
•osrm-extract 命令的一个参数,指定了配置文件的路径。/opt/car.lua 是一个预定义的配置文件,用于定义车辆类型(如汽车、自行车等)的行驶规则。osrm支持汽车、自行车、步行三种行驶规则,内置多套lua脚本,当前命令使用的是汽车的行驶规则。以下是自行车和步行的命令,可按需使用

docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/bike.lua /data/china-latest.osm.pbf
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/foot.lua /data/china-latest.osm.pbf

(7) /data/china-latest.osm.pbf:
•输入文件的路径。这里指定的是宿主机当前目录下的 china-latest.osm.pbf 文件,该文件通过 -v 选项挂载到了容器内的 /data 目录。

2、docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-partition /data/china-latest.osrm

osrm-partition 命令用于对已经提取的地图数据进行分区,以提高路由计算的性能。分区可以将地图数据划分为多个子区域,从而减少查询时的计算量。
•数据准备:在使用 OSRM 提供路由服务之前,通常需要对地图数据进行多步预处理。osrm-partition 是这一过程的第二步,在 osrm-extract 之后执行。

3、docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-customize /data/china-latest.osrm

•地图数据优化:osrm-customize 命令用于对已经提取和分区的地图数据进行定制处理,生成层次结构数据。层次结构数据可以显著提高路由计算的性能,特别是在处理大规模地图数据时。
•数据准备:在使用 OSRM 提供路由服务之前,通常需要对地图数据进行多步预处理。osrm-customize 是这一过程的第三步,在 osrm-extract 和 osrm-partition 之后执行。

4、docker run -d -p 5000:5000 --rm --name osrm -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld --max-table-size 1000 --max-matching-size 500 /data/china-latest.osrm

(1) docker run:
•用于启动一个新的 Docker 容器。
(2) -d:
•以 detached 模式(后台模式)运行容器。这意味着容器将在后台运行,不会占用当前终端。
(3) -p 5000:5000:
•将宿主机的 5000 端口映射到容器的 5000 端口。这允许你在宿主机上通过 http://localhost:5000 访问容器内的服务。
(4) --rm:
•在容器退出后自动删除该容器。这有助于保持宿主机的整洁,避免留下大量不再需要的容器。
(5) --name osrm:
•为容器指定一个名称 osrm。这使得你可以在后续的 Docker 命令中更容易地引用这个容器。
(6) -v “${PWD}:/data” :
•将宿主机当前目录(${PWD})挂载到容器内的 /data 目录。这样,容器可以访问宿主机上的文件,反之亦然。
(7) osrm/osrm-backend:
•指定要使用的 Docker 镜像。这里是 osrm/osrm-backend,这是 Open Source Routing Machine 的官方镜像,用于处理地图数据和提供路由服务。
(8) osrm-routed:
•在容器启动后要执行的命令。osrm-routed 是 OSRM 工具链中的一个命令,用于启动路由服务。
(9) --algorithm mld:
•指定路由算法为 mld(Multi-Level Dijkstra)。这是一种高效的路由算法,特别适用于大规模地图数据。
(10) --max-table-size 1000:
•设置Table Service API 中传入位置参数的个数最大为 1000个,不设置默认为100。如计算多个位置两两之间的距离或耗时矩阵API https://xxx/table/v1/driving/116.373627,37.446524;116.787863,37.628356;116.641314,36.913737?annotations=duration&skip_waypoints=true
这个url地址中传入了3个位置,经纬度内部逗号隔开,经纬度之间用分号分隔。api返回结果是一个3X3的两地之间汽车行驶的耗时矩阵,单位为s。 参考
(11) --max-matching-size 500:
•和第10项类似,针对的是Match service API 的位置参数传入个数上限,此处扩展到500
(12) /data/china-latest.osrm:
•指定要使用的地图数据文件的路径。这里指定的是宿主机当前目录下的 china-latest.osrm 文件,该文件通过 -v 选项挂载到了容器内的 /data 目录。

参考文档:

https://download.geofabrik.de/asia/china.html
https://project-osrm.org/docs/v5.24.0/api/#
https://github.com/fossgis-routing-server/osrm-backend
https://github.com/fossgis-routing-server/osrm-frontend
https://github.com/fossgis-routing-server/cbf-routing-profiles
https://map.project-osrm.org/about.html

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

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

相关文章

Pytest-Bdd-Playwright 系列教程(10):配置功能文件路径 优化场景定义

Pytest-Bdd-Playwright 系列教程(10):配置功能文件路径 & 优化场景定义 前言一、功能文件路径的配置1.1 全局设置功能文件路径1.2. 在场景中覆盖路径 二、避免重复输入功能文件名2.1 使用方法2.2 functools.partial 的背景 三、应用场景总…

HarmonyOs鸿蒙开发实战(17)=>沉浸式效果第二种方案一组件安全区方案

1.沉浸式效果的目的 开发应用沉浸式效果主要指通过调整状态栏、应用界面和导航条的显示效果来减少状态栏导航条等系统界面的突兀感,从而使用户获得最佳的UI体验。 2.组件安全区方案介绍 应用在默认情况下窗口背景绘制范围是全屏,但UI元素被限制在安全区内…

构建安全的数据库环境:群晖NAS安装MySQL和phpMyAdmin详细步骤

文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 本文将详细讲解如何在群晖NAS上安装MySQL及其数据库管理…

【c++丨STL】list的使用

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:C、STL 目录 前言 list简介 一、list的默认成员函数 构造函数(constructor) 析构函数 赋值重载 二、list的迭代器接口 迭代器的功能分类 三、list的容量…

如何编译 Cesium 源码

如何编译 Cesium 源码 Cesium 是一个开源的 JavaScript 库,用于构建 3D 地球和地图应用程序。它提供了一套强大的 API 和工具,使开发者能够创建丰富的地理空间应用。本文将指导您如何从 GitHub 下载 Cesium 源码,并在本地进行编译。 TilesB…

实验5:网络设备发现、管理和维护

实验5:网络设备发现、管理和维护 实验目的及要求: 通过实验,掌握Cisco 路由器和交换机的IOS配置管理。自动从NTP服务器获取时间信息。能够利用TFTP服务器实现路由器和交换机配置文件的备份和恢复。同时验证CDP协议和LLDP协议的网络参数。完…

全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS编译开发说明

3、RTOS编译开发说明 3.1、RTOS SDK与TinaLinux开发环境 RTOS SDK相关代码已集成到Tina Linux开发环境,Tina Linux开发环境下的rtos子目录即为RTOS开发环境。 ├──brandy ├──bsp ├──build ├──buildroot ├──build.sh >build/top_build.sh ├──…

汽车资讯新篇章:Spring Boot技术启航

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

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

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-04 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-04目录1. Alopex: A Computational Framework for Enabling On-Device Function Calls with LLMs摘要:研究背景&…

细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的方法

目录 一、DMA基础知识 1、DMA简介 (1)DMA控制器 (2)DMA流 (3)DMA请求 (4)仲裁器 (5)DMA传输属性 2、源地址和目标地址 3、DMA传输模式 4、传输数据量的大小 5、数据宽度 6、地址指针递增 7、DMA工作模式 8、DMA流的优先级别 9、FIFO或直接模式 10、单次传输或突…

review-消息中间件MQ

RabbitMQ RabbitMQ,作为当今流行的开源消息代理软件,以其卓越的可靠性、灵活性和易用性在微服务架构和分布式系统中扮演着至关重要的角色。它不仅能够确保消息在不同系统组件间的高效传递,还能通过其高级消息队列协议(AMQP&#x…

使用 .NET 创建新的 WPF 应用

本教程介绍如何使用 Visual Studio 创建新的 Windows Presentation Foundation (WPF) 应用。 使用 Visual Studio,可以向窗口添加控件以设计应用的 UI,并处理这些控件中的输入事件以与用户交互。 在本教程结束时,你有一…

【青牛科技】视频监控器应用

1、简介: 我司安防产品广泛应用在视频监控器上,产品具有性能优良,可 靠性高等特点。 2、图示: 实物图如下: 3、具体应用: 标题:视频监控器应用 简介:视频监控器工作原理是光&#x…

Android 项目依赖库无法找到的解决方案

目录 错误信息解析 解决方案 1. 检查依赖版本 2. 检查 Maven 仓库配置 3. 强制刷新 Gradle 缓存 4. 检查网络连接 5. 手动下载依赖 总结 相关推荐 最近,我在编译一个 Android 老项目时遇到了一个问题,错误信息显示无法找到 com.gyf.immersionba…

esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器

MQTT介绍 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,旨在设备之间进行通信,尤其是在网络条件较差的情况下。MQTT v3.1.1 和 MQTT v5 是该协议的两个主要版本。 MQTT v3.1.1: 优点&#xff…

2、 家庭网络发展现状

上一篇我们讲了了解家庭网络历史(https://blog.csdn.net/xld_hung/article/details/143639618?spm1001.2014.3001.5502),感兴趣的同学可以看对应的文章,本章我们主要讲家庭网络发展现状。 关于家庭网络发展现状,我们会从国内大户型和小户型的网络说起&…

element ui 走马灯一页展示多个数据实现

element ui 走马灯一页展示多个数据实现 element ui 走马灯一页展示多个数据实现 element ui 走马灯一页展示多个数据实现 主要是对走马灯的数据的操作,先看js处理 let list [{ i: 1, name: 1 },{ i: 2, name: 2 },{ i: 3, name: 3 },{ i: 4, name: 4 },]let newL…

linux文件与重定向

目录 一、共识原理 二、回顾C语言文件函数 1.fopen 2.fwrite 3.fclose 三、文件系统调用 1.open 2.write 3.访问文件的本质 4.stdin&&stdout&&stderror 5.文件的引用计数 四、重定向 1.文件描述符的分配规则 2. 输出重定向 3.重定向系统调用 4.…

CS DAC的Matlab建模与电路设计

在模拟电路设计的复杂世界里,每一个细节都至关重要。Current Steering DAC作为模拟数字转换的核心组件,其设计和性能优化一直是工程师们追求的目标。 “什么是Current Steering DAC? CS DAC通过控制电流源的开关,将数字输入信号…

网络传输:网卡、IP、网关、子网掩码、MAC、ARP、路由器、NAT、交换机

目录 网卡IP网络地址主机地址子网子网掩码网关默认网关 MACARPARP抓包分析 路由器NATNAPT 交换机 网卡 网卡(Network Interface Card,简称NIC),也称网络适配器。 OSI模型: 1、网卡工作在OSI模型的最后两层,物理层和数据链路层。物…