位置: 编程技术 - 正文

Python和Perl绘制中国北京跑步地图的方法(perl vs python)

编辑:rootadmin

推荐整理分享Python和Perl绘制中国北京跑步地图的方法(perl vs python),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:如何用python绘制,python permute,perl python ruby,python与perl,python与perl,python与perl,python和perl语言的区别,python和perl语言的区别,内容如对您有帮助,希望把文章链接给更多的朋友!

当你在一个城市,穿越大街小巷,跑步跑了几千公里之后,一个显而易见的想法是,我到底和之前比快了多少,跑量有何变化,如果能把在这个城市的所有路线全部画出来,会是怎样的景象呢?

1.数据来源:益动GPS

文章代码比较多,为了不吊人胃口,先看看最终效果:

[/code]

首先需要有原始数据信息,手机上众多跑步软件提供了详细的记录,但它们共同的问题是不允许自由导入导出(可能是为了用户粘性吧)。因此有一块智能运动手表应该是不二之选。我的是Garmin Fenix3,推荐一下:

益动GPS算是业界良心了,能够同步咕咚,Garmin手表,悦跑圈的数据,因此我将其作为一个入口,抓取所有的GPS数据。

至于如何同步,可参考网站上的相关介绍,下面是我登录该网站后的截图:

获取益动网站上的数据

登录之后,可以看出它是动态加载,当滚轮滚到最下时,自动加载后面的内容。本来是应该嗅探和分析http请求的,后来懒惰了。当拖到底,全部加载完毕后,保存了当前的html文件。

接下来就是解析这个Html,基本上是通过XPath的来做的。有经验的同学看了下图就都明白了:

图中高亮的部分,就是要下载gpx文件的实际地址。我们将其保存在urllist中。同时,元数据被保存在json文件里。

值得注意的是,因为下载时需要cookie,因此读者需要将自己在益动GPS的userid和登录的cookie都替换掉。

接下来就是下载的过程,获取导出数据按钮的URL的XPath,构造一个带cookie的请求,然后保存文件即可,非常容易。

之后,我们便保存了大约多个gpx文件

3. 解析gpx数据

所谓gpx数据,是一种通用规范的GPS数据格式,详细的资料可自行搜索。

我们需要使用python的gpx解析器, gpxpy是个好选择,使用

pip3 install gpxpy 即可安装。

gpxpy提供了丰富的接口,当然为了统计,我们只需要提取一部分数据:

readgpx函数会读取文件名x,并将一个字典返回。并得到类似下面的一张表:

Python和Perl绘制中国北京跑步地图的方法(perl vs python)

因为我们只需要绘制北京的区域,因此需要一个坐标表达式筛掉北京之外的地区。筛选代码使用了pandas,在附件里有更详细的代码。

exceptids=详细[(详细.lng<.1)|(详细.lng>.7)|(详细.lat<.9)|(详细.lat>.1)].id

这样,我们就将所有在北京完成的运动数据筛选了出来。

4.绘制GPS数据

反复造轮子是不好玩的,绘制gpx已经有比较强大的库,地址在 GD是需要libgd的,libgd却在官网上极难下载,下载后却又发现版本不对,这让我在国外互联网上遨游了好几个小时,都要死掉了。。。到最后,我才发现,安装libgd库只要下面这一步就可以了:

apt-get install libgd-gd2-perl

我觉得这就是apt-get方式坑爹的地方,apt get gd 或者libgd根本找不到,如果不去查,谁知道这么写啊! 至于Perl的CPan管理工具,哎,不说了都是泪。

接下来下载gd 2.,算是非常新的版本。找了各种中文版的安装步骤,发现都有问题。这种事情,最好的办法还是看README.MD啊!

解压之后,perl ./Makefile.PL

之后make

make install

然后就可以了。。。。。。

这份gpx绘制库是这么介绍自己的:

This folder contains several Perl scripts for processing and plotting

GPS track data in .GPX format. 它的readme有不少使用上的说明,当然我们不废话,把所有的gpx数据拷贝到sample_gpx文件夹下,然后华丽丽的运行 ./runme.sh 如果没有问题的话,应该是下面这样:

[/code

我假设各位读者对bash都已经很熟悉了,修改runme.sh文件,可查看更多的选项。 最后得到的结果如下图:

当时看到这个结果,我都惊呆了!这是自己跑了公里左右的结果,北京三环内(主要集中在长安街以北)主要的道路都遍了。尤其北三环和北土城路(号线北段)被我各种虐。每一段白线都是一段故事,每一个点都是我的一个脚印啊!

5.总结

这文章写得显然不够详细,远远没有hand by hand。而且并没有提供更多的数据分析(显然这些工作我都做了)不过相信跑步的程序员一定都很厉害,我这就权作抛砖引玉了。

其实完全可以做成一个web服务,跑友们上传自己的跑步软件的id,就可以自动渲染出各种漂亮的跑步路径和分析图,应该会很有意义吧!

这件事情花费了我七八个小时,简直吐血,大量的时间用在了如何安装GD上,而不是下载数据上。教训告诉我,一定要读安装包里自带的说明文档,因为库和库之间的版本不同,因此可能造成版本地狱,到时候新版本卸载不了,老版本没法用的时候可别说我没提醒啊!

值得一提的是,益动gps下载的gpx文件不带换行符,这导致gpx_disualization库无法解析它(这货正则表达式写错了),我懒得再去动perl正则,于是通过替换增加了换行符。

以上是小编给大家介绍的Python和Perl绘制中国北京跑步地图的方法,希望对大家有所帮助!

Python中的数据对象持久化存储模块pickle的使用示例 Python中可以使用pickle模块将对象转化为文件保存在磁盘上,在需要的时候再读取并还原。具体用法如下:pickle是Python库中常用的序列化工具,可以将内

举例简单讲解Python中的数据存储模块shelve的用法 shelve类似于一个key-value数据库,可以很方便的用来保存Python的内存对象,其内部使用pickle来序列化数据,简单来说,使用者可以将一个列表、字典、或

Python程序中用csv模块来操作csv文件的基本使用教程 CSV全称为CommaSeparatedValues,是一种格式化的文件,由行和列组成,分隔符可以根据需要来变化。如下面为一csv文件:Title,ReleaseDate,DirectorAndNowForSomethingComple

标签: perl vs python

本文链接地址:https://www.jiuchutong.com/biancheng/383376.html 转载请保留说明!

上一篇:python套接字流重定向实例汇总(套接字java)

下一篇:Python中的数据对象持久化存储模块pickle的使用示例(python数据操作)

  • 增值税加计扣除是什么意思啊
  • 土增清算尾盘销售
  • 移动发票抬头个人税号公司能报销吗
  • 收到补助款的会计分录
  • 公司租房子出去物业费可以代付吗
  • 补交以前年度的社保账务处理
  • 律师行业税务如何做账
  • 收到银行存款怎么记账
  • 转账支票给员工转工资
  • 地税没报税怎么办
  • 建筑业简易征收的适用范围
  • 水利建设基金的计税依据及税率
  • 6%税率的项目(不含金融商品转让)免税么
  • 预提工程成本的会计分录
  • 发票已勾选未确认
  • 退役士兵增值税优惠申报方法
  • 限制性股票股利会计处理
  • 经营性租入的设备是资产吗
  • 预缴企业所得税分录
  • 专项资金如何做账务处理
  • 员工生育礼品
  • 应付票据发生与偿还怎么计算?
  • 1697510586
  • 新公司能先用别人的钱吗
  • win11多任务怎么用
  • 苹果macmimi
  • 全免增值税企业有哪些
  • 一般纳税人是什么发票
  • 公司总经理报销找谁签字
  • linux使用cp
  • win10最新版本22h2激活
  • 事业单位专项经费包括哪些
  • 购入原材料所发票怎么入
  • 埃热泽尔斯湖面上的波纹,拉脱维亚拉特加尔地区 (© Eaglewood Films/Nimia)
  • 将款项汇往外地采购专用账户会计分录
  • php时间戳相减
  • pytorch中的数据类型
  • vue动态绑定class的方法
  • springboot集成clickhouse
  • redis zset源码
  • react extend
  • 【C#+JavaScript+SQL Server】实现Web端考试系统 六:后台管理模块设计(附源码和资源)
  • 固定资产一次性扣除政策
  • 发票校验码二维码看不到了怎么查
  • 个人所得税专项附加扣除标准一览表
  • 个体户开票超过10万怎么交税
  • 防伪税控开票
  • mysql转数字为字符串
  • 利息收入算什么会计科目
  • 长期借款的会计分录怎么写
  • 公司开业装修费会计分录
  • 财务费用减少记借方还是贷方
  • 增值税出口退税款缴纳企业所得税吗
  • 记账凭证的编制依据是审核无误的原始凭证
  • 公司法人转账到公司账户
  • 利息返还是什么意思
  • 汇算清缴如何调到不退不补
  • 企业存货计价方法发生变更案例
  • 作废发票丢了罚款多少
  • 银行对账单怎么修改
  • 企业包装物核算范围
  • sqlserver1053怎么解决
  • linux谷歌浏览器安装指令
  • linux图片编辑软件
  • 极速一键装机
  • win7双硬盘双系统
  • incorrect email format, please re-enter.
  • Mac如何设置自动锁屏
  • redhat linux enterprise 5 输入ifconfig无效的解决方法
  • Win8/8.1下通过dism命令解压install.wim文件步骤
  • windows累积更新失败怎么办
  • cocos2dx4.0入门
  • 一键删除通讯录联系人
  • jquery设置宽高
  • Tasharen Fog of War v1.0战争迷雾插件的使用(含Unity5.0Bug解决)
  • jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
  • unity获取物体位置代码
  • 请问关于煤炭的法律法规
  • 广西自然人税收管理系统扣缴客户端手机版
  • 查税务在哪里查
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设