与地图匹配相关的几个技术点

  • 与地图匹配相关的几个技术点
    • GPS数据采集
      • Matlab mobile
      • GPS独立硬件
      • 二者对比:
    • GPS坐标转换
    • GPS数据的可视化
    • 交通路网
    • 路网格式转换
      • 准备文件
      • 执行生成sql的命令。
    • 路网搜索优化
    • 地图匹配中的参数
    • 分享:无人系统行业交流群

与地图匹配相关的几个技术点

自从发布若谷:Matlab算法案例— 基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching) 之后,不少乎友对此很感兴趣,并联系我,需要付费索求源代码,以供学习、毕业设计使用。
奈何在提供源代码后,依旧对一些细节,不甚清楚。本文试图总结,与地图匹配相关的几个个问题,供大家借鉴。

GPS数据采集

两种方式:

Matlab mobile

Matlab有个手机版,可以获取移动轨迹(经纬度)信息,并且格式以.mat格式存储,且匹配Matlab相关函数。

GPS独立硬件

本文采用带串口的GPS硬件,用来读取GPS实时采集的信息。 精度可能更高,取决于你的GPS硬件。比如,本文所示案例,其GPS硬件,精确到经纬度的秒,因此精度在15米以内。

关于GPS硬件数据采集,特别注意gPS的协议。详细解析方式,详见之前的知乎博文。

二者对比:

便捷性:Matlab mobile当然很方便,硬件成本为零。但是数据格式,主要支持Maltab。若需要转换数据格式,需要在Matlab中,进行数据读取。
数据精度:GPS独立硬件,数据精度更高,尤其是时间与位置的匹配上,由此产生的实时移动速度,也是精确的。在无遮挡的空旷地段,精度可以达到3米以内。比手机精度,要高。但是,在隧道等地段,手机端能获取数据,尽管数据不是精密测量的,很可能是通过手机自身的惯导和隧道内的通信技术,推算的结果。

GPS坐标转换

GPS坐标转换,主要是从经纬度转xyz坐标。 不用多说,直接上程序。见下方:

