天天看點

帶着兒子,三步把運動軌迹做成熱力圖

作者:好奇的奇遇

偶然刷華為健康發現可以申請下載下傳個人所有運動資料,于是送出申請。資料不能當時得到,經過了差不多一周,資料包才準備好,申請以及準備資料包的過程中,華為會反複地與你确認資料是不是提供給本人,麻煩是麻煩了一些,但畢竟是個人敏感資料,不接受也得接受。

資料拿到了,幹什麼用呢?兒子突發奇想,想把之前的所有運動軌迹做成一張熱力圖。

帶着兒子,三步把運動軌迹做成熱力圖

過去一年多,大江南北的足迹

于是說幹就幹,中間走了不少彎路,不過過程還是挺有意思。

第一步首先得把航點資料整理出來。兒子這些日子正熱衷于pathon,整理資料的任務主要由兒子承擔。當然不用pathon也是可以的,就是excel處理這麼大量的資料每一步費時不少。

大約一年半以前開始使用華為手環,後來更新成watch GT runner。之前就有過類似的想法,當時是用手機生成每一次運動的路徑,然後導出路徑,把路徑放到google earth裡,大概有那麼個意思,密密麻麻的“倒水滴”,完全沒有熱力圖的效果,非常亂。

經過解壓的華為運動資料量不小,所有航點資料存儲在一個叫做motion path detail data.json的檔案當中。經過兒子的分析、篩選整理,得到75萬個航點數值。資料量上來之後,用Excel等工具處理的速度一下子慢了許多。十來行pathon程式,幾秒鐘就處理完了,兒子那種成就感就别提了,“這是我第一次編‘有用’的程式!”

帶着兒子,三步把運動軌迹做成熱力圖

熱力深圳

接下來就是用工具制作熱力圖。最常找到的熱力圖工具通常是把特定地理位置的某項數值做成熱力圖效果,比如為北京市的朝陽區指定一個特定的位置坐标,再把當地測得的pm2.5賦到這個位置上,這樣的工具有許多,算是一種資料可視化。但我們要做的是将大量随機的點放到地圖上根據出現的密度表現為地圖上的熱度值。百度、高德還有不少做地理資訊系統的工具貌似可以做,要麼需要編寫網面腳本,要麼需要付費,而我們隻是為了體驗一下。最後找到了一個工具,arcgis pro,軟體有多種版本,包括單機的、企業的,還有21天試用版,可以為教育工作者和學生開通免費帳号。開通了一個試用帳号,但後來發現實際上用web版本就可以完美實作我們要的效果。

帶着兒子,三步把運動軌迹做成熱力圖

熱力帝都

具體操作花時間最多的環節還是處理資料,75萬多條的資料導進去對哪個軟體都是災難,于是我們用間隔提取的辦法分别制作了1/100,1/50,1/20,1/10四套資料。試驗結果1/100的資料航點間隔有點大,放大之後顯示效果差強人意,1/10的資料間隔夠小,系統處理起來已經非常慢了,最後使用了1/100,1/50,1/20三套資料,以1/50和1/20顯示效果比較好。

帶着兒子,三步把運動軌迹做成熱力圖

熱力滑雪場

具體做法:

第一步:準備好的航點資料(.csv檔案)

第二步:是通路(https://learngis2.maps.arcgis.com/),注冊并激活帳号;

登入網站,點選“内容”,把準備好的航點資料拖到“我的内容”頁面下,按系統引導映射相應的字段,每個帳号有的位址配額是有限的,但我們隻要存入經緯度資訊,是以不受影響;

第三步:在map viewer中可以調整導入的航點顯示的風格、參數,根據自己的喜好來,底圖也有許多種風格可以選。

帶着兒子,三步把運動軌迹做成熱力圖

.csv檔案可以直接拖到或側區域

帶着兒子,三步把運動軌迹做成熱力圖

資料導入之後,打開map view檢視

帶着兒子,三步把運動軌迹做成熱力圖

調整顯示風格為“熱力圖”

帶着兒子,三步把運動軌迹做成熱力圖

調整熱力圖的顯示效果

帶着兒子,三步把運動軌迹做成熱力圖

底圖背景也是可以選擇的

從大的步驟上來說以上三步就可以做出自己的運動軌迹熱力圖,有興趣的夥伴可以摸索着來。