Fitbitが計測したライドデータとSTRAVAに連携したデータの比較(高度編)
こんにちは、Takum!です。
前回に引き続き、FitbitとSTRAVAのライドデータの比較作業をしています。
このエントリーでは、Fitbitのデータと、FitbitのデータをSTRAVAに連携させた後のデータを比較してみます。
前回、それぞれのデータをDataFrameに変換し、pickleとして保存しましたので、それを使用していきます。
joinで結合してみます。
HR、緯度経度に違いは無いのですが、高度のデータが異なりました。
Matplotlibでグラフ化してみましょう。
生Fitbitのデータは25~50mくらい高い数値になっています。初期(一番左)地点は自宅なのですが、高度はGPS信号で読む限り、75mくらいです。なので、STRAVAに連携した方が正しく見えます。なお、STRAVAは補正するためのデータベースを持っており、デバイスが正しく高度を取れなくても、その座標の高度のデータベースから補正してくれるようです(STRAVAのFAQページ)。
ですが、後半のほとんどは平坦路です。STRAVAデータの跳ね上がっているところが気になります。この地点の緯度経度を見てみると、東二番丁通りなので、やはり平坦なはずです。しかし、下記のように左車線を走行しているはずが、大きく蛇行していました。この辺は道路沿いに背の高いビルやマンションがあるのもそうですが、バス停にてバスを右から追い越したりすることも影響しているんでしょう。そういったズレが、道路上ではなく、違う場所の高さに補正されているのかもしれません。
最後のFitbitがゼロに落ちているところは、地下にある駐輪場です。GPS信号が取れなくなった時点で、Fitbitはゼロになるんですね。STRAVAのほうは、先に述べた、最後に見えた地点の高さデータになっているかと思われます。
次は、STRAVAアプリで取得したデータとの比較をしてみようと思います。
前回に引き続き、FitbitとSTRAVAのライドデータの比較作業をしています。
このエントリーでは、Fitbitのデータと、FitbitのデータをSTRAVAに連携させた後のデータを比較してみます。
前回、それぞれのデータをDataFrameに変換し、pickleとして保存しましたので、それを使用していきます。
import pandas as pd import numpy as np import matplotlib.pyplot as plt df_fitbit = pd.read_pickle('fitbit.pickle') df_strfit = pd.read_pickle('stravafitbit.pickle')
joinで結合してみます。
HR、緯度経度に違いは無いのですが、高度のデータが異なりました。
df = df_fitbit.join([df_strfit]) df['lat_diff']=df['fit_lat']-df['stf_lat'] df['lng_diff']=df['fit_lng']-df['stf_lng'] df['hr_diff']=df['fit_hr']-df['stf_hr'] df['alt_diff']=df['fit_alt']-df['stf_alt'] df.tail()
fit_alt | fit_dist | fit_hr | fit_lat | fit_lng | stf_alt | stf_hr | stf_lat | stf_lng | lat_diff | lng_diff | hr_diff | alt_diff | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2019-01-31 08:22:35 | 57.500000 | 9388.570312 | 117 | 38.259911 | 140.875702 | 49.500000 | 117.0 | 38.259911 | 140.875702 | 0.0 | 0.0 | 0.0 | 8.000000 |
2019-01-31 08:22:36 | 58.000000 | 9389.860352 | 117 | 38.259911 | 140.875702 | 49.500000 | 117.0 | 38.259911 | 140.875702 | 0.0 | 0.0 | 0.0 | 8.500000 |
2019-01-31 08:22:37 | 58.400002 | 9391.219727 | 116 | 38.259922 | 140.875702 | 49.500000 | 116.0 | 38.259922 | 140.875702 | 0.0 | 0.0 | 0.0 | 8.900002 |
2019-01-31 08:22:38 | 58.549999 | 9392.669922 | 115 | 38.259930 | 140.875717 | 49.599998 | 115.0 | 38.259930 | 140.875717 | 0.0 | 0.0 | 0.0 | 8.950001 |
2019-01-31 08:22:39 | 58.700001 | 9394.230469 | 115 | 38.259937 | 140.875717 | 49.599998 | 115.0 | 38.259937 | 140.875717 | 0.0 | 0.0 | 0.0 | 9.100002 |
Matplotlibでグラフ化してみましょう。
fig, ax = plt.subplots() ax.plot(df.index, df['fit_alt']) ax.plot(df.index, df['stf_alt']) ax.legend(loc='upper right') plt.show()
Fitbitの生データとSTRAVAに連携した後の高度データ |
生Fitbitのデータは25~50mくらい高い数値になっています。初期(一番左)地点は自宅なのですが、高度はGPS信号で読む限り、75mくらいです。なので、STRAVAに連携した方が正しく見えます。なお、STRAVAは補正するためのデータベースを持っており、デバイスが正しく高度を取れなくても、その座標の高度のデータベースから補正してくれるようです(STRAVAのFAQページ)。
ですが、後半のほとんどは平坦路です。STRAVAデータの跳ね上がっているところが気になります。この地点の緯度経度を見てみると、東二番丁通りなので、やはり平坦なはずです。しかし、下記のように左車線を走行しているはずが、大きく蛇行していました。この辺は道路沿いに背の高いビルやマンションがあるのもそうですが、バス停にてバスを右から追い越したりすることも影響しているんでしょう。そういったズレが、道路上ではなく、違う場所の高さに補正されているのかもしれません。
STRAVAの走行軌跡。大きく蛇行している。地図はOpenStreetMap。 |
次は、STRAVAアプリで取得したデータとの比較をしてみようと思います。
コメント
コメントを投稿
コメントをどうぞ。