GPXファイルの結合について

こんにちは

この記事は、PCを使って2つのGPXファイルを結合する方法について書きます。

必要なのは、テキストエディター(文字コードUTU-8が利用できる)とGarmin Connectが利用できるブラウザとWindows(10) PCです。Macでも同じはずですが、Macはあまり使った事ないので、やり方を聞かれても分からないかも?です。

先日のカスイチで、うっかり途中でログを保存(終了)してしまいました。

おかげでGarmin ConnectやStravaのログが2つに別れてしまいました。

前半

後半

特に、??一周とかで分割されるとちょっとばかりさみいです。

と言う事で、これを1つにする方法を書きたいと思います。

前に書いた気がすごくしますが。。一旦忘れてもらえるか、ブラウザをそっと閉じてもらえると助かります。(笑)

自分の環境だと、サイコン→Garmin Connect→Stravaへ連携されていて、サイコンからデータを抜くのがちょっぴり面倒なので、なるべく前の段階のGarmin ConnectからGPXデータを取得します。

まずはGPXファイルをダウンロードです。

Garmin Connectから対象のアクティビティを開きます。

右上に歯車のマークがあります(赤丸の中)

クリックするとメニューが開くので「GPXにエクスポート」を選択するとPCにダウンロードされます。

割と長いファイル名でダウンロードされるので、分かり安くファイル名をbefore, afterに変更しました。

これは覚えられれば何でも構いませんし、元のままで問題ありません。

Garmin Connect上に本物?があると思いますが、これ以降の作業を間違えて書き換えてしまう可能性がありますので、必ずバックアップを取ってから作業または、間違えたらGarmin Connectから再ダウンロードしてやり直せる状況が必要です。

これをテキストエディターで編集するのですが、Garmin Edge 520Jなのか、Garmin Connectなのか調べてませんが、Garmin ConnectからダウンロードしたGPXファイルの文字コードがUTF-8(Unicode)なので、この文字コードが扱える必要があります。

以降は、最新のWindows10に入っているnotepad2を使ってみます。

起動はWindowsキーを押してから、入力欄に「notepad2」を入力するか、Windowsキーと「R」を同時に押して表示されるウインドウ「ファイル名を指定して実行」で、「notepad2.exe」を入力して実行ボタンを押します。

notepadでも表示できましたが、改行コードがUnix(LF)になっているので開業されないので、作業がかなり辛そうです。

(自分は秀丸ユーザなので、いつもは秀丸エディターを使ってます)

他には、サクラエディターなんかでも良さそうです。Unicode版とANSI版がありますが、どっちでも構いません。これだけのためにインストールするなら、Unicode版をオススメします。

細かい説明は後にして、先に連結方法を書きます。

notpad2を起動します。

左上の「File」メニューの中の「Open」を選択します。

そうすると開くファイルを聞かれるので、前半部分のGPXファイルを開きます。

フィアルが大きいけど!?って英語で聞かれますが、「OK」ボタンを押してそのまま開きます。

こんな感じで開きます。

一番最後に移動して、反転させている「</trk></gpx>」の2行を削除します。

最後の行が「</trkseg>」になっている事を確認します。

その状態で、notepad2をもう一つ起動します。

前半と同じ様に「File」→「Open」から後半のGPXファイルを開きます。

後半は先頭の行から、反転させている15行目の「<type>….</type>」の行までを削除します。

先頭行が、「<trkseg>」になっている必要があります。

notepad2をもう一つ開きます。

文字コードと改行コードを変更します。(最初、この作業を忘れましたが、普通にインポート出来ましたが、一応。。柔軟性は割とある様です)

ウインドウの下側に文字コードと改行コードが表示されています。

右側のCR+LFですが、Garmin ConnectからダウンロードしたファイルはLFになってたので揃えます。

メニューの「File」→「Line Endings」の中から、「Unix(LF)」を選択します。

次にANSIの所をUTF-8に変更します。

メニューの「File」→「Encoding」の中から、「UTF-8」を選択します。moji

文字コード及び、改行コードが「UTF-8」、「LF」になっている事を確認します。

前半のnotepad2を見てください。

メニューの「Edit」→「Copy All」で全体をクリップボードに入れます。

