个人跑步地图 2020 版 • 手艺
个人跑步地图 2020 版 • 手艺
Trail Watch 是老一代行山爱好者常用的记步程序。(其他几个 App 见 香港行山资源 22 个[1])
过去几年的习惯是行山用 Trail Watch 记录,跑步用 Strava 记录。最近被人忽悠入了跑步可视化的坑,没办法得统一下数据。
Trail Watch 有提供 gpx 文件的下载,所以只需要解决批量下载的问题即可。
先看下面板的样子:
每个活动都有一个唯一的 ID,稍微分析一下页面,可以得到过去 55 个活动 ID 的列表:
然后进入其中一个活动,看下 gpx 导出按钮(“Export”)的事件监听:
跟着这个事件处理函数,找到从 ID 拼接 gpx 文件路径的逻辑:
比如,其中一个 gpx 文件的下载链接如下:
https://www.trailwatch.hk/?t=gpx&export&i=472214
先把这些 ID 存到一个叫 “list” 的文件中,然后使用 wget 下载,用 xargs 开 5 个并发:
然后就得到这堆东西了:
目前我以 Strava 为中枢,也买了他的 premium pack,所以会继续使用好一段时间。
得到这些 gpx 文件后,可以上传到 Strava:
不用担心重复上传,Strava 会根据路径信息去重 [编注 2022: 应该是只检查了开始时间]。所以即使网络有问题,也可以放心上传了,有效缓解了强迫症们的压力。
上传完成后,跑一下昨天的地图可视化流程,得到第一个版本:
我们先利用 Yihong 的开源项目,做一个地图可视化。项目文档非常清晰,从同步 Strava 数据,到开启本地 node 服务器,跟着做大概半小时就能搞定。在此就不赘述。以下链接和二维码通往项目主页。
https://github.com/yihong0618/running_page
注:如果是 Strava 导入,原项目只包含 “Run” 类型的记录;不少同学在香港喜欢跑山,可能使用
“Hike” 类型进行记录。以下修改参考了 Geekplux 的 fork[2]。
如果将地图缩放到其中一个区域,会发现一些问题。其中一条横线,从日落观澜亭,直接划到了湾仔…… 这是因为我第一次跑追日路线[3] 失败,在距离终点 200m 的地方手机停电了。等再次上电,都已经到家。Trail Watch 这个 App 做得比较早,不会智能停表,就这样划了一笔回来,颇为难看。
快速扫描了一下导入的路线,发现类似事故过去还出现过多次,比如:
好在 Strava 有这个 crop 的功能,可以剪掉异常的部分:
清理之后的路线图,看起来就正常多了:
那接下来,就是如何从将近 300 个路径中,找到有异常的?
其实 gpx 文件每 10s 左右,会记录一个点,所以只需要观察前后两个点就行,通常这种异常会表现为几种形式:1、距离过长;2、时间过长;3、速度过大(e.g. 上车后忘记关表)。
这部分代码放 gist[4] 上了,可扫码访问。
https://gist.github.com/hupili/600d6ad064de63945118ae1e4e23be9c
经过系统扫描,发现了几条异常路线,比如第一次失败的追日:
也有一些不太好修改,比如这次和朋友爬西高山,上山前误触停表了,发现的时候已经到了山顶,所以就直接划了一横。好在时间和距离没什么畸变,不影响运动统计,就这样留着吧。
针对我 Strava 上记录,也尝试用其他可视化方法探索一下。
稍微修改下,把起始点的座标记录下来。以距离为半径,做气泡图。
Zoom in 到香港,用颜色区分 Run 和 Hike。
博闻
|
明察
|
躬行
心法
|
手艺
|
随想