function  [x,y,utmzone] = deg2utm(Lat,Lon)
% -------------------------------------------------------------------------
% [x,y,utmzone] = deg2utm(Lat,Lon)
%
% Description: Function to convert lat/lon vectors into UTM coordinates (WGS84).
% Some code has been extracted from UTM.m function by Gabriel Ruiz Martinez.
%
% Inputs:
%    Lat: Latitude vector.   Degrees.  +ddd.ddddd  WGS84
%    Lon: Longitude vector.  Degrees.  +ddd.ddddd  WGS84
%
% Outputs:
%    x, y , utmzone.   See example
%
% Example 1:
%    Lat=[40.3154333; 46.283900; 37.577833; 28.645650; 38.855550; 25.061783];
%    Lon=[-3.4857166; 7.8012333; -119.95525; -17.759533; -94.7990166; 121.640266];
%    [x,y,utmzone] = deg2utm(Lat,Lon);
%    fprintf('%7.0f ',x)
%       458731  407653  239027  230253  343898  362850
%    fprintf('%7.0f ',y)
%      4462881 5126290 4163083 3171843 4302285 2772478
%    utmzone =
%       30 T
%       32 T
%       11 S
%       28 R
%       15 S
%       51 R
%
% Example 2: If you have Lat/Lon coordinates in Degrees, Minutes and Seconds
%    LatDMS=[40 18 55.56; 46 17 2.04];
%    LonDMS=[-3 29  8.58;  7 48 4.44];
%    Lat=dms2deg(mat2dms(LatDMS)); %convert into degrees
%    Lon=dms2deg(mat2dms(LonDMS)); %convert into degrees
%    [x,y,utmzone] = deg2utm(Lat,Lon)
%
% Author:
%   Rafael Palacios
%   Universidad Pontificia Comillas
%   Madrid, Spain
% Version: Apr/06, Jun/06, Aug/06, Aug/06
% Aug/06: fixed a problem (found by Rodolphe Dewarrat) related to southern
%    hemisphere coordinates.
% Aug/06: corrected m-Lint warnings
%-------------------------------------------------------------------------% Argument checking
%
error(nargchk(2, 2, nargin));  %2 arguments required
n1=length(Lat);
n2=length(Lon);
if (n1~=n2)error('Lat and Lon vectors should have the same length');
end% Memory pre-allocation
%
x=zeros(n1,1);
y=zeros(n1,1);
utmzone(n1,:)='60 X';% Main Loop
%
for i=1:n1la=Lat(i);lo=Lon(i);sa = 6378137.000000 ; sb = 6356752.314245;%e = ( ( ( sa ^ 2 ) - ( sb ^ 2 ) ) ^ 0.5 ) / sa;e2 = ( ( ( sa ^ 2 ) - ( sb ^ 2 ) ) ^ 0.5 ) / sb;e2cuadrada = e2 ^ 2;c = ( sa ^ 2 ) / sb;%alpha = ( sa - sb ) / sa;             %f%ablandamiento = 1 / alpha;   % 1/flat = la * ( pi / 180 );lon = lo * ( pi / 180 );Huso = fix( ( lo / 6 ) + 31);S = ( ( Huso * 6 ) - 183 );deltaS = lon - ( S * ( pi / 180 ) );if (la<-72), Letra='C';elseif (la<-64), Letra='D';elseif (la<-56), Letra='E';elseif (la<-48), Letra='F';elseif (la<-40), Letra='G';elseif (la<-32), Letra='H';elseif (la<-24), Letra='J';elseif (la<-16), Letra='K';elseif (la<-8), Letra='L';elseif (la<0), Letra='M';elseif (la<8), Letra='N';elseif (la<16), Letra='P';elseif (la<24), Letra='Q';elseif (la<32), Letra='R';elseif (la<40), Letra='S';elseif (la<48), Letra='T';elseif (la<56), Letra='U';elseif (la<64), Letra='V';elseif (la<72), Letra='W';else Letra='X';enda = cos(lat) * sin(deltaS);epsilon = 0.5 * log( ( 1 +  a) / ( 1 - a ) );nu = atan( tan(lat) / cos(deltaS) ) - lat;v = ( c / ( ( 1 + ( e2cuadrada * ( cos(lat) ) ^ 2 ) ) ) ^ 0.5 ) * 0.9996;ta = ( e2cuadrada / 2 ) * epsilon ^ 2 * ( cos(lat) ) ^ 2;a1 = sin( 2 * lat );a2 = a1 * ( cos(lat) ) ^ 2;j2 = lat + ( a1 / 2 );j4 = ( ( 3 * j2 ) + a2 ) / 4;j6 = ( ( 5 * j4 ) + ( a2 * ( cos(lat) ) ^ 2) ) / 3;alfa = ( 3 / 4 ) * e2cuadrada;beta = ( 5 / 3 ) * alfa ^ 2;gama = ( 35 / 27 ) * alfa ^ 3;Bm = 0.9996 * c * ( lat - alfa * j2 + beta * j4 - gama * j6 );xx = epsilon * v * ( 1 + ( ta / 3 ) ) + 500000;yy = nu * v * ( 1 + ta ) + Bm;if (yy<0)yy=9999999+yy;endx(i)=xx;y(i)=yy;utmzone(i,:)=sprintf('%02d %c',Huso,Letra);
end

GPS数据的可视化

不考虑背景地图的话,GPS数据的可视化,是特别简单的。本文主要考虑带有地图遥感影像的GPS可视化。本文,主要考虑将gps数据,制作成KML文件,在google Earth上,进行可视化显示。

经过地图辅助后,就变得漂亮多了。

以上地图,是基于高德导航地图,进行的数据可视化。高德地图,还提供了动态演示效果的展示。如下图所示:

交通路网

