![]() |
![]() |
このメモは以下の点に当てはまる方を対象にしています。
・gpxが10MBを超えてヤマレコ・YAMAPへ登録できず困っている方
・pythonの環境構築済みの方
//経緯
100kmウォーキング大会に参加し、ヤマレコ・YAMAPに登録するためにgarminでログを取っていました。
しかし約20時間のgpxデータは20MB以上で、ヤマレコ・YAMAPへアップロードできる10MBを超えてしました。
//方法
garminユーザーである私の解決手順を載せるため、不必要な部分は飛ばしてください。
1. garmin connectでアクティビティをエクスポート
・「GPXにエクスポート」を押してデータを取得してください。(->手順3へ飛んでください)
・ファイルが重い場合はエクスポートできません。その場合は、「ファイルのエクスポート」を押して、zipをダウンロードします。なお、解凍するとfitが出てきます。
2. GPX Visualizerでzip/fitをgpxへ変換
以下のリンクでgpxへ変換してください。
https://www.gpsvisualizer.com/convert_input
3. pythonで座標と時間以外のデータを削除
gpxには座標や時間の下に<extensions>が書き込まれている場合があります。これは、心拍数やスピードの情報なので、軌跡の登録だけならば不必要です。
以下のコードを実行して<extensions>を削除できます。入手力ファイル名を書き換えて利用してください。
-------------------------
import re
# 入出力ファイル名
input_file = "100km3-in.gpx"
output_file = "100km3-out.gpx"
# ファイル読み込み
with open(input_file, "r", encoding="utf-8") as f:
data = f.read()
# 1. <extensions>~</extensions> を削除
data = re.sub(r"<extensions>[\s\S]*?</extensions>", "", data)
# 2. 空白行を削除
lines = data.splitlines()
cleaned_lines = [line for line in lines if line.strip() != ""]
# 3. 出力ファイルに書き込み
with open(output_file, "w", encoding="utf-8") as f:
f.write("\n".join(cleaned_lines))
print("処理完了:<extensions> の削除 + 空白行の除去")
-------------------------
//おわりに
心拍数などの情報が含まれている場合は、この手順で60%程度は削減できます。
スマホで位置情報を取得するとバッテリーが低下してしまうので、スマホ以外の機器を用いて電池を気にせず活動を楽しみたいものです。
qiitaみたいなメモですが、お役に立てれば幸いです。
コメントを編集
いいねした人
コメントを書く
ヤマレコにユーザー登録いただき、ログインしていただくことによって、コメントが書けるようになります。ヤマレコにユーザ登録する