Runkeeperの1年:旅行ジオデータの分析と視覚化







BernatEspigulé-Ponsの翻訳記事「 A Runyear of Runkeeper:Analysis and Visualization 」。

記事のコードはここからダウンロードでき、追加のファイルはこちらからダウンロードできます

Kirill Guzenkoに感謝します。
ほぼ1年前、 Runkeeperを使用してすべての動きを記録することにしました 。そして、年間活動を視覚化するためのいくつかのオプションを提示したいと思います。 プロジェクトはシンプルであることがわかりました:Runkeeperから自分の動きに関するデータをアップロードし、 Wolfram言語で分析/視覚化します。 このアニメーション(下記参照)は、バルセロナ周辺での私の動きを示しています。同じ方法を紹介します。







このページの指示に従って、Runkeeperからデータをエクスポートします。 別の方法があります-ServiceConnect関数を使用してRunkeeperアカウントをWolfram言語に接続する方法。 確かに、この機能では25の動きしか分析できないため、今回は手動でデータをエクスポートします。



そのため、結果として、いくつかのCSVファイルを含むZIPファイルと、以前に記録したすべてのGPXファイルを取得しました。 まず、ラップトップ(Mathematicaファイル)をアーカイブを解凍したディレクトリに保存し、次にこのディレクトリをメインディレクトリとして割り当てます。







ファイル「cardioActivities.csv」の最初の行を見てください。







Runkeeperでは、異なる要素を使用して複数の測定を一度に行うことができます。 これらの値を正しく解釈するには、次の列タイプでSemanticImport関数を使用します。











その結果、解析しやすいDatasetオブジェクトを取得します。 データを操作しましょう:



1.移動した回数と方法を計算してみましょう。







2.平均距離を計算します。







3.すべての距離のヒストグラムを作成します。







4. DateListStepPlot関数を使用して、移動の平均速度を視覚化します。







5. 10マイルを超える旅行を選択します。











6.エベレストに何回登るかを調べます。







7.説明に従ってアクティビティをグループ化します。







8.「Boston」とマークされたイベントを選択し、GPXファイルをインポートします。







9.マップ上で、すべての交通手段の出発点をマークします。







10.最後になりましたが、すべての種類の動きにTimelinePlot関数を使用します







これまでのところ、とても良い。 次に、GPXファイルからデータをプルする必要があります。 ImportおよびGeoGraphics関数を使用して、GPSトラックを作成し、黒い線でマークします。







しかし、私はまた、私がいた高さと移動した速度に関するデータを取得したいです。 インポート機能には「データ」オプションがあります。これにより、Wolfram言語の一般的な形式(リスト、行など)のGPXファイルにアクセスできます。







このドキュメントには、 GeoPosition関数を使用して修正された標高ポイントとタイムスタンプのリストが含まれています。 私はポイントだけに興味があるので、自分の位置を見つける関数を定義し、 TimeSeries関数を使用して、私がいた高さを決定しました。







GPXデータは、キーペアとの関連付けとして表されます。







これで、関数の値(高さ)に応じて色付けされたDateListPlotチャートを作成できます。







または、 「Geometry」パラメーターを使用します。高度のポイントにリスケール機能を使用し、高さに応じてGPSトラックに色を付けます。







これで、このデータを使用して、瞬間速度を計算できます。 Wolfram CommunityのメンバーであるSander Huismanは、最近、瞬間速度を計算し、GPSトラックを色付けする方法を示しました。 以下は、 GeoPositionポイントからの瞬間速度の時系列と上昇の時系列を計算するために定義した関数です。







そして今、前の例を思い出してください: DateListPlotは、ハイキング中に立ち寄ったときを教えてくれます:







これらの短い休憩の間に、私はサルバドール・ダリ自身に影響を与えた岩の写真を撮るために立ち止まりまし 。 速度に応じてGPSトラックを色付けして、これらの停車地の地図を作成しましょう。







位置、標高のポイントを指定し、瞬時の移動速度を決定できるようになったので、これらすべてを新しいデータセットに結合できます。







1年前、田舎からバルセロナに移りました。







バルセロナでの私の動きを示すために、 GeoWithinQまたはGeoDistance関数を使用できますが、これらの関数は不要になりました。街中の動きについてメモを作成しました。







最初に、すべての動きがマークのない白黒の均一なマップにマークされていることを確認し、 GeoGraphics関数を使用して動きをマップします。 これを行うために、 GeoBackgroundに追加のGeoStylingオプションを追加して、背景を灰色に変更しました。 また、 GeoScaleBarを追加し、 GeoRange関数を使用して地図上の線分を制限しました。







私の意見では、それはよさそうだ。 記録されたすべての動きを地図上に配置します。







私は街全体をほぼカバーしました! 始点(黄色)と赤(終点)だけをプロットすると、どこに住んでいるかが明らかになります。 ほとんどの場合、 市内の自転車共有システムを使用して、ある地点から別の地点に移動しました。







最短時間でこれらすべての場所に再度アクセスできるようにするルートを作成しましょう。







それらすべてを訪問するには、約170 kmを運転(通過)する必要があります。







悪くありません、あなたが私が一年でどれくらい持っているかと比較すると:







一年を通してRunkeeperを使用しているときに他に気付いたことは、ポイントA(家)からポイントB(カポエイラの中心)への私の道は常に変化しているということです。 実際のところ、自転車で行くのが最善かどうかはまだわかりません。 TravelDirections関数は、データを新しい方法で見るのに役立ちます。







TravelMethodの移動方法 3つの異なる値- Biking 」(自転車) (緑)、 「Walking」(徒歩) (青)、および「Driving」(運転) (赤)について「TravelPath」を描画しましょう。 ただし、これはポイントAからポイントBに到達する簡単な方法を示すだけではありません。







TravelDistance関数は、「ウォーク」パスが最短であることを示しています。







ただし、この経路はバルセロナ中心部-シウタットヴェラ(旧市街)を通過します。これは中世の通りが歩行者専用の迷路であるため、地点Aから地点Bに行くのに1時間かかります。 自転車の高速化:







今年は自転車でB地点に到達するためのさまざまな方法を試したと言わざるを得ません。 私のお気に入りは、赤で示されている「運転」パスです。







ここで、旅行時間に従ってペイントされた55のすべての旅行をプロットしましょう。











青/緑のパスは[ ウォーク ]オプションに最も近くこれらはポイントBへの最短パスのように見えます。私の記録は約13分です。







平均移動時間は、 TravelDirectionsDataによって予測される時間に近くなります







このデータを使用して、過去1年を通じて時間内に旅行することができます。 GeoGraphicsに関する次の記事では、移動の速度に応じてGPSトラックを色付けし、 Tooltip関数を使用して各タイプの移動の日付を追加します。







そして今、あなたはそれぞれの移動オプションを別々に取り、私の旅行とバルセロナでのその年の旅行をアニメーション化することができます。



アニメーションコードは、この記事の最後でCDF形式で入手できます。 Runkeeperからのデータを分析するために使用することをお勧めします。 もっとアイデアが必要ですか? 記事(Habréで公開されている翻訳へのリンク)に注目してください 。「 自分を追求するか、1日を始めるのに最適な方法です。」







Wolframテクノロジーに関する質問については、 info-russia @ wolfram.comに連絡 して ください



All Articles