その状態で、新しく開いたnotepad2を表示します。

「Edit」→「Paste」で、前半部分を貼り付けます。

そして、カーソルを最後の行に移動します。(自分の作業ではペースト直後は既に最後の行になってました)

そして、後半のnotepad2を見てください。

メニューの「Edit」→「Copy All」で全体をクリップボードに入れます。

その後、新規(先程前半を貼り付けた)notepad2を見ます。

「Edit」→「Paste」で、後半部分を最後に貼り付けます。

貼り付けたnotepad2で、メニューの「File」→「Save」を選択して、gpxファイルを保存します。

今回は「all.gpx」で作成しました。

※ファイル名の最後(拡張子)は「.gpx」である必要があります。

これで完成です。

Garmin Connectに入れてみます。

Garmin Connectをブラウザで開いて、右上の雲のマークをクリックします。

そうするとメニューが出るので、「データのインポート」を選択します。

こんなページになりますので、中央に「all.gpx」をドロップするか、参照リンクから「all.gpx」を選択します。

選択したファイルが表示されるのを確認して、「データのインポート」をクリックします。

完了が確認できたら、OKです。

切り取る場所を間違えたりすると、ここでエラーになります。

その場合は、最初から作業を確認してください。

無事確認できました。

ここから、GPXファイルについて簡単に説明。興味が無かったら読まなくて良いと思います。

逆に詳しく知りたいなら、詳細をGoogleで検索して仕様から見たほうが良いと思います。