交通路网数据,有很多下载渠道。本文选择了最通用的渠道,就是从开源地图Open Street Map上,免费下载。如图,选择地图区域,并且导出。

不过,需要指出的是,OSM(Open Street Map)的地图,格式不一定满足数据处理的要求,往往需要进行格式转换,才能进一步使用。

路网格式转换

本文,就是把Open Street Map 转成为SHAPE file格式后,进行地图匹配的。毕竟,shapefile格式的软件基础ArcGIS是最广泛的。
其中一个工具是ArcMap,进行格式转换。

具体格式转换,详见下方图示中的按钮和命令。

转化成shapefile格式之后,还要转成编程语言能便捷操作的,比如存储至关系数据库中。
有一个比较常用的工具,shp2mysql。 值得推荐,从2009年第一次使用,到现在,陆陆续续地使用着。之前的博客, 也有介绍。
https://zhuanlan.zhihu.com/p/102120251

准备文件

一个shp文件有多个文件组成, .dbf, .sbn, .sbx, .shp, .shx.
将shp以及shp的相关文件和DOShere文件放在同一目录下。

执行生成sql的命令。

shp2MySQL shp文件名.shp 表名 数据库名 > 生成的sql文件名.sql
进入该文件目录,执行下述命令:

shp2MySQL Line.shp line hmm4mmYuan > line4mm.sql

路网搜索优化

面对浩如烟海的路网数据,为了优化路网的搜索效率,GIS的空间分析中,常常采用的是四叉树的数据结构,对路网进行分块、分级存储。本文不进行细致说明。有意者,请关注之前的HMM一文,其包含的代码部分,有详细介绍。

地图匹配中的参数

基于隐马尔科夫链的地图匹配中,由于要建设5项参数,其中概率转移时,要考虑前后两个点,到线的映射关系,这其中的转移概率,受到线段长度与相邻GPS点的平均距离。

  • 相邻点的最大、最小、平均距离;
  • 道路线的最大、最小、平均长度;
  • 道路线的总数量;

分享:无人系统行业交流群

若谷:自动驾驶行业交流群及公约

自动驾驶技术是实现更高程度的智能生活的技术基础,目前已经广泛应用于无人车/船/机。
欢迎大家交流无人系统行业的技术发展(工业数据采集,感知(雷达/毫米波/红外),人工智能算法,图像识别,精密控制,建模与仿真)、产业全供应链融合、岗位招聘与人才求职、创新创业与融资扩产、行业羽毛球联谊赛。
我是无人驾驶辅助系统ADAS企业的开发者,撰写《无人驾驶–视觉·感知·控制》

