gpspruneでライドの写真に位置情報を付加しようとすると全然違う場所になっている。これまでなかった現象。
ウェブアプリ側のバグを疑って、本体の.fitをコンバートしてみたが、同様にずれている。ということは本体側に問題あり。
さらに見てみると、序盤は正しく付加されているが、途中からずれている。昼食時にスリープさせた時までは正しいので、そこがあやしい。で、昼食の前後のデータを見てみたら、40分ほど時間が経過したはずなのに時刻がほぼつながっていた。つまり再スタート後に時間を校正しないままになっていた。最近のデータを同じく休憩前後でみてみるとやはり校正されてなかった。
過去2回のものはあまり位置情報が重要ではないが、今回のはちゃんと位置づけしたいので修正を図る。gpxbabelでcsvに吐き出すとか、LibreCalcでxmlとして読み込むとか、カシミール3Dにペーストするとか試してみたが、うまくいかないので結局PHPで書くことに。
foreachの中で毎回置換するという野蛮なことをやって一応書き換え成功。3.5MBの巨大テキストファイルなので10秒以上かかる。
<?php error_reporting(E_ERROR); $gpx=file_get_contents("~/Downloads/activity_17477988151.gpx"); preg_match_all('/<time>(.*?)<\/time>/m',$gpx,$matches); foreach($matches[1] as $badtime){ $badtime_epoc = strtotime($badtime); if($badtime_epoc > strtotime('2024-11-07T03:34:02.000Z')){ $goodtime = date(DATE_ATOM,$badtime_epoc+40*60); $gpx = str_replace("$badtime","$goodtime",$gpx); } } echo $gpx; ?>
同様の人発見。
https://x.com/hiramatsuuuu/status/1841362287816581302x.com
