日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

使用python进行运动轨迹合并:多次骑行跑步轨迹叠加显示

發布時間:2023/12/13 综合教程 61 生活家
生活随笔 收集整理的這篇文章主要介紹了 使用python进行运动轨迹合并:多次骑行跑步轨迹叠加显示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現有各種各樣的運動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进行运动轨迹合并:多次骑行跑步轨迹叠加显示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。