离线电子地图路径规划

2023-12-19 01:40

本文主要是介绍离线电子地图路径规划,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本来想弄个电子地图和无人驾驶联系起来,后来发现中间存在的问题太多了,坐标系转换、点的精度、地图尺寸等问题,后来就没将二者 联系起来,只做出来一个基于MFC与HTML交互的离线电子地图路径规划的程序。

做这个参考了好多资源吧,其中也有些是自己写的,我这里就是整理整理。

首先说明我的程序能实现什么,先放图

首先是一个MFC框架,占据最大地方的是一个web空间,通过在onintit中加载一个URL把HTML的文本文档加载进去,这个很简单,CSDN上有教程。

地图我是用的OpenStreetMap的地图,用Maperitive下载瓦片,存放出一个Tiles,也可以使用在线地图,只需要把html中的链接该成网址即可,

    //var osmUrl='http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';var osmUrl='Tiles/{z}/{x}/{y}.png';

第一行是在线地图,第二行是调用下载好的离线瓦片资源。

这个问题也不大,网上有很对关于百度地图的加载教程,我使用的是leaflet

想要在地图中实现什么功能,找几个js就行

    <title>LeafletOSM</title><link rel="stylesheet" href="leaflet/leaflet.css">
<link rel="stylesheet" href="leaflet/leaflet.marker.highlight.css"><link rel="stylesheet" href="leaflet/leaflet-routing-machine.css"><link rel="stylesheet" href="leaflet/leaflet.contextmenu.css"><script src="leaflet/leaflet.js"></script><script src="leaflet/leaflet.marker.highlight.js"></script>
<script src="leaflet/es5-shim.min.js"></script>
<script src="leaflet/leaflet-routing-machine.js"></script>
<script src="leaflet/leaflet.contextmenu.js"></script>
<script src="leaflet/json2.js"></script>

。下面就是最重点的部分了,如何实现离线的路径规划,还要把数据提取出来。

graphhopper    什么原理咱也不懂,反正就是真香,在WINDOWS和LINUX中都能用,我是在Github上对着教程一点点尝试的,说实话,他们那教程有点混乱。

先说怎么用,在说怎么做吧,我是参考了一个博客做的 基于Leaflet和GraphHopper实现离线路径规划

写的不错,还有这个 基于OpenStreetMap地图数据的离线路径规划

怎么用呢,WIN+R  ,cmd,进入你下载某东西的一个盘,

java -Dgraphhopper.datareader.file=where.osm.pbf -jar graphhopper-web-****.jar server config-example.yml

输入这个代码就行了

解释一下,java 需要配置java环境

-Dgraphhopper.datareader.file=where.osm.pbf

使用graphhpper算法打开某地方的.osm.pbf文件,这个就是你所要进行路径规划的地图范围,比如:shandong-latest.osm.pbf 

-jar graphhopper-web-****.jar

****是一个版本号,自己去github下载最新版本对应上就行,

所以你的文件夹中应有三个文件

config-example.yml   配置文件

graphhopper-web-0.**.0.jar   算法文件

shandong-latest.osm.pbf    地图文件

运行后,会有下图显示

然后你保持这个终端开启,(linux一样,语句都一样),打开HTML地图,就能进行路径规划了。

至于HTML中怎么写,怎么用,如果有人看的话,下次再写吧

这篇关于离线电子地图路径规划的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/510486

相关文章

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

hdu2544(单源最短路径)

模板题: //题意:求1到n的最短路径,模板题#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#i

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl