HMM地图匹配算法库Barefoot环境搭建

1.引入gps路径匹配开源项目barefoot

克隆仓库

git clone https://github.com/bmwcarit/barefoot.git

打开项目执行mvn命令将项目打包到maven仓库

mvn install -DskipTests

在自己的maven项目中引入barefoot依赖

        <dependency><groupId>com.bmw-carit</groupId><artifactId>barefoot</artifactId><version>0.1.5</version></dependency>

下载地图数据

手动划定深圳市范围,下载osm.pbf格式数据

下载地址:https://extract.bbbike.org/

overpass api可下载指定城市或区域的地图

2.安装PostgreSql数据库及相关支持

安装PostgreSql

安装用于导入osm.pbf格式地图数据的工具osmosis,下载下来直接解压,并将其bin目录路径添加到环境变量path中即可。
下载地址:https://bretth.dev.openstreetmap.org/osmosis-build/
用osmosis将osm.pbf文件解压为.osm格式文件

osmosis --read-pbf shenzhen.osm.pbf --write-xml shenzhen.osm

下载安装对应ArcGIS版本的osm编辑插件,然后在插件中用load osm file将.osm文件导入到ArcGIS中,导入的时间可能会比较长,放在那等一下地图就会自己加载出来了
参考文章:https://support.esri.com/en/technical-article/000023329

3.将osm.pdf(或osm)地图数据导入到pg数据库

参考文章:PostgreSQL+PostGIS安装以及用Osmosis导入openstreetmap地图数据

首先在pgadmin4界面中新建一个数据库sz_osm,然后打开命令行终端,先运行两个给数据库安装扩展的命令,然后运行一个sql文件建表,注意sql文件路径中不能有中文或空格。

psql -U postgres -d sz_osm -c "CREATE EXTENSION postgis;"
psql -U postgres -d sz_osm -c "CREATE EXTENSION hstore;"
psql -U postgres -d sz_osm -f D:\IdeaProject\barefoot\map\osm\pgsnapshot_schema_0.6.sql

在这里插入图片描述
最后导入下载的osm.pbf地图数据

osmosis --read-pbf file=C:\Users\syc\Desktop\road_data\Road_data_download\shenzhen.osm.pbf --write-pgsql user=postgres database=sz_osm password=post

如果是osm格式的则将–read-pbf改为–read-xml。或者用如下命令将osm改为osm.pbf格式

osmosis --rx mainRoadByMerk.osm --wb mainRoadByMerk.osm.pbf

4. 使用barefoot库提供的脚本将pg数据库中的数据转换为bfmap格式

准备并启动python2.7环境,以下所有命令都要在python2.7环境中运行!!!!

安装三个Python库

conda install Psycopg2
conda install NumPy
conda install Python-GDAL

Python-GDAL这个库可能找不到,可安装gdal代替。安装时可能会出现环境无法解决的错误,解决方案可参考:https://blog.csdn.net/qq_27377201/article/details/107009927

conda install gdal

运行如下命令开始转换数据,注意新表名不要和原表名冲突

python D:\IdeaProject\barefoot\map\tools\osm2ways.py --host localhost --port 5432 --database sz_osm --table bf_ways --user postgres --slim
python D:\IdeaProject\barefoot\map\tools\ways2bfmap.py --source-host localhost --source-port 5432 --source-database sz_osm --source-table bf_ways --source-user postgres --target-host localhost --target-port 5432 --target-database sz_osm --target-table bfmap_ways --target-user postgres --config D:\IdeaProject\barefoot\map\tools\road-types.json

总结

使用开源库时一定要严格按照使用文档来,特别是软件包需要的版本,不能随意

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

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

相关文章

第五篇 加法器

实验五 加法器 5.1 实验目的 掌握半加器和全加器的基本原理 掌握串行进位加法器的基本原理 掌握使用全加器实现串行进位加法器的基本原理 熟悉Verilog 代码设计 5.2 原理介绍 5.2.1 半加器 半加器和全加器是算数运算电路中的基本单元&#xff0c;它们是完成1位二进制数…

PDA怎么编程:深度探索PDA编程的四大领域、五大步骤、六大技巧与七大注意事项

PDA怎么编程&#xff1a;深度探索PDA编程的四大领域、五大步骤、六大技巧与七大注意事项 在数字化时代&#xff0c;PDA&#xff08;个人数字助理&#xff09;作为一种便携式的智能设备&#xff0c;其编程能力日益受到关注。然而&#xff0c;对于许多初学者来说&#xff0c;PDA…

【leetcode--最后一个单词的长度】

给你一个字符串s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开&#xff0c;返回字符串中最后一个单词的长度。 第一次解法&#xff1a; class Solution:def lengthOfLastWord(self, s: str) -> int:n len(s)j 0for i in range(n-1, -1, -1):if s[i]…

centos 环境 nginx 安装及常用命令简介

一、引言 Nginx 是一个高性能的HTTP和反向代理服务器&#xff0c;因其卓越的性能、丰富的功能集、简单的配置和低资源消耗而广受欢迎。本文将详细介绍如何在CentOS系统中安装Nginx&#xff0c;并简要介绍一些常用的Nginx命令。 二、在CentOS中安装Nginx 1.先检查服务器 GCC …

K-means聚类模型算法的应用与原理

K-means聚类是一种非常流行的聚类算法&#xff0c;它的目标是将n个样本划分到k个簇中&#xff0c;使得每个样本属于与其最近的均值&#xff08;即簇中心&#xff09;对应的簇&#xff0c;从而使得簇内的方差最小化。K-means聚类算法简单、易于实现&#xff0c;并且在许多应用中…

