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

地图匹配

就是将点映射到路段上的技术啦,懂得都懂哈~
因为本人是做城市计算移动轨迹方面的研究,所以经常要对一些车辆轨迹进行地图匹配,但是由于懒得自己实现地图匹配算法啦,【比较经典且有效的方法就是我们大名鼎鼎的HMM啦!详细可见:《hidden-markov-map-matching-noise-sparseness》】
今天就是来介绍一个宝藏框架,基于C++实现的Valhalla,有专门的API可以调用,方便各个小白使用啦!!

参考链接

先搬上一些参考链接:

  1. https://gis-ops.com/valhalla-part-2-how-to-run-valhalla-on-ubuntu/
  2. https://github.com/valhalla/valhalla
  3. https://valhalla.readthedocs.io/en/latest/api/map-matching/api-reference/
  4. https://hub.docker.com/r/gisops/valhalla
  5. https://towardsdatascience.com/map-matching-done-right-using-valhallas-meili-f635ebd17053

先展示效果

作者检查过很多,效果真的很好!

环境说明

因为框架的使用方式是服务器处理请求返回结果的方式,所以要用到以下的环境:

服务器:VMware + ubuntu 16.04 (配置的时候记得虚拟硬盘搞大一点,要不然后面再扩容感觉比较麻烦,我是虚拟机小白~)

使用教程

1. 下载完虚拟机以后的一些准备

  1. 记得换源!!如果不知道换源是什么的话,自行搜下“ubuntu16.04换源”,换源是为了让你更快地下载东西哈~推荐清华源哈!

换源以后记得先执行
sudo apt-get update
sudo apt-get upgrade

  1. 记得给github配置代理,自行搜下“github配置代理”

2. 安装

1. 安装vallhala,如失败请参考网页:https://github.com/valhalla/valhalla

# 打开终端输入以下命令
sudo add-apt-repository -y ppa:valhalla-core/valhalla
sudo apt-get update
sudo apt-get install -y valhalla-bin

2. 测试测试valhalla是否下载成功,如失败请参考网页(可能需要v屁恩):https://gis-ops.com/valhalla-part-2-how-to-run-valhalla-on-ubuntu/

# 打开终端输入以下命令
valhalla_build_config
valhalla_build_admins
valhalla_build_tiles -h
valhalla_service

3. 安装一些依赖

# 打开终端输入以下命令
sudo apt-get update
sudo apt-get install -y curl jq unzip spatialite-bin

4. 下载脚本文件且设置工作目录

# 打开终端输入以下命令
git clone https://github.com/valhalla/valhalla.git ~/valhalla/
# 如果这个仓库没了就换成https://github.com/kingsleyljc/valhalla.git
cd ~/valhalla/scripts/
mkdir valhalla_tiles && mkdir conf

5. 下载osm地图

# 打开终端输入以下命令,下面以下载albania地图为例
# 其它地图可以去https://download.geofabrik.de找
curl -O https://download.geofabrik.de/europe/albania-latest.osm.pbf
  1. 如果想自定义地图,即选定范围的地图,请选择进入osm网页自行选择:https://www.openstreetmap.org/export
  2. 由于从官网下载的地图文件格式是osm的,Valhalla框架所需要的地图格式是pbf的,所以需要将osm转为pbf。步骤见地图文件.osm格式与.pbf格式相互转换
  3. 将转换好的pbf文件移动到~/valhalla/scripts/目录下即可。

6. 准备配置文件

# 在~/valhalla/scripts/目录下
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 > ${PWD}/conf/valhalla.json

7. 建立管理区域

要用到上面下载的地图albania-latest.osm.pbf啦!

# 在~/valhalla/scripts/目录下
valhalla_build_admins --config ./conf/valhalla.json albania-latest.osm.pbf(这里可以换成你自己的地图)

8.构建路由块

cd ~/valhalla/scripts/
valhalla_build_tiles -c ./conf/valhalla.json albania-latest.osm.pbf(这里可以换成你自己的地图)
find valhalla_tiles | sort -n | tar -cf "valhalla_tiles.tar" --no-recursion -T -

9.开始跑

valhalla_service ~/valhalla/scripts/conf/valhalla.json 2

10.测试是否运行成功

