ただ、ワークアウトのGPX ファイルに使ってみると、位置情報(Lat、Lon、Elev)は読み込まれますが、ランニングやウォーキングに記録される
速度
の情報が含まれていません。GPX ファイルには含まれているので、gpxread で読み込むときにデータが無視されてしまっているようです。
p = gpxread(fullfile('workout-routes', 'route_2021-08-16_6.09pm.gpx'));
disp(p)
Code language: Matlab (matlab)
xmlObj = readstruct(fullfile('workout-routes', 'route_2021-08-16_6.16pm.gpx'), 'FileType', 'xml');
tbl = struct2table(xmlObj.trk.trkseg.trkpt);
tbl2 = struct2table(tbl.extensions);
for n=1:length(tbl2.Properties.VariableNames)
varname = tbl2.Properties.VariableNames{n};
tbl.(varname) = tbl2.(varname);
tbl.extensions = [];
geoscatter(tbl.latAttribute, tbl.lonAttribute, 36, ...
[tbl.speed/max(tbl.speed) zeros(length(tbl.speed), 1), 1-tbl.speed/max(tbl.speed)], 'filled')
Code language: Matlab (matlab)
tbl = readgeotable(fullfile('workout-routes', 'route_2021-08-16_6.16pm.gpx'));
head(tbl)
Code language: Matlab (matlab)
緯度経度がShape というカラムにgeopointshape という形式で保存されています。ちゃんとランニングの速度データもSpeed カラムに入りましたね。GPX ファイルのデータを完全にテーブルとして取り込めています。
<meta charset="utf-8">tbl = readgeotable(fullfile('workout-routes', 'route_2021-08-16_6.16pm.gpx'));
geoscatter(tbl.Shape.Latitude, tbl.Shape.Longitude, [], tbl.Speed, 'filled')
c = colorbar;
c.Label.String = 'Speed [m/s]';
c.Limits = [0 5];
Code language: Matlab (matlab)
これでどこで走る速度が上がったり下がったりしているのか見やすくなりましたね。
ただ、一番速いのが黄色っていうのは直感と合わないので、カラーマップをデフォルトの
parula
から変えてみましょう。
青→黄緑→黄→オレンジ→赤と滑らかに変わっていく
turbo
にしてみます。
先ほどのコードの最後に以下を追加します。
colormap turbo
Code language: Matlab (matlab)
これなら速いところが赤くて直感に近くなった気がします。
視覚的な印象を変えるカラーバーとカラーマップ、意外に重要ですね。