与地图匹配相关的几个技术点相关推荐

  1. 地图距离算法_基于权重的地图匹配技术

    文章目录 目录 地图匹配技术概览 文章目录 前言 一.地图匹配概述 二.轨迹预处理 1.降噪 1.1 中值滤波 1.2 极值滤波 1.3 分段 1.4 插值算法 三.基于权重的地图匹配算法 3.1.计 ...

  2. 定位技术的关键:基于环境特征的地图匹配(三)

    地图匹配定位是根据车辆相对于当地地标的位置来进行定位.在许多情况下,我们有提供当地地标的地图作为参考框架.基于先验地图,我们匹配历史中最相似的地图子集(图像/点云/特征点),根据匹配到的地图子集所提供 ...

  3. 基于在线地图的轨迹跟踪服务_JUST技术:利用轨迹拼接分析实时可达区域

    作者:JUST团队-李瑞远 如何快速得知从你的位置开始出发,在当前的交通状况下,5分钟之内能够抵达的空间区域范围?当你掏出手机打车时,出租车调度平台应该通知哪些范围的车主进行接单?本期技术前沿,京东城 ...

  4. 定位匹配 模板匹配 地图_什么是地图匹配?

    定位匹配 模板匹配 地图 By Marie Douriez, James Murphy, Kerrick Staley 玛丽·杜里兹(Marie Douriez),詹姆斯·墨菲(James Murph ...

  5. python地图匹配_基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法

    1. 摘要 本篇博客简单介绍下用隐马尔科夫模型(Hidden Markov Model, HMM)来解决地图匹配(Map-Matching)问题.转载请注明网址. 2. Map-Matching(MM ...

  6. 最好用的地图匹配框架——基于HMM的Valhalla

    最好用的地图匹配框架--基于HMM的Valhalla 地图匹配 就是将点映射到路段上的技术啦,懂得都懂哈~ 因为本人是做城市计算移动轨迹方面的研究,所以经常要对一些车辆轨迹进行地图匹配,但是由于懒得自 ...

  7. python地图匹配_地图匹配实践

    1 背景 如下图所示,1.2.3这三个点是汽车的GPS定位结果,尽管汽车是在道路上,但定位结果与道路存在偏差.地图匹配(Map Matching)是指将行车轨迹的经纬度采样序列与数字地图路网匹配的过程 ...

  8. 浙江农林大学python期末考试_基于Python的地图匹配最短路径法实现

    117 科学论坛 在智能交通领域,众所周知,智能 交通系统在当今世界道路交通网络的管 理中发挥着重要的作用,而车辆导航系 统又是智能交通系统的重要组成部分. 在车辆导航系统中,定位的精确性和实 时性是 ...

  9. 地图的相关使用(定位,地理编码,导航)

    概述 在移动互联网时代,很多社交类,团购类app都引入了地图,地图能解决用户的很多生活琐事,比如: 导航:去任意陌生的地方,汽车导航等 周边:找餐馆.找酒店.找银行.找电影院 总之,目前地图和定位功能 ...

最新文章

  1. mybatis foreach map_Spring Boot(五):春眠不觉晓,Mybatis知多少
  2. 课后作业-阅读任务-阅读提问-3
  3. 无法读取配置节“oracle.manageddataaccess.client”,因为它缺少节声明
  4. linux下批量添加新用户
  5. 怎么写字_写字楼外卖员不让进怎么办?写字楼外卖柜提供解决方案!
  6. 聊聊人工智能训练师AIT(Artificial Intelligence Trainer)
  7. java final 函数_JAVA中Final的用法
  8. 用计算机算出手机机主的名字,号码归属地查询及姓名?电话号码查询机主姓名?输入手机号知道机主?手机号码归属地查询姓名...
  9. gopher对mysql的利用_[题目]记一次利用gopher的内网mysql盲注
  10. [ROS]一些传感器数据读取融合问题的思考
  11. 我的世界服务器增加刷怪率,我的世界:最简易刷怪空间,别再暴殄天物了!
  12. python面向对象之抽象类
  13. Android Qcom USB Driver学习(一)
  14. matlab 脉冲密度调制,脉冲压缩技术研究指导.doc
  15. 文存阅刊杂志文存阅刊杂志社文存阅刊编辑部2023年第1期目录
  16. HIVE常用命令之MSCK REPAIR TABLE命令简述
  17. 注册会计可以用计算机,注册会计师考试能带科学计算器吗?
  18. 区块链的跨链技术介绍完整版
  19. 【Auto.js 】Android 脚本软件 简要介绍及学习资料
  20. js方法ajax return,AJAX_PJBLOG中用到的ajaxjs.几个简单的函数,function $(id) { return document.get - phpStudy...

热门文章

  1. 【shaderforge小实例】 遮罩
  2. ClickHouse ZK集群迁移
  3. Verilog RTL代码设计规范简单整理总结
  4. UPNP协议细节(转)
  5. Linux解压jdk文件时报错
  6. 今日小程序推荐:这波谁买单-买单也可以这样玩!
  7. WPS 论文智能排版
  8. 如何查看ebay的接口文档
  9. wps文本中表格表头重复_WPS表格设置打印表头让打印的每一页都显示相同的表头标题...
  10. 租号玩服务器未响应,win10cf进度条不动