现有各种各样的运动app、运动手表手环以及gps码表等可以用于记录日常骑行或跑步等运动轨迹;但轨迹显示多数只限于显示一天的轨迹,经过搜索只发现一篇文章介绍跑步轨迹叠加方法(查看),根据教程尝试了下还因为perl语言的一些插件没搞定,果断放弃决定自己动手丰衣足食。

先上效果图:

ps:那条长线不是绘制的有问题,的确是单日骑行距离最远的一次,260多公里(开始30多公里由于码表磁铁位置问题只记录了几公里,码表记录233公里)。

济南市附近轨迹,缺个环泰:

卫星地图轨迹:

轨迹绘制方法:

作为一位骑行爱好者,手头刚好有一部捷安特码表。虽然其对应的APP显示的数据一应俱全,但是轨迹显示效果非常一般,如下图所示。作为一名经验丰富的IT从业者,多年的职业训练带来的敏锐直觉告诉我(没错,就是要自吹自擂然后加粗强调一下!):既然它的app能画出轨迹,码表本身必然保存有轨迹的原始数据,而且很有可能是gps的经纬度组成的点的序列。只要能拿到这些轨迹的原始数据,就能根据经纬度画出所有轨迹。

说干就干,首先把码表通过USB连接电脑,尝试一下看能不能访问内部的文件。进展顺利,发现内部有很多如下所示的.fit文件,而且文件名恰好跟自己的运动日期匹配,且文件大小根据对应日期骑行距离的长短大小不一,想必就是轨迹记录源文件了。

尝试用文本编辑器打开上述.fit文件,居然是乱码——很不幸,.fit文件是二进制文件,无法直接使用。经过一系列搜索发现.fit文件可以通过如下命令转换为另一种文本类型的gpx文件。

gpsbabel -i garmin_fit -f 170712051156.fit -o gpx -F 170712051156.gpx

但是目录下一百个文件,逐个文件执行命令并生成对应的gpx文件那得啥时候搞完?

一、gpx文件获取

linux优势立马体现出来,接下来给出获取gpx文件的详细步骤:

1. 进入存放.fit文件的目录,列出目录下的文件;

2. 把所有的fit文件名导入到文件fitfilelist中;

打开fitfilelist查看文件内容,是一百个fit文件名(图中截取部分):

3.使用正则表达式进行替换(正则表达式的使用),上图中的文件内容变成下图所示:

4.通过source fitfilelist执行fitfilelist文件中的一系列gpsbabel命令,等执行完就可以看到目录下多了很多gpx文件

5.创建gpxfile目录并将gpx文件移动到该目录:

查看一下gpx文件的内容,可以看到文件内容主要就是一系列经纬度、高度、时间、速度数据:

至此完成获取gpx文件部分。

二、利用gpx文件画轨迹图

这部分需要一定的python、django、javascript、HTML、CSS语言基础,以及了解高德地图API,看着语言很多,每个知识点只需要了解一点点就好;本文也直接给出了参考代码,不懂的地方可以去参考相关的官方文档。

本人也是一个跟芯片手册打交道的C语言驱动工程师,提到的这些语言基本都是为了画图现学的; 对于完成目标而言,学习难度并不高(能写出商用级别的代码又是另外一回事了)。

调用高德API画轨迹的步骤如下:

1.将第一部分获取到的gpx存放到/root/virenv_python3/django_for_study/mysite/polls/xmls/目录下;

2.django的view.py python文件导入xml解析模块:import xml.etree.ElementTree as ET,并编写函数完成如下功能:

遍历gpx文件,获取每个文件中的经纬度信息保存到变量path_dot中,所有文件的path_dot组成path_list, 通过render函数渲染给模板。

高能预警此处有坑:利用ElementTree模块递归查找gpx格式的xml文件(见上图)时,想通过查找‘trkpt’这个tag获取到每个tag下的‘lat’和‘lon’两个属性,但是无论如何获取不到,后来将tag打印出来发现内容为'{http://www.topografix.com/GPX/1/0}trkpt',即在trkpt前面加了文件中定义的xmlns的内容,将代码改为下图的496行所示就搞定了。

3.模板中通过javascript调用高德地图API加载地图,并为地图添加由一系列经纬度点组成的矢量折线:

3.设置url触发步骤2中的showmap函数,在浏览器中访问该URL,大功告成。现在还有点问题就是轨迹相比地图整体向西偏移了100米左右,我的码表以及小伙伴的码表数据绘制的轨迹偏移差不多。而且多次经过同一个位置的路线基本是叠加在一起的,这样看来码表记录基本准确,在数据基础上整体加个偏移就能跟地图完美重合了;有时间再研究。