# 新开一个终端测试一下
curl http://localhost:8002/route \
--data '{"locations":[{"lat":41.318818,"lon":19.461336},{"lat":41.321001,"lon":19.459598}],"costing":"auto"}' | jq '.'

开始地图匹配

1. 获得虚拟机的ip地址

2. 请求

请求方式:POST
即:http://192.168.111.134:8002/trace_attributes(记得换成你自己的ip)
主体如下:

{"shape": [{"lat": 22.752249,"lon": 113.82164,"type": "via"},{"lat": 22.751839,"lon": 113.823448,"type": "via"},{"lat": 22.751617,"lon": 113.823814,"type": "via"},{"lat": 22.751587,"lon": 113.823929,"type": "via"}],"costing": "auto","search_radius": 150,"format": "osrm"
}

例子:

2. 返回

如下图所示,返回的地图匹配的结果,即经纬度点如下图所示

3.批量处理

可以写脚本批量对服务器发起请求达到批量地图匹配的效果,如有需要可以私聊博主或者电邮695801027 ATT qq.com

署名

深圳大学 计算机与软件学院 物联网研究中心 BDUC研究小组 2018级本科生

最好用的地图匹配框架——基于HMM的Valhalla相关推荐

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

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

  2. 出租车轨迹地图匹配实例

    好用的轨迹地图匹配框架可以参见: 使用graphhopper(map-matching)进行地图匹配_lei吼吼的博客-CSDN博客 在上面这个博客中介绍了一些轨迹地图匹配的框架,并且详细介绍了gra ...

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

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

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

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

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

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

  6. Text to image论文精读 NAAF:基于负感知注意力的图像-文本匹配框架 Negative-Aware Attention Framework for Image-Text Matching

    NAAF:Negative-Aware Attention Framework for Image-Text Matching是基于负感知注意力的图文匹配,其利用匹配片段的积极影响和不匹配片段的消极影 ...

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

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

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

    与地图匹配相关的几个技术点 与地图匹配相关的几个技术点 GPS数据采集 Matlab mobile GPS独立硬件 二者对比: GPS坐标转换 GPS数据的可视化 交通路网 路网格式转换 准备文件 执 ...

  9. 基于机器学习的web异常检测——基于HMM的状态序列建模,将原始数据转化为状态机表示,然后求解概率判断异常与否...

    基于机器学习的web异常检测 from: https://jaq.alibaba.com/community/art/show?articleid=746 Web防火墙是信息安全的第一道防线.随着网络 ...

最新文章

  1. python定义一个类和子类_Python定义类、定义子类以及super()函数的使用
  2. 数据库索引失效情况汇总
  3. HP_UX常用指令列表(转,整理过,方便使用)
  4. JSON 语法之JSON null
  5. .net stardant 2.0创建及引用说明--Nuget包
  6. python的sdk是什么意思_python sdk
  7. adobe出的cookbook
  8. 在线html代码生成器,支持网页快速排版 CSS代码一键生成的在线设计工具
  9. html整体布局居中,html 居中布局
  10. jq22插件库视频播放插件Video.js,jq22资源分享
  11. html+table表头固定,HTML table固定表头,htmltable固定表分享
  12. macOSX下格式化外接固态硬盘
  13. 网络安全等保/安全合规总结
  14. php能不能用super,supersu怎么用
  15. 《给青年的十二封信》 朱光潜 (摘录)
  16. 启动计算机按住del不放,电脑黑屏bios界面都进不去怎么办
  17. 百事可乐AI人工智能生产过程破光
  18. A Scalable Probabilistic Tensor Factorization(SPTF)论文小结
  19. 千万别惹程序员,39 个奇葩代码注释...
  20. Java中正则表达式 .* 的含义

热门文章

  1. 使用Button(按钮)
  2. BZOJ1296(SCOI2009)[粉刷匠]--背包+DP
  3. c语言 宏定义swap函数,C++ 用宏实现swap(a,b)
  4. 基于STC15W408AS蓝牙智能小车
  5. SpringBoot 集成Swagger3+knife4j
  6. 写个日志请求切面,前后端甩锅更方便
  7. 项目中如何避免团队成员相互甩锅?
  8. 从儿时的科幻电影到spaceX的火箭回收
  9. js数组按中文拼音排序_JavaScript数组
  10. Cocos2d-x 面试题解 整理01