以下は、読み物程度です。。(^_^;

GPXファイルですが、「GPS eXchange Format」と言う書式(フォーマット)です。

一定の取り決めで、中にGPXの位置情報+αが入ってます。

詳細を書いてもややこしくなるので書きません。詳細は以下のページを参照してください。

→ GPX 1.1 Schema Documentation

GPXファイルは、XML(Extensible Markup Languageの略)あり、テキストで色んな情報を定義(記載)する方法です。※頭文字は、Ext..なのでEかと思いきや2文字目のXです。EMLは既にあるから。。かな?

人間が目で見て割とわかりやすい感じになってます。

基本的には中身は<????>から</????>でくくって間に記載します。(????は前後で同じ文字)

例えばデータの名前は以下の様になっています。

nameという名前を使ってますが、開始は<name>終了は</name>です。/始まりが終わり(閉じ)ですね。

<name>カスイチ(前半)</name>

最初から見ると、1行目は以下の内容です。

XMLですよ!XMLのバージョン(書式)は1.0ですよ!。文字コードはUTF-8ですよ!とあります。

GPXファイルはXMLで記載されているのがわかります。

<?xml version=”1.0″ encoding=”UTF-8″?>

2行目は以下の内容です。

詳細を書くとかなり面倒なので、簡単に書くと<gpx>で開始します。ファイルの最後は</gpx>で閉じてます。

この行以降が全てGPXの記載になります。作成者(ツール)は”Garmin Connect”と書かれていますが、記録として扱う事は無いでしょう。それ以降はGPX自体の定義(ルール)を記載している定義ファイルの場所が記載されています(だったと思う)

<gpx creator=”Garmin Connect” version=”1.1″
xsi:schemaLocation=”http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/11.xsd”
xmlns:ns3=”http://www.garmin.com/xmlschemas/TrackPointExtension/v1″
xmlns=”http://www.topografix.com/GPX/1/1″
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:ns2=”http://www.garmin.com/xmlschemas/GpxExtensions/v3″>

次の行は以下になります。

メタデータと言って、このファイル(GPX)はどんな情報かが記載されていますが、規約上はもう少し抱えますが、Garmin Connectはあまり使っていない様です。

<metadata>
<link href=”connect.garmin.com”>
<text>Garmin Connect</text>
</link>
<time>2019-11-16T23:22:28.000Z</time>
</metadata>

これ以降がログデータになります。

<trk>から</trk>の間に全ての記録データが入ります。

その次に、以下の2行がありますが、<trk>内の記載で、データ名と、タイプが記載されています。

どちらも何を入れるという決まりがないみたいなので、Garmin Connectで表示する(区分けする)ための情報かと思います。

<name>カスイチ(前半)</name>
<type>road_biking</type>

これ以外には、<trkseg>~</trkseg>があります。

この中に全てのトラッキングデータ(トラックポイント)が入ります。GPXの説明には以下の記載がありました。

「A Track Segment holds a list of Track Points which are logically connected in order. To represent a single GPS track where GPS reception was lost, or the GPS receiver was turned off, start a new Track Segment for each continuous span of track data.」

この中には、<trkpt>~</trkpt>がります。

この中には1つのトラックポイントが入ります。

最初の行は、位置情報(緯度経度)ですね。<ele>~</ele>は高度。

<time>~</time>は時刻(多分GMT)

<extensions>~</extensions>には拡張データです。Garmin Connect +Garmin Edge 520Jだとこんな感じ。

気温、心拍、ケイデンスなどが入ってます。

パワーの情報が無いじゃん!GPXには出さないのね。!と思ってましたが、ちょっと調べてみた限りどうも定義がないっぽい。。(^_^;

だからfitデータにしか無いのかな?と言うかGPXファイルに書いてある、定義のURL。。ページなしになってるし。。ダメじゃん(笑)

<trkpt lat=”35.9957118518650531768798828125″ lon=”140.47310340218245983123779296875″>
<ele>65.8000030517578125</ele>
<time>2019-11-17T02:04:56.000Z</time>
<extensions>
<ns3:TrackPointExtension>
<ns3:atemp>14.0</ns3:atemp>
<ns3:hr>139</ns3:hr>
<ns3:cad>0</ns3:cad>
</ns3:TrackPointExtension>
</extensions>
</trkpt>

って感じです。

GPXファイルの結合の方法を書きましたが。

ログの記録は<trkseg>~</trkseg>の中にある、<trkpt>がそれなんですよね。

なので、<trkseg>の外側は共通になる(複数かけない)ので、<trkseg>の中にある<trkpt>だけを追加すれば、2つでも3つで、結合できます。

理屈を覚えると簡単かと思います。

長々と書きましたが、参考になれば嬉しいです。

結合ツールをサーバ上に用意しようかと思って、だいぶん前にチャンレンジしましたが。。

うまいライブラリがなくて。。挫折気味です。忘れた頃にまた作ろうかな?と思います。

実は途中まで作ったのですが、<trkpr>の並びが勝手にソートされたり。。して抑制でいなくて挫折しました。。(^_^;

『GPXファイルの結合について』へのコメント

  1. 名前:SEIJI 投稿日:2019/11/21(木) 14:55:22 ID:0dae557ab 返信

    理屈はさっぱり理解できませんが、しげさんの書いてくれた順番でやればできそうな気が。 やっぱり一周が分割してるのってねぇ。
    時間あるときにやってみようと思います。
    丁寧な解説ありがとうございました。

    • 名前:しげ 投稿日:2019/11/21(木) 18:25:45 ID:465f853b4 返信

      SEIJIさん
      コメントありがとうございます。
      分かりづらいですが、中身を見るとなるほど!と思えるレベルです。
      できれば短いほうが分かりやすいです。

      ブラウザで連結できるツール作ってるので、公開すると。。思います。多分(^_^;

  2. 名前:ShimaQ 投稿日:2019/11/21(木) 14:48:07 ID:5a44127ee 返信

    こんにちは。
    こういう記事はありがたいですね。
    以前、書いていただいたのを参考に結合したことがあった気がします。
    前回のは、文字コードまで触れてなかったような気がする(うろ覚え)ので、助かります。(文字コードのトコで引っかかるのがよくあるので)

    文字コード、改行コードの変更とかできるエディターいくつか使いましたが、秀丸が一番使いやすいですね。作った人に感謝(^_^;)

    • 名前:しげ 投稿日:2019/11/21(木) 18:23:50 ID:8a080493c 返信

      ShimaQさん
      コメントありがとうございます。
      やっぱり書いてましたか(^_^;

      文字コードですが、日本語が入るのがアクティビティの名前ぐらいなので、間違えても名前が変になるぐらいの様です。無視しても良かったのですが、一応書いてみました。
      秀丸エディタ、使いやすいですよね。長年のファンです。