python画运动物体的轨迹_使用python进行运动轨迹合并:多次骑行跑步轨迹叠加显示...相关推荐

  1. python画一朵彩色玫瑰花图片_使用Python画一朵美丽的玫瑰花

    原标题:使用Python画一朵美丽的玫瑰花 turtle 是 python 中一个强大的绘制图像的库,可以用来绘制各种图像,使用起来很方便.看看本文使用Python的turtle库画一朵美丽的玫瑰花, ...

  2. python画正方形并涂色_关于python使用cv画矩形并填充颜色同时填充文字

    原博文 2017-05-08 12:18 − font = cv2.FONT_HERSHEY_SIMPLEX # 使用默认字体 cv2.rectangle(im, (10, 10), (110, 11 ...

  3. python画二维温度云图_利用python画出词云图

    本文将介绍如何利用python中相应的模块画出词云图.首先给出效果图: 其中词云图中的词汇是对手机短信中的垃圾短信的统计,字体越大表示在垃圾短信中出现的频次越高.下面给出具体的步骤. 读取" ...

  4. python画小猪乔治动画片全集_使用Python的turtle画小猪乔治和哆啦 A 梦!附源码!...

    本人是Python新人小白,欢迎各位大佬指正,本文介绍的是用Python的turtle画一只小猪乔治. 还有本人画画基础超级差= =没天赋,画参考度娘上的一个图片画的. 先上总代码,然后说说我写的思路 ...

  5. 用python画出简单笑脸画法_【Python】怎么用matplotlib画出漂亮的分析图表

    特征锦囊:怎么用matplotlib画出漂亮的分析图表 ? Index 数据集引入 折线图 饼图 散点图 面积图 直方图 条形图 关于用matplotlib画图,先前的锦囊里有提及到,不过那些图都是比 ...

  6. python画小猪乔治动画片全集_使用Python海龟画粉红小猪

    儿子很喜欢看小猪佩奇,每天都要吆喝几声乔治,乔治,意思就是要看会电视里的小猪佩奇了.于是想到曾看到的用Python海龟模块画的粉红小猪佩奇,于是拿过来稍作整理,跑了一下,恩,效果还真是不错..向原作者 ...

  7. python画二维数组散点图_基于python二维数组及画图的实例详解

    基于python二维数组及画图的实例详解 下面小编就为大家分享一篇基于python 二维数组及画图的实例详解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 1.二维数组取值 注:不管 ...

  8. python画折线图代码实现_用Python画论文折线图、曲线图?几个代码模板轻松搞定!...

    前言 这几天在搞论文图,唉说实话抠图这种东西真能逼死人.坐在电脑前抠上一天越看越丑,最后把自己丑哭了-- 到了画折线图分析的时候,在想用哪些工具的时候.首先否决了excel,读书人的事,怎么能用exc ...

  9. python画动态玫瑰花图片大全_【python】trutle绘制送给女神的玫瑰花图

    天啊,没想到python龟绘制的图居然这么方便! ''' Created on Nov 18, 2017 @author: QiZhao ''' 代码传送门: import turtle # 设置初始 ...

最新文章

  1. java detach_线程 (detach的作用)
  2. gin路由打开html页面,Gin(二):使用路由
  3. 重新标注128万张ImageNet图片:多标签,全面提升模型性能
  4. oracle对比两列数据_oracle与mysql对同一张表 两列数据的某一字段进行值的交换
  5. 标签有关用法以及锚点定位;
  6. 一个简单好用的java增量更新工具
  7. Hadoop 系列之 HDFS
  8. 【iOS系列】-xib封装使用
  9. window.open怎么设置title_企业seo怎么优化 都有那些策略?
  10. Linux查看文件内容的6种命令
  11. 论文笔记_S2D.12-2019-ITSC-DFuseNet: 用于图像稠密深度补全的RGB和稀疏深度信息深度融合的网络
  12. 01-mnist数字识别
  13. 微信小程序使用 wxparse 解析 iframe腾讯视频
  14. C#如何实现 ASCII码与字母的互相转换?
  15. 微软向开发者免费提供的Windows 10虚拟机镜像
  16. 解决同一路由,不同参数报Navigating to current location ***** is not allowed 问题
  17. 计算机科学区别于数学和物理学,新编大学计算机基础
  18. PV270R1K1T1NMMC派克柱塞泵_应用
  19. 一个悄然崛起的国产软件
  20. UCS(统一计算系统)[1]

热门文章

  1. 【044】OEDC数据库-经合组织公开国家数据库
  2. 015:Django商城项目表单处理
  3. 如何编写商场超市行业群发短信
  4. exphp框架,只为快速的开发
  5. 大咖 | 王汉生:从数据到价值的转化,回归分析的“道”与“术”
  6. hashmap源码分析及常用方法测试_一点课堂(多岸学院)
  7. gateway内置过滤器工厂
  8. Django实战(9)——为人脸识别系统添加随机抽签功能
  9. 每月在“知乎”做出8万的业绩,告诉你怎么用截流赚钱?
  10. android4.0 x86,PC专用Android 4.0 x86系统上手体验