《MySQL索引》学习笔记

《MySQL索引》学习笔记 MySQL的体系结构存储引擎简介InnoDB简介MyISAM简介 索引索引结构BTreeHash索引思考索引分类 索引语法SQL性能分析索引使用最左前缀法则 索引失效的情况范围查询索引列运算字符串不加引号模糊查询or连接的条件数据分布影响 SQL提示覆盖索引前缀索引单列索…

Ubuntu安装Meatsploit2024.6.4

1、安装metasploit cd /opt && wget https://downloads.metasploit.com/data/releases/metasploit-latest-linux-x64-installer.run && wget https://downloads.metasploit.com/data/releases/metasploit-latest-linux-x64-installer.run.sha1 && echo…

操作系统复习-linux的进程管理

linux的进程管理 linux进程的相关概念 进程的类型 前台进程 前台进程就是具有终端&#xff0c;可以和用户交互的进程&#xff0c;会占用终端shell&#xff0c;不可以输入其他的命令。 后台进程 前台进程就是具有终端&#xff0c;可以和用户交互的进程。 不会占用终端shell&a…

macOS的word没有zotero怎么办

打开zotero,首选项,引用,重新安装加载项 然后到word里 点模板和加载项 把zotero勾上,OK了

Java学习【认识异常】

Java学习【认识异常】 认识异常异常的种类异常的作用 异常的处理方式JVM默认的处理方式捕获异常finally 多个异常的处理异常中的方法抛出异常 自定义异常 认识异常 在Java中&#xff0c;将程序执行过程中发生的不正常行为称为异常 异常的种类 Error代表的是系统级别的错误&a…

ClickHouse 使用技巧总结

文章目录 数据导入、导出技巧外部文件导入导技巧使用集成表引擎导入、导出数据 建表技巧表引擎选择技巧分区键选择技巧数据结构选择技巧分区技巧 高级技巧物化视图投影位图变更数据捕获 常见报错及处理方法 数据导入、导出技巧 外部文件导入导技巧 ClickHouse作为OLAP即席分析…

每日一题《leetcode--206.反转链表》

https://leetcode.cn/problems/reverse-linked-list/ 这道题可以定义一个新结点newhead&#xff0c;newhead指向NULL。此时遍历所给链表将遍历的每个结点头插到newhead上。 struct ListNode* reverseList(struct ListNode* head) {struct ListNode* curhead;struct ListNode* n…

Spring中的核心概念

黑马程序员SSM框架教程 文章目录 一、IoC二、DI三、目标&#xff1a;充分解耦 一、IoC IoC&#xff08;Inversion of Control&#xff09;控制反转 使用对象时&#xff0c;由主动new产生对象转换为外部提供对象&#xff0c;此过程中对象创建控制权由程序转移到外部&#xff0c…

Visual Studio 2022开发CTP的问题汇总

订阅合约的函数原型如下 virtual int SubscribeMarketData(char *ppInstrumentID[], int nCount) 0;参数定义 char* ppInstrumentID[] { "rb2410", "sc2407" }; 报错&#xff1a;E0144 “const char *” 类型的值不能用于初始化 “char *” 类型的实体 …

Go语言垃圾回收(GC原理)

1. GC回收机制 1.1 V1.3标记清除法 (1)概述 1.STW暂停 STW(暂停业务逻辑,找出可达和不可达对象) 2.对可达对象做上标记 标记完成之后,对象5和对象6不可达,被GC清除.之后STW结束. (2).缺点 STW :让程序暂停,程序出现卡顿.标记需要扫描整个heap.清除数据会产生heap碎片. 1.…

常用的linux命令

工作中常用的linux命令 查看磁盘存储情况 df -h查看端口占用情况 netstat -tunlp | grep 端口号查看java服务运行情况 ps -ef | grep "java"查看运行内存使用情况 free -h清除内存中的缓存 echo 3 > /proc/sys/vm/drop_caches查看linux系统最大进程数 ulim…

前端面试题日常练-day50 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 1. 在Bootstrap中&#xff0c;以下哪个类用于创建一个具有响应式的图片&#xff1f; a) .img-responsive b) .responsive-img c) .responsive-image d) .image-fluid 2. 哪个Bootstrap类用于创建一…

YYDS练手 130道python练习题 完整版PDF

近年来&#xff0c;Python在编程语言界里赚足了风头&#xff0c;无论是受欢迎程度&#xff0c;还是薪资待遇&#xff0c;都非常可观&#xff0c;相应的&#xff0c;Python岗位要求也越来越高&#xff0c;无论你是零基础还是老前辈&#xff0c;在Python面试中都不能轻视。 不打…

Spring Boot 系统学习第五天:Spring循环依赖实战经验

1 概述 本篇主要介绍使用依赖注入的一些实战经验。 2 把握Bean的作用域 前面说到Setter方法注入时&#xff0c;提到了Spring中的Bean作用域的概念。作用域描述了Bean在Spring IoC容器上下文中的生命周期和可见性。现在讨论Spring框架中不同类型的Bean作用域及其在使用上的指导…

Java 枚举类型深入解析

在Java中&#xff0c;枚举&#xff08;enum&#xff09;是一种特殊的数据类型&#xff0c;它允许一个变量是预定义的常量集合中的一个值。枚举类型在许多场景中都非常有用&#xff0c;比如定义一组明确的常量、简化代码的可读性和维护性等。本文将详细讲解Java中的枚举类型&…